Warning: Permanently added '2620:52:3:1:dead:beef:cafe:c24b' (ED25519) to the list of known hosts. You can reproduce this build on your computer by running: sudo dnf install copr-rpmbuild /usr/bin/copr-rpmbuild --verbose --drop-resultdir --task-url https://copr.fedorainfracloud.org/backend/get-build-task/9877690-fedora-42-ppc64le --chroot fedora-42-ppc64le Version: 1.6 PID: 3203 Logging PID: 3205 Task: {'allow_user_ssh': False, 'appstream': False, 'background': True, 'build_id': 9877690, 'buildroot_pkgs': [], 'chroot': 'fedora-42-ppc64le', 'enable_net': False, 'fedora_review': False, 'git_hash': '4f5dbf90b43e5f64e5d5c095d497da345a7d878e', 'git_repo': 'https://copr-dist-git.fedorainfracloud.org/git/psimovec/openblas-0.3.23/scipy', 'isolation': 'default', 'memory_reqs': 2048, 'package_name': 'scipy', 'package_version': '1.16.2-2', 'project_dirname': 'openblas-0.3.23', 'project_name': 'openblas-0.3.23', 'project_owner': 'psimovec', 'repo_priority': None, 'repos': [{'baseurl': 'https://download.copr.fedorainfracloud.org/results/psimovec/openblas-0.3.23/fedora-42-ppc64le/', 'id': 'copr_base', 'name': 'Copr repository', 'priority': None}, {'baseurl': 'http://kojipkgs.fedoraproject.org/repos/rawhide/latest/$basearch/', 'id': 'http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch', 'name': 'Additional repo http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch'}], 'sandbox': 'psimovec/openblas-0.3.23--https://src.fedoraproject.org/user/cstratak', 'source_json': {}, 'source_type': None, 'ssh_public_keys': None, 'storage': None, 'submitter': 'https://src.fedoraproject.org/user/cstratak', 'tags': [], 'task_id': '9877690-fedora-42-ppc64le', 'timeout': 18000, 'uses_devel_repo': False, 'with_opts': [], 'without_opts': []} Running: git clone https://copr-dist-git.fedorainfracloud.org/git/psimovec/openblas-0.3.23/scipy /var/lib/copr-rpmbuild/workspace/workdir-1hvy382r/scipy --depth 500 --no-single-branch --recursive cmd: ['git', 'clone', 'https://copr-dist-git.fedorainfracloud.org/git/psimovec/openblas-0.3.23/scipy', '/var/lib/copr-rpmbuild/workspace/workdir-1hvy382r/scipy', '--depth', '500', '--no-single-branch', '--recursive'] cwd: . rc: 0 stdout: stderr: Cloning into '/var/lib/copr-rpmbuild/workspace/workdir-1hvy382r/scipy'... Running: git checkout 4f5dbf90b43e5f64e5d5c095d497da345a7d878e -- cmd: ['git', 'checkout', '4f5dbf90b43e5f64e5d5c095d497da345a7d878e', '--'] cwd: /var/lib/copr-rpmbuild/workspace/workdir-1hvy382r/scipy rc: 0 stdout: stderr: Note: switching to '4f5dbf90b43e5f64e5d5c095d497da345a7d878e'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by switching back to a branch. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -c with the switch command. Example: git switch -c Or undo this operation with: git switch - Turn off this advice by setting config variable advice.detachedHead to false HEAD is now at 4f5dbf9 automatic import of scipy Running: dist-git-client sources cmd: ['dist-git-client', 'sources'] cwd: /var/lib/copr-rpmbuild/workspace/workdir-1hvy382r/scipy rc: 0 stdout: stderr: INFO: Reading stdout from command: git rev-parse --abbrev-ref HEAD INFO: Reading stdout from command: git rev-parse HEAD INFO: Reading sources specification file: sources INFO: Downloading scipy-1.16.2.tar.gz INFO: Reading stdout from command: curl --help all INFO: Calling: curl -H Pragma: -o scipy-1.16.2.tar.gz --location --connect-timeout 60 --retry 3 --retry-delay 10 --remote-time --show-error --fail --retry-all-errors https://copr-dist-git.fedorainfracloud.org/repo/pkgs/psimovec/openblas-0.3.23/scipy/scipy-1.16.2.tar.gz/md5/ccfa8c999114388be9caae83a01296e5/scipy-1.16.2.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 29.1M 100 29.1M 0 0 9205k 0 0:00:03 0:00:03 --:--:-- 9203k INFO: Reading stdout from command: md5sum scipy-1.16.2.tar.gz tail: /var/lib/copr-rpmbuild/main.log: file truncated Running (timeout=18000): unbuffer mock --spec /var/lib/copr-rpmbuild/workspace/workdir-1hvy382r/scipy/scipy.spec --sources /var/lib/copr-rpmbuild/workspace/workdir-1hvy382r/scipy --resultdir /var/lib/copr-rpmbuild/results --uniqueext 1764958924.560307 -r /var/lib/copr-rpmbuild/results/configs/child.cfg INFO: mock.py version 6.5 starting (python version = 3.13.7, NVR = mock-6.5-1.fc42), args: /usr/libexec/mock/mock --spec /var/lib/copr-rpmbuild/workspace/workdir-1hvy382r/scipy/scipy.spec --sources /var/lib/copr-rpmbuild/workspace/workdir-1hvy382r/scipy --resultdir /var/lib/copr-rpmbuild/results --uniqueext 1764958924.560307 -r /var/lib/copr-rpmbuild/results/configs/child.cfg Start(bootstrap): init plugins INFO: tmpfs initialized INFO: selinux enabled INFO: chroot_scan: initialized INFO: compress_logs: initialized Finish(bootstrap): init plugins Start: init plugins INFO: tmpfs initialized INFO: selinux enabled INFO: chroot_scan: initialized INFO: compress_logs: initialized Finish: init plugins INFO: Signal handler active Start: run INFO: Start(/var/lib/copr-rpmbuild/workspace/workdir-1hvy382r/scipy/scipy.spec) Config(fedora-42-ppc64le) Start: clean chroot Finish: clean chroot Mock Version: 6.5 INFO: Mock Version: 6.5 Start(bootstrap): chroot init INFO: mounting tmpfs at /var/lib/mock/fedora-42-ppc64le-bootstrap-1764958924.560307/root. INFO: calling preinit hooks INFO: enabled root cache INFO: enabled package manager cache Start(bootstrap): cleaning package manager metadata Finish(bootstrap): cleaning package manager metadata INFO: Guessed host environment type: unknown INFO: Using container image: registry.fedoraproject.org/fedora:42 INFO: Pulling image: registry.fedoraproject.org/fedora:42 INFO: Tagging container image as mock-bootstrap-5e1bd95c-9a85-4fd2-af70-d2bf9305cf55 INFO: Checking that 22042197362392ed94c5ed42b23e48aec9f6d36964cab8d94b2c1489d9d49831 image matches host's architecture INFO: Copy content of container 22042197362392ed94c5ed42b23e48aec9f6d36964cab8d94b2c1489d9d49831 to /var/lib/mock/fedora-42-ppc64le-bootstrap-1764958924.560307/root INFO: mounting 22042197362392ed94c5ed42b23e48aec9f6d36964cab8d94b2c1489d9d49831 with podman image mount INFO: image 22042197362392ed94c5ed42b23e48aec9f6d36964cab8d94b2c1489d9d49831 as /var/lib/containers/storage/overlay/dd9f6af6078c825d9001b28681ec50ce24517f5752011a9f558267c729937770/merged INFO: umounting image 22042197362392ed94c5ed42b23e48aec9f6d36964cab8d94b2c1489d9d49831 (/var/lib/containers/storage/overlay/dd9f6af6078c825d9001b28681ec50ce24517f5752011a9f558267c729937770/merged) with podman image umount INFO: Removing image mock-bootstrap-5e1bd95c-9a85-4fd2-af70-d2bf9305cf55 INFO: Package manager dnf5 detected and used (fallback) INFO: Not updating bootstrap chroot, bootstrap_image_ready=True Start(bootstrap): creating root cache Finish(bootstrap): creating root cache Finish(bootstrap): chroot init Start: chroot init INFO: mounting tmpfs at /var/lib/mock/fedora-42-ppc64le-1764958924.560307/root. INFO: calling preinit hooks INFO: enabled root cache INFO: enabled package manager cache Start: cleaning package manager metadata Finish: cleaning package manager metadata INFO: enabled HW Info plugin INFO: Package manager dnf5 detected and used (direct choice) INFO: Buildroot is handled by package management downloaded with a bootstrap image: rpm-4.20.1-1.fc42.ppc64le rpm-sequoia-1.7.0-5.fc42.ppc64le dnf5-5.2.17.0-1.fc42.ppc64le dnf5-plugins-5.2.17.0-1.fc42.ppc64le Start: installing minimal buildroot with dnf5 Updating and loading repositories: Copr repository 100% | 12.8 MiB/s | 3.5 MiB | 00m00s Additional repo http_kojipkgs_fedorapr 100% | 8.4 MiB/s | 14.0 MiB | 00m02s updates 100% | 10.4 MiB/s | 22.3 MiB | 00m02s fedora 100% | 9.9 MiB/s | 34.1 MiB | 00m03s Repositories loaded. Package Arch Version Repository Size Installing group/module packages: bash ppc64le 5.3.0-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 8.9 MiB bzip2 ppc64le 1.0.8-21.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 171.2 KiB coreutils ppc64le 9.9-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 9.3 MiB cpio ppc64le 2.15-6.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.2 MiB diffutils ppc64le 3.12-3.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.7 MiB fedora-release-common noarch 44-0.8 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 20.8 KiB findutils ppc64le 1:4.10.0-6.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.0 MiB gawk ppc64le 5.3.2-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.8 MiB glibc-minimal-langpack ppc64le 2.42.9000-14.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 0.0 B grep ppc64le 3.12-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.0 MiB gzip ppc64le 1.14-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 437.6 KiB info ppc64le 7.2-6.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 485.5 KiB patch ppc64le 2.8-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 262.5 KiB redhat-rpm-config noarch 343-16.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 183.6 KiB rpm-build ppc64le 6.0.0-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 663.2 KiB sed ppc64le 4.9-6.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 937.1 KiB shadow-utils ppc64le 2:4.18.0-7.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 4.8 MiB tar ppc64le 2:1.35-6.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 3.1 MiB unzip ppc64le 6.0-68.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 533.9 KiB util-linux ppc64le 2.41.2-9.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 6.9 MiB which ppc64le 2.23-3.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 123.3 KiB xz ppc64le 1:5.8.1-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.4 MiB Installing dependencies: add-determinism ppc64le 0.7.2-2.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.4 MiB alternatives ppc64le 1.33-3.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 90.1 KiB ansible-srpm-macros noarch 1-18.1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 35.7 KiB audit-libs ppc64le 4.1.2-2.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 550.5 KiB binutils ppc64le 2.45.50-9.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 32.6 MiB build-reproducibility-srpm-macros noarch 0.7.2-2.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.2 KiB bzip2-libs ppc64le 1.0.8-21.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 136.5 KiB ca-certificates noarch 2025.2.80_v9.0.304-2.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.7 MiB coreutils-common ppc64le 9.9-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 11.2 MiB crypto-policies noarch 20251128-1.git19878fe.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 132.6 KiB curl ppc64le 8.17.0-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 522.3 KiB cyrus-sasl-lib ppc64le 2.1.28-33.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.9 MiB debugedit ppc64le 5.2-3.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 381.6 KiB dwz ppc64le 0.16-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 386.6 KiB ed ppc64le 1.22.3-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 156.8 KiB efi-srpm-macros noarch 6-5.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 40.2 KiB elfutils ppc64le 0.194-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 3.4 MiB elfutils-debuginfod-client ppc64le 0.194-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 143.5 KiB elfutils-default-yama-scope noarch 0.194-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.8 KiB elfutils-libelf ppc64le 0.194-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.2 MiB elfutils-libs ppc64le 0.194-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 874.6 KiB fedora-gpg-keys noarch 44-0.1 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 131.2 KiB fedora-release noarch 44-0.8 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 0.0 B fedora-release-identity-basic noarch 44-0.8 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 664.0 B fedora-repos noarch 44-0.1 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 4.9 KiB fedora-repos-rawhide noarch 44-0.1 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.2 KiB file ppc64le 5.46-8.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 140.1 KiB file-libs ppc64le 5.46-8.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 11.9 MiB filesystem ppc64le 3.18-50.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 112.0 B filesystem-srpm-macros noarch 3.18-50.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 38.2 KiB fonts-srpm-macros noarch 1:5.0.0-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 55.8 KiB forge-srpm-macros noarch 0.4.0-3.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 38.9 KiB fpc-srpm-macros noarch 1.3-15.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 144.0 B gap-srpm-macros noarch 2-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.1 KiB gdb-minimal ppc64le 16.3-6.fc44 copr_base 15.7 MiB gdbm-libs ppc64le 1:1.23-10.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 233.5 KiB ghc-srpm-macros noarch 1.9.2-3.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 779.0 B glibc ppc64le 2.42.9000-14.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 11.7 MiB glibc-common ppc64le 2.42.9000-14.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.5 MiB glibc-gconv-extra ppc64le 2.42.9000-14.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 18.5 MiB gmp ppc64le 1:6.3.0-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 786.1 KiB gnat-srpm-macros noarch 6-8.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.0 KiB gnulib-l10n noarch 20241231-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 655.0 KiB gnupg2 ppc64le 2.4.8-4.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 6.9 MiB gnupg2-dirmngr ppc64le 2.4.8-4.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 838.1 KiB gnupg2-gpg-agent ppc64le 2.4.8-4.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 975.0 KiB gnupg2-gpgconf ppc64le 2.4.8-4.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 321.7 KiB gnupg2-keyboxd ppc64le 2.4.8-4.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 297.2 KiB gnupg2-verify ppc64le 2.4.8-4.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 428.3 KiB gnutls ppc64le 3.8.11-6.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 4.1 MiB go-srpm-macros noarch 3.8.0-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 61.9 KiB gpgverify noarch 2.2-3.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 8.7 KiB ima-evm-utils-libs ppc64le 1.6.2-7.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 92.6 KiB jansson ppc64le 2.14-3.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 157.0 KiB java-srpm-macros noarch 1-7.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 870.0 B json-c ppc64le 0.18-7.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 138.6 KiB kernel-srpm-macros noarch 1.0-27.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.9 KiB keyutils-libs ppc64le 1.6.3-6.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 98.0 KiB krb5-libs ppc64le 1.21.3-10.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 3.0 MiB libacl ppc64le 2.3.2-4.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 67.6 KiB libarchive ppc64le 3.8.3-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.3 MiB libassuan ppc64le 2.5.7-4.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 215.8 KiB libattr ppc64le 2.5.2-6.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 68.1 KiB libblkid ppc64le 2.41.2-9.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 354.5 KiB libbrotli ppc64le 1.1.0-10.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 972.7 KiB libcap ppc64le 2.77-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 507.7 KiB libcap-ng ppc64le 0.8.5-8.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 160.3 KiB libcom_err ppc64le 1.47.3-3.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 111.0 KiB libcurl ppc64le 8.17.0-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.1 MiB libeconf ppc64le 0.7.9-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 80.8 KiB libevent ppc64le 2.1.12-16.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.2 MiB libfdisk ppc64le 2.41.2-9.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 483.0 KiB libffi ppc64le 3.5.2-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 347.7 KiB libfsverity ppc64le 1.6-3.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 68.1 KiB libgcc ppc64le 15.2.1-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 286.4 KiB libgcrypt ppc64le 1.11.2-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.5 MiB libgomp ppc64le 15.2.1-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 645.3 KiB libgpg-error ppc64le 1.56-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.0 MiB libidn2 ppc64le 2.3.8-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 560.2 KiB libksba ppc64le 1.6.7-4.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 526.5 KiB liblastlog2 ppc64le 2.41.2-9.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 137.4 KiB libmount ppc64le 2.41.2-9.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 548.3 KiB libnghttp2 ppc64le 1.68.0-2.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 197.9 KiB libpkgconf ppc64le 2.3.0-3.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 133.9 KiB libpsl ppc64le 0.21.5-6.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 132.1 KiB librtas ppc64le 2.0.6-5.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 305.5 KiB libselinux ppc64le 3.9-5.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 265.1 KiB libselinux-utils ppc64le 3.9-5.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.3 MiB libsemanage ppc64le 3.9-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 423.9 KiB libsepol ppc64le 3.9-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.0 MiB libsmartcols ppc64le 2.41.2-9.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 289.5 KiB libssh ppc64le 0.11.3-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 715.2 KiB libssh-config noarch 0.11.3-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 277.0 B libstdc++ ppc64le 15.2.1-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 3.9 MiB libtasn1 ppc64le 4.20.0-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 220.0 KiB libtool-ltdl ppc64le 2.5.4-8.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 93.9 KiB libunistring ppc64le 1.1-10.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.9 MiB libusb1 ppc64le 1.0.29-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 242.8 KiB libuuid ppc64le 2.41.2-9.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 69.3 KiB libverto ppc64le 0.3.2-11.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 69.1 KiB libxcrypt ppc64le 4.5.2-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 337.0 KiB libxml2 ppc64le 2.12.10-5.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.3 MiB libzstd ppc64le 1.5.7-3.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.1 MiB linkdupes ppc64le 0.7.2-2.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 907.1 KiB lua-libs ppc64le 5.4.8-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 393.8 KiB lua-srpm-macros noarch 1-16.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.3 KiB lz4-libs ppc64le 1.10.0-3.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 261.1 KiB mpfr ppc64le 4.2.2-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 913.7 KiB ncurses-base noarch 6.5-7.20250614.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 328.1 KiB ncurses-libs ppc64le 6.5-7.20250614.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.5 MiB nettle ppc64le 3.10.1-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 957.8 KiB npth ppc64le 1.8-3.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 93.1 KiB ocaml-srpm-macros noarch 11-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.9 KiB openblas-srpm-macros noarch 2-20.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 112.0 B openldap ppc64le 2.6.10-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 889.9 KiB openssl-libs ppc64le 1:3.5.4-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 9.0 MiB p11-kit ppc64le 0.25.8-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.9 MiB p11-kit-trust ppc64le 0.25.8-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 594.1 KiB package-notes-srpm-macros noarch 0.5-14.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.6 KiB pam-libs ppc64le 1.7.1-3.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 286.3 KiB pcre2 ppc64le 10.47-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 842.0 KiB pcre2-syntax noarch 10.47-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 281.9 KiB perl-srpm-macros noarch 1-60.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 861.0 B pkgconf ppc64le 2.3.0-3.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 112.3 KiB pkgconf-m4 noarch 2.3.0-3.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 14.4 KiB pkgconf-pkg-config ppc64le 2.3.0-3.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 990.0 B policycoreutils ppc64le 3.9-5.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.3 MiB popt ppc64le 1.19-9.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 208.7 KiB publicsuffix-list-dafsa noarch 20250616-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 69.1 KiB pyproject-srpm-macros noarch 1.18.6-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.9 KiB python-srpm-macros noarch 3.14-9.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 51.6 KiB qt5-srpm-macros noarch 5.15.18-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 500.0 B qt6-srpm-macros noarch 6.10.1-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 464.0 B readline ppc64le 8.3-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 627.5 KiB rpm ppc64le 6.0.0-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 4.2 MiB rpm-build-libs ppc64le 6.0.0-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 328.0 KiB rpm-libs ppc64le 6.0.0-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.2 MiB rpm-plugin-selinux ppc64le 6.0.0-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 67.9 KiB rpm-sequoia ppc64le 1.9.0-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 4.9 MiB rpm-sign-libs ppc64le 6.0.0-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 67.6 KiB rust-srpm-macros noarch 28.0-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 4.8 KiB selinux-policy noarch 42.18-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 32.0 KiB selinux-policy-targeted noarch 42.18-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 18.7 MiB setup noarch 2.15.0-27.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 724.9 KiB sqlite-libs ppc64le 3.51.0-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.9 MiB systemd-libs ppc64le 259~rc2-2.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 3.0 MiB systemd-standalone-sysusers ppc64le 259~rc2-2.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 393.7 KiB tpm2-tss ppc64le 4.1.3-8.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.5 MiB tree-sitter-srpm-macros noarch 0.4.2-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 8.3 KiB util-linux-core ppc64le 2.41.2-9.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.5 MiB xxhash-libs ppc64le 0.8.3-3.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 85.6 KiB xz-libs ppc64le 1:5.8.1-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 265.3 KiB zig-srpm-macros noarch 1-5.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.1 KiB zip ppc64le 3.0-44.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 889.8 KiB zlib-ng-compat ppc64le 2.3.2-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 197.4 KiB zstd ppc64le 1.5.7-3.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 573.9 KiB Installing groups: Buildsystem building group Transaction Summary: Installing: 178 packages Total size of inbound packages is 71 MiB. Need to download 71 MiB. After this operation, 277 MiB extra will be used (install 277 MiB, remove 0 B). [ 1/178] bzip2-0:1.0.8-21.fc43.ppc64le 100% | 332.6 KiB/s | 52.9 KiB | 00m00s [ 2/178] cpio-0:2.15-6.fc43.ppc64le 100% | 2.7 MiB/s | 293.8 KiB | 00m00s [ 3/178] bash-0:5.3.0-2.fc43.ppc64le 100% | 5.9 MiB/s | 1.9 MiB | 00m00s [ 4/178] coreutils-0:9.9-1.fc44.ppc64l 100% | 3.4 MiB/s | 1.2 MiB | 00m00s [ 5/178] fedora-release-common-0:44-0. 100% | 500.6 KiB/s | 24.5 KiB | 00m00s [ 6/178] diffutils-0:3.12-3.fc43.ppc64 100% | 3.1 MiB/s | 396.4 KiB | 00m00s [ 7/178] findutils-1:4.10.0-6.fc43.ppc 100% | 8.1 MiB/s | 578.5 KiB | 00m00s [ 8/178] grep-0:3.12-2.fc43.ppc64le 100% | 5.2 MiB/s | 299.2 KiB | 00m00s [ 9/178] gzip-0:1.14-1.fc44.ppc64le 100% | 3.7 MiB/s | 172.6 KiB | 00m00s [ 10/178] info-0:7.2-6.fc43.ppc64le 100% | 3.9 MiB/s | 202.9 KiB | 00m00s [ 11/178] gawk-0:5.3.2-2.fc43.ppc64le 100% | 5.4 MiB/s | 1.2 MiB | 00m00s [ 12/178] patch-0:2.8-2.fc43.ppc64le 100% | 2.7 MiB/s | 123.9 KiB | 00m00s [ 13/178] glibc-minimal-langpack-0:2.42 100% | 284.9 KiB/s | 66.9 KiB | 00m00s [ 14/178] redhat-rpm-config-0:343-16.fc 100% | 1.7 MiB/s | 73.0 KiB | 00m00s [ 15/178] rpm-build-0:6.0.0-1.fc44.ppc6 100% | 3.4 MiB/s | 152.5 KiB | 00m00s [ 16/178] sed-0:4.9-6.fc44.ppc64le 100% | 3.9 MiB/s | 314.3 KiB | 00m00s [ 17/178] tar-2:1.35-6.fc43.ppc64le 100% | 12.4 MiB/s | 875.3 KiB | 00m00s [ 18/178] unzip-0:6.0-68.fc44.ppc64le 100% | 3.2 MiB/s | 192.3 KiB | 00m00s [ 19/178] shadow-utils-2:4.18.0-7.fc44. 100% | 7.1 MiB/s | 1.2 MiB | 00m00s [ 20/178] which-0:2.23-3.fc43.ppc64le 100% | 934.9 KiB/s | 43.0 KiB | 00m00s [ 21/178] util-linux-0:2.41.2-9.fc44.pp 100% | 14.5 MiB/s | 1.2 MiB | 00m00s [ 22/178] xz-1:5.8.1-4.fc44.ppc64le 100% | 11.4 MiB/s | 561.1 KiB | 00m00s [ 23/178] fedora-repos-0:44-0.1.noarch 100% | 226.8 KiB/s | 9.1 KiB | 00m00s [ 24/178] glibc-common-0:2.42.9000-14.f 100% | 7.7 MiB/s | 362.5 KiB | 00m00s [ 25/178] gap-srpm-macros-0:2-1.fc44.no 100% | 226.3 KiB/s | 9.1 KiB | 00m00s [ 26/178] java-srpm-macros-0:1-7.fc43.n 100% | 198.6 KiB/s | 7.9 KiB | 00m00s [ 27/178] rpm-0:6.0.0-1.fc44.ppc64le 100% | 10.3 MiB/s | 547.5 KiB | 00m00s [ 28/178] coreutils-common-0:9.9-1.fc44 100% | 6.5 MiB/s | 2.1 MiB | 00m00s [ 29/178] libblkid-0:2.41.2-9.fc44.ppc6 100% | 2.6 MiB/s | 142.4 KiB | 00m00s [ 30/178] liblastlog2-0:2.41.2-9.fc44.p 100% | 485.3 KiB/s | 23.8 KiB | 00m00s [ 31/178] glibc-0:2.42.9000-14.fc44.ppc 100% | 8.0 MiB/s | 3.2 MiB | 00m00s [ 32/178] libfdisk-0:2.41.2-9.fc44.ppc6 100% | 1.8 MiB/s | 177.3 KiB | 00m00s [ 33/178] libsmartcols-0:2.41.2-9.fc44. 100% | 2.5 MiB/s | 110.4 KiB | 00m00s [ 34/178] libuuid-0:2.41.2-9.fc44.ppc64 100% | 547.5 KiB/s | 27.4 KiB | 00m00s [ 35/178] libmount-0:2.41.2-9.fc44.ppc6 100% | 1.6 MiB/s | 186.8 KiB | 00m00s [ 36/178] util-linux-core-0:2.41.2-9.fc 100% | 11.5 MiB/s | 575.4 KiB | 00m00s [ 37/178] xz-libs-1:5.8.1-4.fc44.ppc64l 100% | 2.8 MiB/s | 126.5 KiB | 00m00s [ 38/178] fedora-gpg-keys-0:44-0.1.noar 100% | 2.9 MiB/s | 127.7 KiB | 00m00s [ 39/178] fedora-repos-rawhide-0:44-0.1 100% | 216.2 KiB/s | 8.6 KiB | 00m00s [ 40/178] glibc-gconv-extra-0:2.42.9000 100% | 17.1 MiB/s | 1.6 MiB | 00m00s [ 41/178] rpm-build-libs-0:6.0.0-1.fc44 100% | 3.0 MiB/s | 134.3 KiB | 00m00s [ 42/178] rpm-libs-0:6.0.0-1.fc44.ppc64 100% | 5.2 MiB/s | 444.4 KiB | 00m00s [ 43/178] rpm-sign-libs-0:6.0.0-1.fc44. 100% | 668.8 KiB/s | 28.8 KiB | 00m00s [ 44/178] rpm-sequoia-0:1.9.0-2.fc43.pp 100% | 7.9 MiB/s | 1.6 MiB | 00m00s [ 45/178] libselinux-0:3.9-5.fc44.ppc64 100% | 2.4 MiB/s | 112.5 KiB | 00m00s [ 46/178] filesystem-0:3.18-50.fc43.ppc 100% | 6.6 MiB/s | 1.3 MiB | 00m00s [ 47/178] libsepol-0:3.9-2.fc43.ppc64le 100% | 7.0 MiB/s | 380.8 KiB | 00m00s [ 48/178] libxcrypt-0:4.5.2-1.fc44.ppc6 100% | 3.1 MiB/s | 139.5 KiB | 00m00s [ 49/178] ncurses-base-0:6.5-7.20250614 100% | 1.4 MiB/s | 63.7 KiB | 00m00s [ 50/178] ncurses-libs-0:6.5-7.20250614 100% | 4.7 MiB/s | 383.4 KiB | 00m00s [ 51/178] libgcc-0:15.2.1-4.fc44.ppc64l 100% | 404.4 KiB/s | 116.9 KiB | 00m00s [ 52/178] audit-libs-0:4.1.2-2.fc44.ppc 100% | 2.4 MiB/s | 155.1 KiB | 00m00s [ 53/178] libcap-ng-0:0.8.5-8.fc44.ppc6 100% | 815.1 KiB/s | 33.4 KiB | 00m00s [ 54/178] librtas-0:2.0.6-5.fc44.ppc64l 100% | 1.9 MiB/s | 83.2 KiB | 00m00s [ 55/178] pam-libs-0:1.7.1-3.fc43.ppc64 100% | 1.4 MiB/s | 63.6 KiB | 00m00s [ 56/178] systemd-libs-0:259~rc2-2.fc44 100% | 6.1 MiB/s | 884.1 KiB | 00m00s [ 57/178] readline-0:8.3-2.fc43.ppc64le 100% | 4.7 MiB/s | 243.7 KiB | 00m00s [ 58/178] zlib-ng-compat-0:2.3.2-1.fc44 100% | 1.8 MiB/s | 90.7 KiB | 00m00s [ 59/178] bzip2-libs-0:1.0.8-21.fc43.pp 100% | 1.1 MiB/s | 49.3 KiB | 00m00s [ 60/178] libeconf-0:0.7.9-2.fc43.ppc64 100% | 982.3 KiB/s | 40.3 KiB | 00m00s [ 61/178] libacl-0:2.3.2-4.fc43.ppc64le 100% | 617.1 KiB/s | 26.5 KiB | 00m00s [ 62/178] libsemanage-0:3.9-4.fc44.ppc6 100% | 3.1 MiB/s | 135.2 KiB | 00m00s [ 63/178] setup-0:2.15.0-27.fc44.noarch 100% | 3.5 MiB/s | 151.3 KiB | 00m00s [ 64/178] gpgverify-0:2.2-3.fc43.noarch 100% | 284.7 KiB/s | 11.1 KiB | 00m00s [ 65/178] gnupg2-dirmngr-0:2.4.8-4.fc43 100% | 7.0 MiB/s | 315.9 KiB | 00m00s [ 66/178] gnupg2-gpg-agent-0:2.4.8-4.fc 100% | 4.5 MiB/s | 306.0 KiB | 00m00s [ 67/178] gnupg2-gpgconf-0:2.4.8-4.fc43 100% | 2.8 MiB/s | 125.0 KiB | 00m00s [ 68/178] gnupg2-keyboxd-0:2.4.8-4.fc43 100% | 2.3 MiB/s | 103.4 KiB | 00m00s [ 69/178] gnupg2-verify-0:2.4.8-4.fc43. 100% | 3.9 MiB/s | 185.9 KiB | 00m00s [ 70/178] ima-evm-utils-libs-0:1.6.2-7. 100% | 604.8 KiB/s | 30.2 KiB | 00m00s [ 71/178] libfsverity-0:1.6-3.fc43.ppc6 100% | 367.7 KiB/s | 19.1 KiB | 00m00s [ 72/178] gnupg2-0:2.4.8-4.fc43.ppc64le 100% | 6.8 MiB/s | 1.7 MiB | 00m00s [ 73/178] popt-0:1.19-9.fc43.ppc64le 100% | 1.4 MiB/s | 63.7 KiB | 00m00s [ 74/178] libstdc++-0:15.2.1-4.fc44.ppc 100% | 15.2 MiB/s | 1.0 MiB | 00m00s [ 75/178] libcap-0:2.77-1.fc44.ppc64le 100% | 2.2 MiB/s | 94.7 KiB | 00m00s [ 76/178] libzstd-0:1.5.7-3.fc44.ppc64l 100% | 4.5 MiB/s | 408.1 KiB | 00m00s [ 77/178] sqlite-libs-0:3.51.0-1.fc44.p 100% | 5.7 MiB/s | 877.0 KiB | 00m00s [ 78/178] elfutils-libelf-0:0.194-1.fc4 100% | 3.4 MiB/s | 212.0 KiB | 00m00s [ 79/178] openssl-libs-1:3.5.4-1.fc44.p 100% | 7.9 MiB/s | 2.8 MiB | 00m00s [ 80/178] lua-libs-0:5.4.8-4.fc44.ppc64 100% | 474.7 KiB/s | 149.5 KiB | 00m00s [ 81/178] elfutils-libs-0:0.194-1.fc44. 100% | 2.5 MiB/s | 311.2 KiB | 00m00s [ 82/178] file-libs-0:5.46-8.fc44.ppc64 100% | 11.7 MiB/s | 862.1 KiB | 00m00s [ 83/178] elfutils-0:0.194-1.fc44.ppc64 100% | 2.8 MiB/s | 567.4 KiB | 00m00s [ 84/178] file-0:5.46-8.fc44.ppc64le 100% | 1.1 MiB/s | 49.7 KiB | 00m00s [ 85/178] elfutils-debuginfod-client-0: 100% | 180.2 KiB/s | 50.1 KiB | 00m00s [ 86/178] libgomp-0:15.2.1-4.fc44.ppc64 100% | 3.2 MiB/s | 391.6 KiB | 00m00s [ 87/178] debugedit-0:5.2-3.fc44.ppc64l 100% | 1.8 MiB/s | 89.4 KiB | 00m00s [ 88/178] pkgconf-pkg-config-0:2.3.0-3. 100% | 202.9 KiB/s | 9.5 KiB | 00m00s [ 89/178] pkgconf-0:2.3.0-3.fc43.ppc64l 100% | 923.4 KiB/s | 45.2 KiB | 00m00s [ 90/178] libarchive-0:3.8.3-1.fc44.ppc 100% | 3.4 MiB/s | 495.1 KiB | 00m00s [ 91/178] pkgconf-m4-0:2.3.0-3.fc43.noa 100% | 376.0 KiB/s | 13.9 KiB | 00m00s [ 92/178] libpkgconf-0:2.3.0-3.fc43.ppc 100% | 874.7 KiB/s | 42.9 KiB | 00m00s [ 93/178] binutils-0:2.45.50-9.fc44.ppc 100% | 21.3 MiB/s | 6.6 MiB | 00m00s [ 94/178] curl-0:8.17.0-4.fc44.ppc64le 100% | 3.8 MiB/s | 242.0 KiB | 00m00s [ 95/178] zstd-0:1.5.7-3.fc44.ppc64le 100% | 2.0 MiB/s | 194.2 KiB | 00m00s [ 96/178] ansible-srpm-macros-0:1-18.1. 100% | 382.8 KiB/s | 19.9 KiB | 00m00s [ 97/178] build-reproducibility-srpm-ma 100% | 321.4 KiB/s | 12.9 KiB | 00m00s [ 98/178] dwz-0:0.16-2.fc43.ppc64le 100% | 3.3 MiB/s | 145.5 KiB | 00m00s [ 99/178] linkdupes-0:0.7.2-2.fc44.ppc6 100% | 3.7 MiB/s | 388.8 KiB | 00m00s [100/178] efi-srpm-macros-0:6-5.fc44.no 100% | 577.6 KiB/s | 22.5 KiB | 00m00s [101/178] filesystem-srpm-macros-0:3.18 100% | 660.3 KiB/s | 26.4 KiB | 00m00s [102/178] fonts-srpm-macros-1:5.0.0-1.f 100% | 634.7 KiB/s | 27.3 KiB | 00m00s [103/178] forge-srpm-macros-0:0.4.0-3.f 100% | 490.0 KiB/s | 20.1 KiB | 00m00s [104/178] fpc-srpm-macros-0:1.3-15.fc43 100% | 192.5 KiB/s | 7.9 KiB | 00m00s [105/178] add-determinism-0:0.7.2-2.fc4 100% | 4.4 MiB/s | 926.2 KiB | 00m00s [106/178] ghc-srpm-macros-0:1.9.2-3.fc4 100% | 218.7 KiB/s | 8.7 KiB | 00m00s [107/178] gnat-srpm-macros-0:6-8.fc43.n 100% | 197.4 KiB/s | 8.5 KiB | 00m00s [108/178] go-srpm-macros-0:3.8.0-1.fc44 100% | 589.7 KiB/s | 28.3 KiB | 00m00s [109/178] kernel-srpm-macros-0:1.0-27.f 100% | 185.9 KiB/s | 8.9 KiB | 00m00s [110/178] lua-srpm-macros-0:1-16.fc43.n 100% | 208.5 KiB/s | 8.8 KiB | 00m00s [111/178] ocaml-srpm-macros-0:11-2.fc43 100% | 205.8 KiB/s | 9.3 KiB | 00m00s [112/178] openblas-srpm-macros-0:2-20.f 100% | 185.2 KiB/s | 7.6 KiB | 00m00s [113/178] package-notes-srpm-macros-0:0 100% | 209.0 KiB/s | 9.0 KiB | 00m00s [114/178] perl-srpm-macros-0:1-60.fc43. 100% | 202.2 KiB/s | 8.3 KiB | 00m00s [115/178] pyproject-srpm-macros-0:1.18. 100% | 317.0 KiB/s | 13.3 KiB | 00m00s [116/178] python-srpm-macros-0:3.14-9.f 100% | 580.7 KiB/s | 23.8 KiB | 00m00s [117/178] qt5-srpm-macros-0:5.15.18-1.f 100% | 204.8 KiB/s | 8.6 KiB | 00m00s [118/178] qt6-srpm-macros-0:6.10.1-1.fc 100% | 222.8 KiB/s | 9.4 KiB | 00m00s [119/178] rust-srpm-macros-0:28.0-1.fc4 100% | 237.5 KiB/s | 9.7 KiB | 00m00s [120/178] tree-sitter-srpm-macros-0:0.4 100% | 333.8 KiB/s | 13.4 KiB | 00m00s [121/178] zig-srpm-macros-0:1-5.fc43.no 100% | 191.7 KiB/s | 8.4 KiB | 00m00s [122/178] ed-0:1.22.3-1.fc44.ppc64le 100% | 2.0 MiB/s | 86.8 KiB | 00m00s [123/178] libattr-0:2.5.2-6.fc43.ppc64l 100% | 444.8 KiB/s | 18.7 KiB | 00m00s [124/178] zip-0:3.0-44.fc43.ppc64le 100% | 3.2 MiB/s | 275.0 KiB | 00m00s [125/178] crypto-policies-0:20251128-1. 100% | 1.6 MiB/s | 74.7 KiB | 00m00s [126/178] pcre2-0:10.47-1.fc44.ppc64le 100% | 1.8 MiB/s | 282.2 KiB | 00m00s [127/178] pcre2-syntax-0:10.47-1.fc44.n 100% | 957.5 KiB/s | 164.7 KiB | 00m00s [128/178] lz4-libs-0:1.10.0-3.fc43.ppc6 100% | 1.7 MiB/s | 103.0 KiB | 00m00s [129/178] tpm2-tss-0:4.1.3-8.fc43.ppc64 100% | 1.4 MiB/s | 394.8 KiB | 00m00s [130/178] ca-certificates-0:2025.2.80_v 100% | 1.5 MiB/s | 973.8 KiB | 00m01s [131/178] libxml2-0:2.12.10-5.fc44.ppc6 100% | 1.7 MiB/s | 776.5 KiB | 00m00s [132/178] libassuan-0:2.5.7-4.fc43.ppc6 100% | 1.7 MiB/s | 71.5 KiB | 00m00s [133/178] libgcrypt-0:1.11.2-1.fc44.ppc 100% | 7.7 MiB/s | 665.1 KiB | 00m00s [134/178] npth-0:1.8-3.fc43.ppc64le 100% | 310.9 KiB/s | 25.2 KiB | 00m00s [135/178] libksba-0:1.6.7-4.fc43.ppc64l 100% | 3.9 MiB/s | 177.7 KiB | 00m00s [136/178] libgpg-error-0:1.56-1.fc44.pp 100% | 1.7 MiB/s | 253.7 KiB | 00m00s [137/178] openldap-0:2.6.10-4.fc44.ppc6 100% | 4.5 MiB/s | 289.5 KiB | 00m00s [138/178] mpfr-0:4.2.2-2.fc43.ppc64le 100% | 5.7 MiB/s | 362.2 KiB | 00m00s [139/178] elfutils-default-yama-scope-0 100% | 317.3 KiB/s | 12.4 KiB | 00m00s [140/178] gmp-1:6.3.0-4.fc44.ppc64le 100% | 2.1 MiB/s | 321.0 KiB | 00m00s [141/178] json-c-0:0.18-7.fc43.ppc64le 100% | 1.2 MiB/s | 49.5 KiB | 00m00s [142/178] libffi-0:3.5.2-1.fc44.ppc64le 100% | 1.0 MiB/s | 42.0 KiB | 00m00s [143/178] gnulib-l10n-0:20241231-1.fc44 100% | 1.9 MiB/s | 143.0 KiB | 00m00s [144/178] p11-kit-0:0.25.8-1.fc44.ppc64 100% | 7.5 MiB/s | 499.5 KiB | 00m00s [145/178] p11-kit-trust-0:0.25.8-1.fc44 100% | 1.6 MiB/s | 156.5 KiB | 00m00s [146/178] alternatives-0:1.33-3.fc44.pp 100% | 1.0 MiB/s | 43.6 KiB | 00m00s [147/178] jansson-0:2.14-3.fc43.ppc64le 100% | 1.2 MiB/s | 50.7 KiB | 00m00s [148/178] libusb1-0:1.0.29-4.fc44.ppc64 100% | 1.4 MiB/s | 85.4 KiB | 00m00s [149/178] libtasn1-0:4.20.0-2.fc43.ppc6 100% | 1.8 MiB/s | 81.2 KiB | 00m00s [150/178] cyrus-sasl-lib-0:2.1.28-33.fc 100% | 8.5 MiB/s | 901.7 KiB | 00m00s [151/178] libevent-0:2.1.12-16.fc43.ppc 100% | 2.3 MiB/s | 274.4 KiB | 00m00s [152/178] libtool-ltdl-0:2.5.4-8.fc44.p 100% | 967.7 KiB/s | 39.7 KiB | 00m00s [153/178] libidn2-0:2.3.8-2.fc43.ppc64l 100% | 3.7 MiB/s | 171.3 KiB | 00m00s [154/178] nettle-0:3.10.1-2.fc43.ppc64l 100% | 6.5 MiB/s | 461.0 KiB | 00m00s [155/178] gdbm-libs-1:1.23-10.fc43.ppc6 100% | 1.4 MiB/s | 61.8 KiB | 00m00s [156/178] fedora-release-0:44-0.8.noarc 100% | 333.2 KiB/s | 13.3 KiB | 00m00s [157/178] libunistring-0:1.1-10.fc43.pp 100% | 2.7 MiB/s | 575.4 KiB | 00m00s [158/178] systemd-standalone-sysusers-0 100% | 3.3 MiB/s | 150.3 KiB | 00m00s [159/178] fedora-release-identity-basic 100% | 343.9 KiB/s | 14.1 KiB | 00m00s [160/178] gdb-minimal-0:16.3-6.fc44.ppc 100% | 23.8 MiB/s | 4.7 MiB | 00m00s [161/178] gnutls-0:3.8.11-6.fc44.ppc64l 100% | 1.3 MiB/s | 1.4 MiB | 00m01s [162/178] libcurl-0:8.17.0-4.fc44.ppc64 100% | 3.4 MiB/s | 466.1 KiB | 00m00s [163/178] libnghttp2-0:1.68.0-2.fc44.pp 100% | 1.9 MiB/s | 80.3 KiB | 00m00s [164/178] selinux-policy-0:42.18-1.fc44 100% | 1.5 MiB/s | 64.9 KiB | 00m00s [165/178] libselinux-utils-0:3.9-5.fc44 100% | 2.7 MiB/s | 115.2 KiB | 00m00s [166/178] policycoreutils-0:3.9-5.fc44. 100% | 1.6 MiB/s | 193.8 KiB | 00m00s [167/178] rpm-plugin-selinux-0:6.0.0-1. 100% | 464.5 KiB/s | 19.5 KiB | 00m00s [168/178] xxhash-libs-0:0.8.3-3.fc43.pp 100% | 878.9 KiB/s | 37.8 KiB | 00m00s [169/178] krb5-libs-0:1.21.3-10.fc44.pp 100% | 6.7 MiB/s | 844.6 KiB | 00m00s [170/178] libpsl-0:0.21.5-6.fc43.ppc64l 100% | 1.5 MiB/s | 66.7 KiB | 00m00s [171/178] libbrotli-0:1.1.0-10.fc44.ppc 100% | 2.0 MiB/s | 381.9 KiB | 00m00s [172/178] libssh-config-0:0.11.3-1.fc44 100% | 227.8 KiB/s | 9.1 KiB | 00m00s [173/178] libssh-0:0.11.3-1.fc44.ppc64l 100% | 4.0 MiB/s | 266.5 KiB | 00m00s [174/178] keyutils-libs-0:1.6.3-6.fc43. 100% | 774.8 KiB/s | 32.5 KiB | 00m00s [175/178] libcom_err-0:1.47.3-3.fc44.pp 100% | 647.8 KiB/s | 27.2 KiB | 00m00s [176/178] libverto-0:0.3.2-11.fc43.ppc6 100% | 521.2 KiB/s | 21.9 KiB | 00m00s [177/178] publicsuffix-list-dafsa-0:202 100% | 969.7 KiB/s | 59.2 KiB | 00m00s [178/178] selinux-policy-targeted-0:42. 100% | 4.6 MiB/s | 6.6 MiB | 00m01s -------------------------------------------------------------------------------- [178/178] Total 100% | 10.5 MiB/s | 71.2 MiB | 00m07s Running transaction [ 1/180] Verify package files 100% | 273.0 B/s | 178.0 B | 00m01s >>> Running %pretrans scriptlet: filesystem-0:3.18-50.fc43.ppc64le >>> Finished %pretrans scriptlet: filesystem-0:3.18-50.fc43.ppc64le >>> [RPM] /var/lib/mock/fedora-42-ppc64le-1764958924.560307/root/var/cache/dnf/c [ 2/180] Prepare transaction 100% | 1.1 KiB/s | 178.0 B | 00m00s [ 3/180] Installing libgcc-0:15.2.1-4. 100% | 93.8 MiB/s | 288.1 KiB | 00m00s [ 4/180] Installing publicsuffix-list- 100% | 68.2 MiB/s | 69.8 KiB | 00m00s [ 5/180] Installing libssh-config-0:0. 100% | 796.9 KiB/s | 816.0 B | 00m00s [ 6/180] Installing fedora-release-ide 100% | 0.0 B/s | 920.0 B | 00m00s [ 7/180] Installing fedora-repos-rawhi 100% | 2.4 MiB/s | 2.4 KiB | 00m00s [ 8/180] Installing fedora-gpg-keys-0: 100% | 13.4 MiB/s | 179.0 KiB | 00m00s [ 9/180] Installing fedora-repos-0:44- 100% | 5.6 MiB/s | 5.7 KiB | 00m00s [ 10/180] Installing fedora-release-com 100% | 8.2 MiB/s | 25.1 KiB | 00m00s [ 11/180] Installing fedora-release-0:4 100% | 11.0 KiB/s | 124.0 B | 00m00s >>> Running sysusers scriptlet: setup-0:2.15.0-27.fc44.noarch >>> Finished sysusers scriptlet: setup-0:2.15.0-27.fc44.noarch >>> Scriptlet output: >>> Creating group 'adm' with GID 4. >>> Creating group 'audio' with GID 63. >>> Creating group 'cdrom' with GID 11. >>> Creating group 'clock' with GID 103. >>> Creating group 'dialout' with GID 18. >>> Creating group 'disk' with GID 6. >>> Creating group 'floppy' with GID 19. >>> Creating group 'ftp' with GID 50. >>> Creating group 'games' with GID 20. >>> Creating group 'input' with GID 104. >>> Creating group 'kmem' with GID 9. >>> Creating group 'kvm' with GID 36. >>> Creating group 'lock' with GID 54. >>> Creating group 'lp' with GID 7. >>> Creating group 'mail' with GID 12. >>> Creating group 'man' with GID 15. >>> Creating group 'mem' with GID 8. >>> Creating group 'nobody' with GID 65534. >>> Creating group 'render' with GID 105. >>> Creating group 'root' with GID 0. >>> Creating group 'sgx' with GID 106. >>> Creating group 'sys' with GID 3. >>> Creating group 'tape' with GID 33. >>> Creating group 'tty' with GID 5. >>> Creating group 'users' with GID 100. >>> Creating group 'utmp' with GID 22. >>> Creating group 'video' with GID 39. >>> Creating group 'wheel' with GID 10. >>> Creating user 'adm' (adm) with UID 3 and GID 4. >>> Creating group 'bin' with GID 1. >>> Creating user 'bin' (bin) with UID 1 and GID 1. >>> Creating group 'daemon' with GID 2. >>> Creating user 'daemon' (daemon) with UID 2 and GID 2. >>> Creating user 'ftp' (FTP User) with UID 14 and GID 50. >>> Creating user 'games' (games) with UID 12 and GID 100. >>> Creating user 'halt' (halt) with UID 7 and GID 0. >>> Creating user 'lp' (lp) with UID 4 and GID 7. >>> Creating user 'mail' (mail) with UID 8 and GID 12. >>> Creating user 'nobody' (Kernel Overflow User) with UID 65534 and GID 65534. >>> Creating user 'operator' (operator) with UID 11 and GID 0. >>> Creating user 'root' (Super User) with UID 0 and GID 0. >>> Creating user 'shutdown' (shutdown) with UID 6 and GID 0. >>> Creating user 'sync' (sync) with UID 5 and GID 0. >>> [ 12/180] Installing setup-0:2.15.0-27. 100% | 20.4 MiB/s | 730.6 KiB | 00m00s >>> [RPM] /etc/hosts created as /etc/hosts.rpmnew [ 13/180] Installing filesystem-0:3.18- 100% | 864.9 KiB/s | 212.8 KiB | 00m00s [ 14/180] Installing gnulib-l10n-0:2024 100% | 38.0 MiB/s | 661.9 KiB | 00m00s [ 15/180] Installing coreutils-common-0 100% | 142.1 MiB/s | 11.2 MiB | 00m00s [ 16/180] Installing pcre2-syntax-0:10. 100% | 92.6 MiB/s | 284.3 KiB | 00m00s [ 17/180] Installing rust-srpm-macros-0 100% | 5.4 MiB/s | 5.6 KiB | 00m00s [ 18/180] Installing qt6-srpm-macros-0: 100% | 0.0 B/s | 740.0 B | 00m00s [ 19/180] Installing qt5-srpm-macros-0: 100% | 0.0 B/s | 776.0 B | 00m00s [ 20/180] Installing perl-srpm-macros-0 100% | 0.0 B/s | 1.1 KiB | 00m00s [ 21/180] Installing package-notes-srpm 100% | 2.0 MiB/s | 2.0 KiB | 00m00s [ 22/180] Installing openblas-srpm-macr 100% | 0.0 B/s | 392.0 B | 00m00s [ 23/180] Installing ocaml-srpm-macros- 100% | 0.0 B/s | 2.1 KiB | 00m00s [ 24/180] Installing kernel-srpm-macros 100% | 2.3 MiB/s | 2.3 KiB | 00m00s [ 25/180] Installing gnat-srpm-macros-0 100% | 0.0 B/s | 1.3 KiB | 00m00s [ 26/180] Installing ghc-srpm-macros-0: 100% | 0.0 B/s | 1.0 KiB | 00m00s [ 27/180] Installing fpc-srpm-macros-0: 100% | 0.0 B/s | 420.0 B | 00m00s [ 28/180] Installing ansible-srpm-macro 100% | 35.4 MiB/s | 36.2 KiB | 00m00s [ 29/180] Installing pkgconf-m4-0:2.3.0 100% | 14.5 MiB/s | 14.8 KiB | 00m00s [ 30/180] Installing ncurses-base-0:6.5 100% | 23.0 MiB/s | 353.5 KiB | 00m00s [ 31/180] Installing glibc-minimal-lang 100% | 0.0 B/s | 124.0 B | 00m00s [ 32/180] Installing ncurses-libs-0:6.5 100% | 115.1 MiB/s | 1.5 MiB | 00m00s [ 33/180] Installing glibc-0:2.42.9000- 100% | 102.1 MiB/s | 11.7 MiB | 00m00s [ 34/180] Installing bash-0:5.3.0-2.fc4 100% | 101.5 MiB/s | 8.9 MiB | 00m00s [ 35/180] Installing glibc-common-0:2.4 100% | 33.6 MiB/s | 1.5 MiB | 00m00s [ 36/180] Installing glibc-gconv-extra- 100% | 153.5 MiB/s | 18.6 MiB | 00m00s [ 37/180] Installing zlib-ng-compat-0:2 100% | 96.8 MiB/s | 198.2 KiB | 00m00s [ 38/180] Installing bzip2-libs-0:1.0.8 100% | 67.2 MiB/s | 137.7 KiB | 00m00s [ 39/180] Installing libgpg-error-0:1.5 100% | 25.4 MiB/s | 1.0 MiB | 00m00s [ 40/180] Installing libstdc++-0:15.2.1 100% | 156.3 MiB/s | 3.9 MiB | 00m00s [ 41/180] Installing libassuan-0:2.5.7- 100% | 70.8 MiB/s | 217.6 KiB | 00m00s [ 42/180] Installing libgcrypt-0:1.11.2 100% | 125.7 MiB/s | 1.5 MiB | 00m00s [ 43/180] Installing libuuid-0:2.41.2-9 100% | 68.6 MiB/s | 70.3 KiB | 00m00s [ 44/180] Installing xz-libs-1:5.8.1-4. 100% | 86.7 MiB/s | 266.4 KiB | 00m00s [ 45/180] Installing readline-0:8.3-2.f 100% | 102.5 MiB/s | 629.7 KiB | 00m00s [ 46/180] Installing gmp-1:6.3.0-4.fc44 100% | 110.0 MiB/s | 788.4 KiB | 00m00s [ 47/180] Installing popt-0:1.19-9.fc43 100% | 30.0 MiB/s | 215.3 KiB | 00m00s [ 48/180] Installing libzstd-0:1.5.7-3. 100% | 136.4 MiB/s | 1.1 MiB | 00m00s [ 49/180] Installing elfutils-libelf-0: 100% | 134.1 MiB/s | 1.2 MiB | 00m00s [ 50/180] Installing npth-0:1.8-3.fc43. 100% | 92.0 MiB/s | 94.2 KiB | 00m00s [ 51/180] Installing libblkid-0:2.41.2- 100% | 115.7 MiB/s | 355.5 KiB | 00m00s [ 52/180] Installing libsepol-0:3.9-2.f 100% | 130.2 MiB/s | 1.0 MiB | 00m00s [ 53/180] Installing libxcrypt-0:4.5.2- 100% | 82.9 MiB/s | 339.7 KiB | 00m00s [ 54/180] Installing systemd-libs-0:259 100% | 148.1 MiB/s | 3.0 MiB | 00m00s [ 55/180] Installing sqlite-libs-0:3.51 100% | 138.5 MiB/s | 1.9 MiB | 00m00s [ 56/180] Installing gnupg2-gpgconf-0:2 100% | 7.7 MiB/s | 323.9 KiB | 00m00s [ 57/180] Installing crypto-policies-0: 100% | 11.0 MiB/s | 157.7 KiB | 00m00s [ 58/180] Installing libattr-0:2.5.2-6. 100% | 67.5 MiB/s | 69.1 KiB | 00m00s [ 59/180] Installing libacl-0:2.3.2-4.f 100% | 66.8 MiB/s | 68.4 KiB | 00m00s [ 60/180] Installing pcre2-0:10.47-1.fc 100% | 137.3 MiB/s | 843.4 KiB | 00m00s [ 61/180] Installing libselinux-0:3.9-5 100% | 86.7 MiB/s | 266.4 KiB | 00m00s [ 62/180] Installing grep-0:3.12-2.fc43 100% | 23.6 MiB/s | 1.0 MiB | 00m00s [ 63/180] Installing sed-0:4.9-6.fc44.p 100% | 22.0 MiB/s | 945.3 KiB | 00m00s [ 64/180] Installing findutils-1:4.10.0 100% | 42.6 MiB/s | 2.0 MiB | 00m00s [ 65/180] Installing libtasn1-0:4.20.0- 100% | 72.2 MiB/s | 221.9 KiB | 00m00s [ 66/180] Installing libunistring-0:1.1 100% | 144.0 MiB/s | 1.9 MiB | 00m00s [ 67/180] Installing libidn2-0:2.3.8-2. 100% | 39.5 MiB/s | 566.4 KiB | 00m00s [ 68/180] Installing xz-1:5.8.1-4.fc44. 100% | 30.1 MiB/s | 1.4 MiB | 00m00s [ 69/180] Installing libmount-0:2.41.2- 100% | 134.1 MiB/s | 549.3 KiB | 00m00s [ 70/180] Installing gnupg2-verify-0:2. 100% | 12.0 MiB/s | 429.7 KiB | 00m00s [ 71/180] Installing dwz-0:0.16-2.fc43. 100% | 11.1 MiB/s | 388.0 KiB | 00m00s [ 72/180] Installing mpfr-0:4.2.2-2.fc4 100% | 111.7 MiB/s | 915.3 KiB | 00m00s [ 73/180] Installing gawk-0:5.3.2-2.fc4 100% | 50.5 MiB/s | 2.8 MiB | 00m00s [ 74/180] Installing libksba-0:1.6.7-4. 100% | 103.3 MiB/s | 529.0 KiB | 00m00s [ 75/180] Installing unzip-0:6.0-68.fc4 100% | 14.6 MiB/s | 537.4 KiB | 00m00s [ 76/180] Installing file-libs-0:5.46-8 100% | 220.0 MiB/s | 11.9 MiB | 00m00s [ 77/180] Installing file-0:5.46-8.fc44 100% | 4.2 MiB/s | 141.6 KiB | 00m00s [ 78/180] Installing diffutils-0:3.12-3 100% | 37.5 MiB/s | 1.7 MiB | 00m00s [ 79/180] Installing libsmartcols-0:2.4 100% | 71.0 MiB/s | 290.6 KiB | 00m00s [ 80/180] Installing libcap-ng-0:0.8.5- 100% | 79.2 MiB/s | 162.1 KiB | 00m00s [ 81/180] Installing audit-libs-0:4.1.2 100% | 108.0 MiB/s | 553.2 KiB | 00m00s [ 82/180] Installing libsemanage-0:3.9- 100% | 103.9 MiB/s | 425.7 KiB | 00m00s [ 83/180] Installing libeconf-0:0.7.9-2 100% | 40.3 MiB/s | 82.5 KiB | 00m00s [ 84/180] Installing pam-libs-0:1.7.1-3 100% | 93.9 MiB/s | 288.6 KiB | 00m00s [ 85/180] Installing libcap-0:2.77-1.fc 100% | 14.3 MiB/s | 512.9 KiB | 00m00s [ 86/180] Installing lua-libs-0:5.4.8-4 100% | 96.5 MiB/s | 395.3 KiB | 00m00s [ 87/180] Installing json-c-0:0.18-7.fc 100% | 68.3 MiB/s | 139.8 KiB | 00m00s [ 88/180] Installing libffi-0:3.5.2-1.f 100% | 113.6 MiB/s | 349.0 KiB | 00m00s [ 89/180] Installing p11-kit-0:0.25.8-1 100% | 46.8 MiB/s | 2.9 MiB | 00m00s [ 90/180] Installing alternatives-0:1.3 100% | 2.8 MiB/s | 91.7 KiB | 00m00s [ 91/180] Installing p11-kit-trust-0:0. 100% | 13.9 MiB/s | 595.9 KiB | 00m00s [ 92/180] Installing openssl-libs-1:3.5 100% | 143.6 MiB/s | 9.0 MiB | 00m00s [ 93/180] Installing coreutils-0:9.9-1. 100% | 95.4 MiB/s | 9.4 MiB | 00m00s [ 94/180] Installing ca-certificates-0: 100% | 942.8 KiB/s | 2.5 MiB | 00m03s [ 95/180] Installing gzip-0:1.14-1.fc44 100% | 11.7 MiB/s | 443.1 KiB | 00m00s [ 96/180] Installing rpm-sequoia-0:1.9. 100% | 153.5 MiB/s | 4.9 MiB | 00m00s [ 97/180] Installing libfsverity-0:1.6- 100% | 67.5 MiB/s | 69.1 KiB | 00m00s [ 98/180] Installing libevent-0:2.1.12- 100% | 134.4 MiB/s | 1.2 MiB | 00m00s [ 99/180] Installing util-linux-core-0: 100% | 46.8 MiB/s | 2.5 MiB | 00m00s [100/180] Installing zip-0:3.0-44.fc43. 100% | 23.0 MiB/s | 893.7 KiB | 00m00s [101/180] Installing gnupg2-keyboxd-0:2 100% | 32.4 MiB/s | 298.5 KiB | 00m00s [102/180] Installing libpsl-0:0.21.5-6. 100% | 65.1 MiB/s | 133.2 KiB | 00m00s [103/180] Installing tar-2:1.35-6.fc43. 100% | 56.9 MiB/s | 3.1 MiB | 00m00s [104/180] Installing linkdupes-0:0.7.2- 100% | 23.3 MiB/s | 908.5 KiB | 00m00s [105/180] Installing libselinux-utils-0 100% | 30.1 MiB/s | 1.4 MiB | 00m00s [106/180] Installing liblastlog2-0:2.41 100% | 19.5 MiB/s | 139.6 KiB | 00m00s [107/180] Installing libusb1-0:1.0.29-4 100% | 19.9 MiB/s | 244.4 KiB | 00m00s >>> Running sysusers scriptlet: tpm2-tss-0:4.1.3-8.fc43.ppc64le >>> Finished sysusers scriptlet: tpm2-tss-0:4.1.3-8.fc43.ppc64le >>> Scriptlet output: >>> Creating group 'tss' with GID 59. >>> Creating user 'tss' (Account used for TPM access) with UID 59 and GID 59. >>> [108/180] Installing tpm2-tss-0:4.1.3-8 100% | 137.2 MiB/s | 2.5 MiB | 00m00s [109/180] Installing gnupg2-gpg-agent-0 100% | 21.7 MiB/s | 979.0 KiB | 00m00s [110/180] Installing ima-evm-utils-libs 100% | 45.8 MiB/s | 93.9 KiB | 00m00s [111/180] Installing systemd-standalone 100% | 11.3 MiB/s | 394.3 KiB | 00m00s [112/180] Installing rpm-libs-0:6.0.0-1 100% | 136.0 MiB/s | 1.2 MiB | 00m00s [113/180] Installing libfdisk-0:2.41.2- 100% | 118.2 MiB/s | 484.1 KiB | 00m00s [114/180] Installing zstd-0:1.5.7-3.fc4 100% | 15.2 MiB/s | 577.4 KiB | 00m00s [115/180] Installing nettle-0:3.10.1-2. 100% | 117.3 MiB/s | 960.9 KiB | 00m00s [116/180] Installing gnutls-0:3.8.11-6. 100% | 150.8 MiB/s | 4.1 MiB | 00m00s [117/180] Installing libxml2-0:2.12.10- 100% | 48.2 MiB/s | 2.3 MiB | 00m00s [118/180] Installing bzip2-0:1.0.8-21.f 100% | 5.0 MiB/s | 175.7 KiB | 00m00s [119/180] Installing add-determinism-0: 100% | 50.3 MiB/s | 2.4 MiB | 00m00s [120/180] Installing filesystem-srpm-ma 100% | 38.0 MiB/s | 38.9 KiB | 00m00s [121/180] Installing ed-0:1.22.3-1.fc44 100% | 4.7 MiB/s | 159.1 KiB | 00m00s [122/180] Installing patch-0:2.8-2.fc43 100% | 7.6 MiB/s | 264.0 KiB | 00m00s [123/180] Installing elfutils-default-y 100% | 340.5 KiB/s | 2.0 KiB | 00m00s [124/180] Installing elfutils-libs-0:0. 100% | 122.3 MiB/s | 876.5 KiB | 00m00s [125/180] Installing cpio-0:2.15-6.fc43 100% | 26.9 MiB/s | 1.2 MiB | 00m00s [126/180] Installing librtas-0:2.0.6-5. 100% | 23.1 MiB/s | 307.6 KiB | 00m00s [127/180] Installing util-linux-0:2.41. 100% | 63.5 MiB/s | 7.0 MiB | 00m00s [128/180] Installing policycoreutils-0: 100% | 21.1 MiB/s | 1.3 MiB | 00m00s [129/180] Installing selinux-policy-0:4 100% | 1.3 MiB/s | 33.6 KiB | 00m00s [130/180] Installing selinux-policy-tar 100% | 58.3 MiB/s | 14.9 MiB | 00m00s [131/180] Installing build-reproducibil 100% | 757.8 KiB/s | 1.5 KiB | 00m00s [132/180] Installing libgomp-0:15.2.1-4 100% | 105.3 MiB/s | 646.7 KiB | 00m00s [133/180] Installing libpkgconf-0:2.3.0 100% | 65.9 MiB/s | 135.0 KiB | 00m00s [134/180] Installing pkgconf-0:2.3.0-3. 100% | 3.2 MiB/s | 114.8 KiB | 00m00s [135/180] Installing pkgconf-pkg-config 100% | 53.7 KiB/s | 1.8 KiB | 00m00s [136/180] Installing lz4-libs-0:1.10.0- 100% | 85.4 MiB/s | 262.2 KiB | 00m00s [137/180] Installing libarchive-0:3.8.3 100% | 126.7 MiB/s | 1.3 MiB | 00m00s [138/180] Installing jansson-0:2.14-3.f 100% | 77.3 MiB/s | 158.4 KiB | 00m00s [139/180] Installing libtool-ltdl-0:2.5 100% | 46.4 MiB/s | 95.0 KiB | 00m00s [140/180] Installing gdbm-libs-1:1.23-1 100% | 76.6 MiB/s | 235.2 KiB | 00m00s [141/180] Installing cyrus-sasl-lib-0:2 100% | 57.2 MiB/s | 2.9 MiB | 00m00s [142/180] Installing openldap-0:2.6.10- 100% | 109.1 MiB/s | 893.7 KiB | 00m00s [143/180] Installing gnupg2-dirmngr-0:2 100% | 18.7 MiB/s | 840.8 KiB | 00m00s [144/180] Installing gnupg2-0:2.4.8-4.f 100% | 88.5 MiB/s | 6.9 MiB | 00m00s [145/180] Installing rpm-sign-libs-0:6. 100% | 33.4 MiB/s | 68.5 KiB | 00m00s [146/180] Installing rpm-build-libs-0:6 100% | 107.0 MiB/s | 328.8 KiB | 00m00s [147/180] Installing gpgverify-0:2.2-3. 100% | 9.2 MiB/s | 9.4 KiB | 00m00s [148/180] Installing libnghttp2-0:1.68. 100% | 97.2 MiB/s | 199.0 KiB | 00m00s [149/180] Installing xxhash-libs-0:0.8. 100% | 42.5 MiB/s | 87.0 KiB | 00m00s [150/180] Installing libbrotli-0:1.1.0- 100% | 119.0 MiB/s | 975.0 KiB | 00m00s [151/180] Installing keyutils-libs-0:1. 100% | 48.5 MiB/s | 99.4 KiB | 00m00s [152/180] Installing libcom_err-0:1.47. 100% | 54.8 MiB/s | 112.1 KiB | 00m00s [153/180] Installing libverto-0:0.3.2-1 100% | 34.6 MiB/s | 70.9 KiB | 00m00s [154/180] Installing krb5-libs-0:1.21.3 100% | 129.1 MiB/s | 3.0 MiB | 00m00s [155/180] Installing libssh-0:0.11.3-1. 100% | 116.7 MiB/s | 717.3 KiB | 00m00s [156/180] Installing libcurl-0:8.17.0-4 100% | 127.2 MiB/s | 1.1 MiB | 00m00s [157/180] Installing elfutils-debuginfo 100% | 4.2 MiB/s | 145.8 KiB | 00m00s [158/180] Installing elfutils-0:0.194-1 100% | 66.4 MiB/s | 3.5 MiB | 00m00s [159/180] Installing binutils-0:2.45.50 100% | 148.8 MiB/s | 32.6 MiB | 00m00s [160/180] Installing gdb-minimal-0:16.3 100% | 126.4 MiB/s | 15.7 MiB | 00m00s [161/180] Installing debugedit-0:5.2-3. 100% | 11.1 MiB/s | 384.9 KiB | 00m00s [162/180] Installing curl-0:8.17.0-4.fc 100% | 11.1 MiB/s | 524.7 KiB | 00m00s [163/180] Installing rpm-0:6.0.0-1.fc44 100% | 35.7 MiB/s | 2.8 MiB | 00m00s [164/180] Installing java-srpm-macros-0 100% | 1.1 MiB/s | 1.1 KiB | 00m00s [165/180] Installing efi-srpm-macros-0: 100% | 40.2 MiB/s | 41.2 KiB | 00m00s [166/180] Installing lua-srpm-macros-0: 100% | 1.9 MiB/s | 1.9 KiB | 00m00s [167/180] Installing tree-sitter-srpm-m 100% | 9.1 MiB/s | 9.3 KiB | 00m00s [168/180] Installing zig-srpm-macros-0: 100% | 1.6 MiB/s | 1.7 KiB | 00m00s [169/180] Installing gap-srpm-macros-0: 100% | 2.6 MiB/s | 2.7 KiB | 00m00s [170/180] Installing pyproject-srpm-mac 100% | 2.4 MiB/s | 2.5 KiB | 00m00s [171/180] Installing rpm-build-0:6.0.0- 100% | 16.8 MiB/s | 672.2 KiB | 00m00s [172/180] Installing fonts-srpm-macros- 100% | 27.8 MiB/s | 57.0 KiB | 00m00s [173/180] Installing forge-srpm-macros- 100% | 39.3 MiB/s | 40.3 KiB | 00m00s [174/180] Installing go-srpm-macros-0:3 100% | 61.6 MiB/s | 63.0 KiB | 00m00s [175/180] Installing python-srpm-macros 100% | 25.9 MiB/s | 52.9 KiB | 00m00s [176/180] Installing redhat-rpm-config- 100% | 37.1 MiB/s | 189.9 KiB | 00m00s [177/180] Installing rpm-plugin-selinux 100% | 67.3 MiB/s | 68.9 KiB | 00m00s [178/180] Installing which-0:2.23-3.fc4 100% | 3.6 MiB/s | 125.5 KiB | 00m00s [179/180] Installing shadow-utils-2:4.1 100% | 57.2 MiB/s | 4.9 MiB | 00m00s [180/180] Installing info-0:7.2-6.fc43. 100% | 37.7 KiB/s | 485.9 KiB | 00m13s Warning: skipped OpenPGP checks for 178 packages from repositories: copr_base, http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch Complete! Finish: installing minimal buildroot with dnf5 Start: creating root cache Finish: creating root cache Finish: chroot init INFO: Installed packages: INFO: add-determinism-0.7.2-2.fc44.ppc64le alternatives-1.33-3.fc44.ppc64le ansible-srpm-macros-1-18.1.fc43.noarch audit-libs-4.1.2-2.fc44.ppc64le bash-5.3.0-2.fc43.ppc64le binutils-2.45.50-9.fc44.ppc64le build-reproducibility-srpm-macros-0.7.2-2.fc44.noarch bzip2-1.0.8-21.fc43.ppc64le bzip2-libs-1.0.8-21.fc43.ppc64le ca-certificates-2025.2.80_v9.0.304-2.fc44.noarch coreutils-9.9-1.fc44.ppc64le coreutils-common-9.9-1.fc44.ppc64le cpio-2.15-6.fc43.ppc64le crypto-policies-20251128-1.git19878fe.fc44.noarch curl-8.17.0-4.fc44.ppc64le cyrus-sasl-lib-2.1.28-33.fc44.ppc64le debugedit-5.2-3.fc44.ppc64le diffutils-3.12-3.fc43.ppc64le dwz-0.16-2.fc43.ppc64le ed-1.22.3-1.fc44.ppc64le efi-srpm-macros-6-5.fc44.noarch elfutils-0.194-1.fc44.ppc64le elfutils-debuginfod-client-0.194-1.fc44.ppc64le elfutils-default-yama-scope-0.194-1.fc44.noarch elfutils-libelf-0.194-1.fc44.ppc64le elfutils-libs-0.194-1.fc44.ppc64le fedora-gpg-keys-44-0.1.noarch fedora-release-44-0.8.noarch fedora-release-common-44-0.8.noarch fedora-release-identity-basic-44-0.8.noarch fedora-repos-44-0.1.noarch fedora-repos-rawhide-44-0.1.noarch file-5.46-8.fc44.ppc64le file-libs-5.46-8.fc44.ppc64le filesystem-3.18-50.fc43.ppc64le filesystem-srpm-macros-3.18-50.fc43.noarch findutils-4.10.0-6.fc43.ppc64le fonts-srpm-macros-5.0.0-1.fc44.noarch forge-srpm-macros-0.4.0-3.fc43.noarch fpc-srpm-macros-1.3-15.fc43.noarch gap-srpm-macros-2-1.fc44.noarch gawk-5.3.2-2.fc43.ppc64le gdb-minimal-16.3-6.fc44.ppc64le gdbm-libs-1.23-10.fc43.ppc64le ghc-srpm-macros-1.9.2-3.fc43.noarch glibc-2.42.9000-14.fc44.ppc64le glibc-common-2.42.9000-14.fc44.ppc64le glibc-gconv-extra-2.42.9000-14.fc44.ppc64le glibc-minimal-langpack-2.42.9000-14.fc44.ppc64le gmp-6.3.0-4.fc44.ppc64le gnat-srpm-macros-6-8.fc43.noarch gnulib-l10n-20241231-1.fc44.noarch gnupg2-2.4.8-4.fc43.ppc64le gnupg2-dirmngr-2.4.8-4.fc43.ppc64le gnupg2-gpg-agent-2.4.8-4.fc43.ppc64le gnupg2-gpgconf-2.4.8-4.fc43.ppc64le gnupg2-keyboxd-2.4.8-4.fc43.ppc64le gnupg2-verify-2.4.8-4.fc43.ppc64le gnutls-3.8.11-6.fc44.ppc64le go-srpm-macros-3.8.0-1.fc44.noarch gpgverify-2.2-3.fc43.noarch grep-3.12-2.fc43.ppc64le gzip-1.14-1.fc44.ppc64le ima-evm-utils-libs-1.6.2-7.fc44.ppc64le info-7.2-6.fc43.ppc64le jansson-2.14-3.fc43.ppc64le java-srpm-macros-1-7.fc43.noarch json-c-0.18-7.fc43.ppc64le kernel-srpm-macros-1.0-27.fc43.noarch keyutils-libs-1.6.3-6.fc43.ppc64le krb5-libs-1.21.3-10.fc44.ppc64le libacl-2.3.2-4.fc43.ppc64le libarchive-3.8.3-1.fc44.ppc64le libassuan-2.5.7-4.fc43.ppc64le libattr-2.5.2-6.fc43.ppc64le libblkid-2.41.2-9.fc44.ppc64le libbrotli-1.1.0-10.fc44.ppc64le libcap-2.77-1.fc44.ppc64le libcap-ng-0.8.5-8.fc44.ppc64le libcom_err-1.47.3-3.fc44.ppc64le libcurl-8.17.0-4.fc44.ppc64le libeconf-0.7.9-2.fc43.ppc64le libevent-2.1.12-16.fc43.ppc64le libfdisk-2.41.2-9.fc44.ppc64le libffi-3.5.2-1.fc44.ppc64le libfsverity-1.6-3.fc43.ppc64le libgcc-15.2.1-4.fc44.ppc64le libgcrypt-1.11.2-1.fc44.ppc64le libgomp-15.2.1-4.fc44.ppc64le libgpg-error-1.56-1.fc44.ppc64le libidn2-2.3.8-2.fc43.ppc64le libksba-1.6.7-4.fc43.ppc64le liblastlog2-2.41.2-9.fc44.ppc64le libmount-2.41.2-9.fc44.ppc64le libnghttp2-1.68.0-2.fc44.ppc64le libpkgconf-2.3.0-3.fc43.ppc64le libpsl-0.21.5-6.fc43.ppc64le librtas-2.0.6-5.fc44.ppc64le libselinux-3.9-5.fc44.ppc64le libselinux-utils-3.9-5.fc44.ppc64le libsemanage-3.9-4.fc44.ppc64le libsepol-3.9-2.fc43.ppc64le libsmartcols-2.41.2-9.fc44.ppc64le libssh-0.11.3-1.fc44.ppc64le libssh-config-0.11.3-1.fc44.noarch libstdc++-15.2.1-4.fc44.ppc64le libtasn1-4.20.0-2.fc43.ppc64le libtool-ltdl-2.5.4-8.fc44.ppc64le libunistring-1.1-10.fc43.ppc64le libusb1-1.0.29-4.fc44.ppc64le libuuid-2.41.2-9.fc44.ppc64le libverto-0.3.2-11.fc43.ppc64le libxcrypt-4.5.2-1.fc44.ppc64le libxml2-2.12.10-5.fc44.ppc64le libzstd-1.5.7-3.fc44.ppc64le linkdupes-0.7.2-2.fc44.ppc64le lua-libs-5.4.8-4.fc44.ppc64le lua-srpm-macros-1-16.fc43.noarch lz4-libs-1.10.0-3.fc43.ppc64le mpfr-4.2.2-2.fc43.ppc64le ncurses-base-6.5-7.20250614.fc43.noarch ncurses-libs-6.5-7.20250614.fc43.ppc64le nettle-3.10.1-2.fc43.ppc64le npth-1.8-3.fc43.ppc64le ocaml-srpm-macros-11-2.fc43.noarch openblas-srpm-macros-2-20.fc43.noarch openldap-2.6.10-4.fc44.ppc64le openssl-libs-3.5.4-1.fc44.ppc64le p11-kit-0.25.8-1.fc44.ppc64le p11-kit-trust-0.25.8-1.fc44.ppc64le package-notes-srpm-macros-0.5-14.fc43.noarch pam-libs-1.7.1-3.fc43.ppc64le patch-2.8-2.fc43.ppc64le pcre2-10.47-1.fc44.ppc64le pcre2-syntax-10.47-1.fc44.noarch perl-srpm-macros-1-60.fc43.noarch pkgconf-2.3.0-3.fc43.ppc64le pkgconf-m4-2.3.0-3.fc43.noarch pkgconf-pkg-config-2.3.0-3.fc43.ppc64le policycoreutils-3.9-5.fc44.ppc64le popt-1.19-9.fc43.ppc64le publicsuffix-list-dafsa-20250616-2.fc43.noarch pyproject-srpm-macros-1.18.6-1.fc44.noarch python-srpm-macros-3.14-9.fc44.noarch qt5-srpm-macros-5.15.18-1.fc44.noarch qt6-srpm-macros-6.10.1-1.fc44.noarch readline-8.3-2.fc43.ppc64le redhat-rpm-config-343-16.fc44.noarch rpm-6.0.0-1.fc44.ppc64le rpm-build-6.0.0-1.fc44.ppc64le rpm-build-libs-6.0.0-1.fc44.ppc64le rpm-libs-6.0.0-1.fc44.ppc64le rpm-plugin-selinux-6.0.0-1.fc44.ppc64le rpm-sequoia-1.9.0-2.fc43.ppc64le rpm-sign-libs-6.0.0-1.fc44.ppc64le rust-srpm-macros-28.0-1.fc44.noarch sed-4.9-6.fc44.ppc64le selinux-policy-42.18-1.fc44.noarch selinux-policy-targeted-42.18-1.fc44.noarch setup-2.15.0-27.fc44.noarch shadow-utils-4.18.0-7.fc44.ppc64le sqlite-libs-3.51.0-1.fc44.ppc64le systemd-libs-259~rc2-2.fc44.ppc64le systemd-standalone-sysusers-259~rc2-2.fc44.ppc64le tar-1.35-6.fc43.ppc64le tpm2-tss-4.1.3-8.fc43.ppc64le tree-sitter-srpm-macros-0.4.2-1.fc43.noarch unzip-6.0-68.fc44.ppc64le util-linux-2.41.2-9.fc44.ppc64le util-linux-core-2.41.2-9.fc44.ppc64le which-2.23-3.fc43.ppc64le xxhash-libs-0.8.3-3.fc43.ppc64le xz-5.8.1-4.fc44.ppc64le xz-libs-5.8.1-4.fc44.ppc64le zig-srpm-macros-1-5.fc43.noarch zip-3.0-44.fc43.ppc64le zlib-ng-compat-2.3.2-1.fc44.ppc64le zstd-1.5.7-3.fc44.ppc64le Start: buildsrpm Start: rpmbuild -bs Building target platforms: ppc64le Building for target ppc64le setting SOURCE_DATE_EPOCH=1762819200 Wrote: /builddir/build/SRPMS/scipy-1.16.2-2.fc44.src.rpm Finish: rpmbuild -bs INFO: chroot_scan: 1 files copied to /var/lib/copr-rpmbuild/results/chroot_scan INFO: /var/lib/mock/fedora-42-ppc64le-1764958924.560307/root/var/log/dnf5.log INFO: chroot_scan: creating tarball /var/lib/copr-rpmbuild/results/chroot_scan.tar.gz /bin/tar: Removing leading `/' from member names Finish: buildsrpm INFO: Done(/var/lib/copr-rpmbuild/workspace/workdir-1hvy382r/scipy/scipy.spec) Config(child) 1 minutes 11 seconds INFO: Results and/or logs in: /var/lib/copr-rpmbuild/results INFO: Cleaning up build root ('cleanup_on_success=True') Start: clean chroot INFO: unmounting tmpfs. Finish: clean chroot INFO: Start(/var/lib/copr-rpmbuild/results/scipy-1.16.2-2.fc44.src.rpm) Config(fedora-42-ppc64le) Start(bootstrap): chroot init INFO: mounting tmpfs at /var/lib/mock/fedora-42-ppc64le-bootstrap-1764958924.560307/root. INFO: reusing tmpfs at /var/lib/mock/fedora-42-ppc64le-bootstrap-1764958924.560307/root. INFO: calling preinit hooks INFO: enabled root cache INFO: enabled package manager cache Start(bootstrap): cleaning package manager metadata Finish(bootstrap): cleaning package manager metadata Finish(bootstrap): chroot init Start: chroot init INFO: mounting tmpfs at /var/lib/mock/fedora-42-ppc64le-1764958924.560307/root. INFO: calling preinit hooks INFO: enabled root cache Start: unpacking root cache Finish: unpacking root cache INFO: enabled package manager cache Start: cleaning package manager metadata Finish: cleaning package manager metadata INFO: enabled HW Info plugin INFO: Buildroot is handled by package management downloaded with a bootstrap image: rpm-4.20.1-1.fc42.ppc64le rpm-sequoia-1.7.0-5.fc42.ppc64le dnf5-5.2.17.0-1.fc42.ppc64le dnf5-plugins-5.2.17.0-1.fc42.ppc64le Finish: chroot init Start: build phase for scipy-1.16.2-2.fc44.src.rpm Start: build setup for scipy-1.16.2-2.fc44.src.rpm Building target platforms: ppc64le Building for target ppc64le setting SOURCE_DATE_EPOCH=1762819200 Wrote: /builddir/build/SRPMS/scipy-1.16.2-2.fc44.src.rpm Updating and loading repositories: Additional repo http_kojipkgs_fedorapr 100% | 31.1 KiB/s | 3.8 KiB | 00m00s Copr repository 100% | 12.5 KiB/s | 1.5 KiB | 00m00s fedora 100% | 28.9 KiB/s | 6.1 KiB | 00m00s updates 100% | 47.5 KiB/s | 7.1 KiB | 00m00s Repositories loaded. Package Arch Version Repository Size Installing: flexiblas-devel ppc64le 3.5.0-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 6.0 MiB flexiblas-openblas-openmp ppc64le 3.5.0-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 66.9 KiB gcc-c++ ppc64le 15.2.1-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 38.6 MiB gcc-gfortran ppc64le 15.2.1-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 37.5 MiB pybind11-devel ppc64le 3.0-2.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.0 MiB pyproject-rpm-macros noarch 1.18.6-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 115.6 KiB python3-devel ppc64le 3.14.0-2.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.9 MiB python3-numpy-f2py ppc64le 1:2.3.5-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.1 MiB Installing dependencies: annobin-docs noarch 13.03-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 99.2 KiB annobin-plugin-gcc ppc64le 13.03-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 707.6 KiB cmake-filesystem ppc64le 3.31.6-4.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 0.0 B cpp ppc64le 15.2.1-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 34.6 MiB expat ppc64le 2.7.3-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 424.7 KiB flexiblas ppc64le 3.5.0-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 38.0 KiB flexiblas-netlib ppc64le 3.5.0-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 19.2 MiB flexiblas-netlib64 ppc64le 3.5.0-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 18.9 MiB flexiblas-openblas-openmp64 ppc64le 3.5.0-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 66.9 KiB gcc ppc64le 15.2.1-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 97.9 MiB gcc-plugin-annobin ppc64le 15.2.1-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 68.9 KiB glibc-devel ppc64le 2.42.9000-14.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 3.7 MiB kernel-headers ppc64le 6.18.0-65.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 6.7 MiB libasan ppc64le 15.2.1-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.1 MiB libatomic ppc64le 15.2.1-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 68.2 KiB libgfortran ppc64le 15.2.1-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 2.8 MiB libmpc ppc64le 1.3.1-8.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 281.6 KiB libquadmath ppc64le 15.2.1-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 426.5 KiB libquadmath-devel ppc64le 15.2.1-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 22.2 KiB libstdc++-devel ppc64le 15.2.1-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 37.0 MiB libubsan ppc64le 15.2.1-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 668.6 KiB libxcrypt-devel ppc64le 4.5.2-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 31.0 KiB make ppc64le 1:4.4.1-11.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.9 MiB mpdecimal ppc64le 4.0.1-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 281.2 KiB openblas ppc64le 0.3.29-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 111.7 KiB openblas-openmp ppc64le 0.3.29-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 23.2 MiB openblas-openmp64 ppc64le 0.3.29-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 23.0 MiB python-pip-wheel noarch 25.3-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.2 MiB python-rpm-macros noarch 3.14-9.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 27.6 KiB python3 ppc64le 3.14.0-2.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 84.8 KiB python3-libs ppc64le 3.14.0-2.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 46.2 MiB python3-numpy ppc64le 1:2.3.5-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 38.4 MiB python3-packaging noarch 25.0-7.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 607.4 KiB python3-rpm-generators noarch 14-13.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 81.7 KiB python3-rpm-macros noarch 3.14-9.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 6.5 KiB tzdata noarch 2025b-3.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.6 MiB Transaction Summary: Installing: 44 packages Total size of inbound packages is 122 MiB. Need to download 122 MiB. After this operation, 450 MiB extra will be used (install 450 MiB, remove 0 B). [ 1/44] flexiblas-openblas-openmp-0:3.5 100% | 113.7 KiB/s | 16.6 KiB | 00m00s [ 2/44] flexiblas-devel-0:3.5.0-1.fc44. 100% | 1.1 MiB/s | 225.3 KiB | 00m00s [ 3/44] pybind11-devel-0:3.0-2.fc44.ppc 100% | 3.3 MiB/s | 207.5 KiB | 00m00s [ 4/44] pyproject-rpm-macros-0:1.18.6-1 100% | 1.1 MiB/s | 44.6 KiB | 00m00s [ 5/44] python3-devel-0:3.14.0-2.fc44.p 100% | 4.7 MiB/s | 386.6 KiB | 00m00s [ 6/44] python3-numpy-f2py-1:2.3.5-1.fc 100% | 5.7 MiB/s | 464.7 KiB | 00m00s [ 7/44] gcc-c++-0:15.2.1-4.fc44.ppc64le 100% | 25.7 MiB/s | 13.7 MiB | 00m01s [ 8/44] libstdc++-devel-0:15.2.1-4.fc44 100% | 17.6 MiB/s | 5.1 MiB | 00m00s [ 9/44] gcc-gfortran-0:15.2.1-4.fc44.pp 100% | 18.0 MiB/s | 13.0 MiB | 00m01s [10/44] libgfortran-0:15.2.1-4.fc44.ppc 100% | 7.5 MiB/s | 686.5 KiB | 00m00s [11/44] libquadmath-0:15.2.1-4.fc44.ppc 100% | 4.5 MiB/s | 224.7 KiB | 00m00s [12/44] libquadmath-devel-0:15.2.1-4.fc 100% | 1.2 MiB/s | 47.4 KiB | 00m00s [13/44] python3-0:3.14.0-2.fc44.ppc64le 100% | 711.7 KiB/s | 27.8 KiB | 00m00s [14/44] python3-libs-0:3.14.0-2.fc44.pp 100% | 20.3 MiB/s | 9.6 MiB | 00m00s [15/44] cpp-0:15.2.1-4.fc44.ppc64le 100% | 19.9 MiB/s | 11.4 MiB | 00m01s [16/44] flexiblas-netlib-0:3.5.0-1.fc44 100% | 18.5 MiB/s | 4.4 MiB | 00m00s [17/44] python3-numpy-1:2.3.5-1.fc44.pp 100% | 18.4 MiB/s | 7.1 MiB | 00m00s [18/44] expat-0:2.7.3-1.fc44.ppc64le 100% | 2.3 MiB/s | 125.7 KiB | 00m00s [19/44] mpdecimal-0:4.0.1-2.fc43.ppc64l 100% | 1.8 MiB/s | 112.4 KiB | 00m00s [20/44] python-pip-wheel-0:25.3-1.fc44. 100% | 11.3 MiB/s | 1.1 MiB | 00m00s [21/44] tzdata-0:2025b-3.fc43.noarch 100% | 8.7 MiB/s | 429.3 KiB | 00m00s [22/44] python-rpm-macros-0:3.14-9.fc44 100% | 467.1 KiB/s | 19.6 KiB | 00m00s [23/44] python3-rpm-macros-0:3.14-9.fc4 100% | 311.9 KiB/s | 12.2 KiB | 00m00s [24/44] cmake-filesystem-0:3.31.6-4.fc4 100% | 375.8 KiB/s | 15.4 KiB | 00m00s [25/44] libmpc-0:1.3.1-8.fc43.ppc64le 100% | 2.3 MiB/s | 96.1 KiB | 00m00s [26/44] gcc-0:15.2.1-4.fc44.ppc64le 100% | 20.8 MiB/s | 34.9 MiB | 00m02s [27/44] glibc-devel-0:2.42.9000-14.fc44 100% | 3.8 MiB/s | 565.0 KiB | 00m00s [28/44] libasan-0:15.2.1-4.fc44.ppc64le 100% | 3.6 MiB/s | 546.2 KiB | 00m00s [29/44] libatomic-0:15.2.1-4.fc44.ppc64 100% | 1.1 MiB/s | 46.0 KiB | 00m00s [30/44] libubsan-0:15.2.1-4.fc44.ppc64l 100% | 6.0 MiB/s | 277.1 KiB | 00m00s [31/44] make-1:4.4.1-11.fc43.ppc64le 100% | 8.8 MiB/s | 595.2 KiB | 00m00s [32/44] flexiblas-0:3.5.0-1.fc44.ppc64l 100% | 575.1 KiB/s | 23.0 KiB | 00m00s [33/44] openblas-0:0.3.29-2.fc43.ppc64l 100% | 981.1 KiB/s | 42.2 KiB | 00m00s [34/44] kernel-headers-0:6.18.0-65.fc44 100% | 10.4 MiB/s | 1.5 MiB | 00m00s [35/44] libxcrypt-devel-0:4.5.2-1.fc44. 100% | 554.2 KiB/s | 29.9 KiB | 00m00s [36/44] flexiblas-netlib64-0:3.5.0-1.fc 100% | 15.2 MiB/s | 4.2 MiB | 00m00s [37/44] flexiblas-openblas-openmp64-0:3 100% | 326.4 KiB/s | 16.6 KiB | 00m00s [38/44] gcc-plugin-annobin-0:15.2.1-4.f 100% | 1.5 MiB/s | 61.3 KiB | 00m00s [39/44] python3-rpm-generators-0:14-13. 100% | 648.5 KiB/s | 28.5 KiB | 00m00s [40/44] openblas-openmp-0:0.3.29-2.fc43 100% | 11.9 MiB/s | 5.0 MiB | 00m00s [41/44] python3-packaging-0:25.0-7.fc44 100% | 3.5 MiB/s | 151.2 KiB | 00m00s [42/44] annobin-plugin-gcc-0:13.03-1.fc 100% | 10.3 MiB/s | 685.6 KiB | 00m00s [43/44] annobin-docs-0:13.03-1.fc44.noa 100% | 2.0 MiB/s | 89.4 KiB | 00m00s [44/44] openblas-openmp64-0:0.3.29-2.fc 100% | 15.0 MiB/s | 5.0 MiB | 00m00s -------------------------------------------------------------------------------- [44/44] Total 100% | 42.9 MiB/s | 122.1 MiB | 00m03s Running transaction [ 1/46] Verify package files 100% | 43.0 B/s | 44.0 B | 00m01s [ 2/46] Prepare transaction 100% | 278.0 B/s | 44.0 B | 00m00s [ 3/46] Installing libgfortran-0:15.2.1 100% | 167.1 MiB/s | 2.8 MiB | 00m00s [ 4/46] Installing libquadmath-0:15.2.1 100% | 104.4 MiB/s | 427.8 KiB | 00m00s [ 5/46] Installing libmpc-0:1.3.1-8.fc4 100% | 92.1 MiB/s | 283.1 KiB | 00m00s [ 6/46] Installing python-rpm-macros-0: 100% | 27.8 MiB/s | 28.5 KiB | 00m00s [ 7/46] Installing python3-rpm-macros-0 100% | 6.6 MiB/s | 6.8 KiB | 00m00s [ 8/46] Installing openblas-0:0.3.29-2. 100% | 55.4 MiB/s | 113.5 KiB | 00m00s [ 9/46] Installing openblas-openmp-0:0. 100% | 179.5 MiB/s | 23.2 MiB | 00m00s [10/46] Installing flexiblas-0:3.5.0-1. 100% | 38.2 MiB/s | 39.2 KiB | 00m00s [11/46] Installing flexiblas-netlib-0:3 100% | 132.4 MiB/s | 19.2 MiB | 00m00s [12/46] Installing flexiblas-openblas-o 100% | 66.1 MiB/s | 67.7 KiB | 00m00s [13/46] Installing openblas-openmp64-0: 100% | 180.9 MiB/s | 23.0 MiB | 00m00s [14/46] Installing flexiblas-netlib64-0 100% | 133.9 MiB/s | 18.9 MiB | 00m00s [15/46] Installing flexiblas-openblas-o 100% | 66.2 MiB/s | 67.8 KiB | 00m00s [16/46] Installing pyproject-rpm-macros 100% | 38.3 MiB/s | 117.5 KiB | 00m00s [17/46] Installing cpp-0:15.2.1-4.fc44. 100% | 132.2 MiB/s | 34.6 MiB | 00m00s [18/46] Installing annobin-docs-0:13.03 100% | 24.5 MiB/s | 100.3 KiB | 00m00s [19/46] Installing kernel-headers-0:6.1 100% | 64.4 MiB/s | 6.9 MiB | 00m00s [20/46] Installing libxcrypt-devel-0:4. 100% | 10.8 MiB/s | 33.3 KiB | 00m00s [21/46] Installing glibc-devel-0:2.42.9 100% | 74.8 MiB/s | 3.7 MiB | 00m00s [22/46] Installing make-1:4.4.1-11.fc43 100% | 39.9 MiB/s | 1.9 MiB | 00m00s [23/46] Installing libubsan-0:15.2.1-4. 100% | 130.7 MiB/s | 669.3 KiB | 00m00s [24/46] Installing libatomic-0:15.2.1-4 100% | 67.3 MiB/s | 68.9 KiB | 00m00s [25/46] Installing libasan-0:15.2.1-4.f 100% | 150.3 MiB/s | 2.1 MiB | 00m00s [26/46] Installing gcc-0:15.2.1-4.fc44. 100% | 153.9 MiB/s | 97.9 MiB | 00m01s [27/46] Installing libquadmath-devel-0: 100% | 11.5 MiB/s | 23.6 KiB | 00m00s [28/46] Installing cmake-filesystem-0:3 100% | 948.7 KiB/s | 7.6 KiB | 00m00s [29/46] Installing tzdata-0:2025b-3.fc4 100% | 17.4 MiB/s | 1.9 MiB | 00m00s [30/46] Installing python-pip-wheel-0:2 100% | 200.7 MiB/s | 1.2 MiB | 00m00s [31/46] Installing mpdecimal-0:4.0.1-2. 100% | 92.1 MiB/s | 282.8 KiB | 00m00s [32/46] Installing expat-0:2.7.3-1.fc44 100% | 9.7 MiB/s | 426.8 KiB | 00m00s [33/46] Installing python3-libs-0:3.14. 100% | 124.6 MiB/s | 46.6 MiB | 00m00s [34/46] Installing python3-0:3.14.0-2.f 100% | 2.4 MiB/s | 86.5 KiB | 00m00s [35/46] Installing python3-numpy-f2py-1 100% | 30.6 MiB/s | 2.2 MiB | 00m00s [36/46] Installing python3-numpy-1:2.3. 100% | 122.0 MiB/s | 38.7 MiB | 00m00s [37/46] Installing python3-packaging-0: 100% | 75.7 MiB/s | 619.9 KiB | 00m00s [38/46] Installing python3-rpm-generato 100% | 20.2 MiB/s | 82.9 KiB | 00m00s [39/46] Installing libstdc++-devel-0:15 100% | 161.5 MiB/s | 37.1 MiB | 00m00s [40/46] Installing gcc-c++-0:15.2.1-4.f 100% | 136.4 MiB/s | 38.6 MiB | 00m00s [41/46] Installing python3-devel-0:3.14 100% | 32.6 MiB/s | 2.0 MiB | 00m00s [42/46] Installing pybind11-devel-0:3.0 100% | 23.9 MiB/s | 1.0 MiB | 00m00s [43/46] Installing gcc-gfortran-0:15.2. 100% | 134.3 MiB/s | 37.5 MiB | 00m00s [44/46] Installing gcc-plugin-annobin-0 100% | 3.6 MiB/s | 70.6 KiB | 00m00s [45/46] Installing annobin-plugin-gcc-0 100% | 31.5 MiB/s | 709.2 KiB | 00m00s [46/46] Installing flexiblas-devel-0:3. 100% | 21.6 MiB/s | 6.0 MiB | 00m00s Warning: skipped OpenPGP checks for 44 packages from repository: http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch Complete! Finish: build setup for scipy-1.16.2-2.fc44.src.rpm Start: rpmbuild scipy-1.16.2-2.fc44.src.rpm Building target platforms: ppc64le Building for target ppc64le setting SOURCE_DATE_EPOCH=1762819200 Executing(%mkbuilddir): /bin/sh -e /var/tmp/rpm-tmp.U9HSOE Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.8I01eD + umask 022 + cd /builddir/build/BUILD/scipy-1.16.2-build + cd /builddir/build/BUILD/scipy-1.16.2-build + rm -rf scipy-1.16.2 + /usr/lib/rpm/rpmuncompress -x /builddir/build/SOURCES/scipy-1.16.2.tar.gz + STATUS=0 + '[' 0 -ne 0 ']' + cd scipy-1.16.2 + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + sed -i 's/pythran>=0.14.0,<0.18.0/pythran>=0.14.0/' pyproject.toml ++ grep -rl '/\* Generated by Cython' + rm PKG-INFO + sed -Ei '/^[[:blank:]]*"(asv|pytest-cov|pytest-timeout)"/d' pyproject.toml + sed -i '/^[[:blank:]]*"scikit-umfpack"/d' pyproject.toml + sed -i '/numpy/s/,<2\.3//' pyproject.toml + sed -i '/array-api-strict/s/>=2\.3\.1/>=2/' pyproject.toml + sed -i '/Cython/s/,<[0-9.]\+//' pyproject.toml + RPM_EC=0 ++ jobs -p + exit 0 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.u8gajd + umask 022 + cd /builddir/build/BUILD/scipy-1.16.2-build + cd scipy-1.16.2 + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(packaging)' + echo 'python3dist(pip) >= 19' + '[' -f pyproject.toml ']' + echo '(python3dist(tomli) if python3-devel < 3.11)' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/scipy-1.16.2-build/.pyproject-builddir + echo -n + CFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection ' + CXXFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection ' + FFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib64/gfortran/modules ' + FCFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib64/gfortran/modules ' + VALAFLAGS=-g + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Clink-arg=-specs=/usr/lib/rpm/redhat/redhat-package-notes --cap-lints=warn' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + LT_SYS_LIBRARY_PATH=/usr/lib64: + CC=gcc + CXX=g++ + TMPDIR=/builddir/build/BUILD/scipy-1.16.2-build/.pyproject-builddir + RPM_TOXENV=py314 + FEDORA=44 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/scipy-1.16.2-build/pyproject-wheeldir --output /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2-2.fc44.ppc64le-pyproject-buildrequires -p -x test -Csetup-args=-Dblas=flexiblas -Csetup-args=-Dlapack=flexiblas Handling meson-python>=0.15.0,<0.21.0 from build-system.requires Requirement not satisfied: meson-python>=0.15.0,<0.21.0 Handling Cython>=3.0.8 from build-system.requires Requirement not satisfied: Cython>=3.0.8 Handling pybind11>=2.13.2,<3.1.0 from build-system.requires Requirement not satisfied: pybind11>=2.13.2,<3.1.0 Handling pythran>=0.14.0,<0.19.0 from build-system.requires Requirement not satisfied: pythran>=0.14.0,<0.19.0 Handling numpy>=2.0.0,<2.6 from build-system.requires Requirement satisfied: numpy>=2.0.0,<2.6 (installed: numpy 2.3.5) Exiting dependency generation pass: build backend + cat /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2-2.fc44.ppc64le-pyproject-buildrequires + rm -rfv '*.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/scipy-1.16.2-2.fc44.buildreqs.nosrc.rpm INFO: Going to install missing dynamic buildrequires Updating and loading repositories: Additional repo http_kojipkgs_fedorapr 100% | 37.2 KiB/s | 3.8 KiB | 00m00s Copr repository 100% | 14.8 KiB/s | 1.5 KiB | 00m00s fedora 100% | 36.2 KiB/s | 6.1 KiB | 00m00s updates 100% | 54.1 KiB/s | 7.1 KiB | 00m00s Repositories loaded. Package "flexiblas-devel-3.5.0-1.fc44.ppc64le" is already installed. Package "flexiblas-openblas-openmp-3.5.0-1.fc44.ppc64le" is already installed. Package "gcc-c++-15.2.1-4.fc44.ppc64le" is already installed. Package "gcc-gfortran-15.2.1-4.fc44.ppc64le" is already installed. Package "pybind11-devel-3.0-2.fc44.ppc64le" is already installed. Package "pyproject-rpm-macros-1.18.6-1.fc44.noarch" is already installed. Package "pyproject-rpm-macros-1.18.6-1.fc44.noarch" is already installed. Package "python3-devel-3.14.0-2.fc44.ppc64le" is already installed. Package "python3-numpy-f2py-1:2.3.5-1.fc44.ppc64le" is already installed. Package "python3-packaging-25.0-7.fc44.noarch" is already installed. Package Arch Version Repository Size Installing: python3-cython ppc64le 3.1.6-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 20.0 MiB python3-meson-python noarch 0.18.0-7.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 326.5 KiB python3-pip noarch 25.3-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 11.2 MiB python3-pybind11 ppc64le 3.0-2.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 65.4 KiB pythran ppc64le 0.18.0-7.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 6.0 MiB Installing dependencies: boost ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.3 KiB boost-atomic ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 68.6 KiB boost-chrono ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 69.2 KiB boost-container ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 133.2 KiB boost-context ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 68.1 KiB boost-contract ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 134.5 KiB boost-coroutine ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 68.9 KiB boost-date-time ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 67.9 KiB boost-devel ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 143.0 MiB boost-fiber ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 134.1 KiB boost-filesystem ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 198.6 KiB boost-graph ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 461.9 KiB boost-iostreams ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 134.0 KiB boost-json ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 392.2 KiB boost-locale ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 787.7 KiB boost-log ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.9 MiB boost-math ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.3 MiB boost-nowide ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 68.7 KiB boost-numpy3 ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 69.3 KiB boost-program-options ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 331.3 KiB boost-python3 ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 397.3 KiB boost-random ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 69.4 KiB boost-regex ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 394.2 KiB boost-serialization ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 531.1 KiB boost-stacktrace ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 203.1 KiB boost-system ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 67.9 KiB boost-test ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 792.4 KiB boost-thread ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 200.1 KiB boost-timer ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 69.8 KiB boost-type_erasure ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 69.9 KiB boost-wave ppc64le 1.83.0-17.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.0 MiB libicu ppc64le 77.1-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 37.8 MiB libicu-devel ppc64le 77.1-1.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 5.1 MiB meson noarch 1.9.1-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 13.2 MiB ninja-build ppc64le 1.13.1-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 531.9 KiB patchelf ppc64le 0.18.0-9.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 370.9 KiB python3-beniget noarch 0.4.2.post1-6.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 252.5 KiB python3-gast noarch 0.6.0-6.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 306.4 KiB python3-ply noarch 3.11-30.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 575.2 KiB python3-pyproject-metadata noarch 0.10.0-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 207.7 KiB python3-setuptools noarch 80.9.0-2.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 8.6 MiB vim-filesystem noarch 2:9.1.1952-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 40.0 B xsimd-devel noarch 13.2.0-2.fc43 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.4 MiB Transaction Summary: Installing: 48 packages Total size of inbound packages is 39 MiB. Need to download 39 MiB. After this operation, 259 MiB extra will be used (install 259 MiB, remove 0 B). [ 1/48] python3-pybind11-0:3.0-2.fc44.p 100% | 258.2 KiB/s | 35.1 KiB | 00m00s [ 2/48] python3-meson-python-0:0.18.0-7 100% | 533.0 KiB/s | 88.5 KiB | 00m00s [ 3/48] pythran-0:0.18.0-7.fc44.ppc64le 100% | 4.1 MiB/s | 1.2 MiB | 00m00s [ 4/48] python3-cython-0:3.1.6-1.fc44.p 100% | 16.0 MiB/s | 3.9 MiB | 00m00s [ 5/48] python3-pip-0:25.3-1.fc44.noarc 100% | 10.8 MiB/s | 2.4 MiB | 00m00s [ 6/48] meson-0:1.9.1-4.fc44.noarch 100% | 20.1 MiB/s | 2.3 MiB | 00m00s [ 7/48] python3-pyproject-metadata-0:0. 100% | 1.2 MiB/s | 55.7 KiB | 00m00s [ 8/48] python3-beniget-0:0.4.2.post1-6 100% | 1.3 MiB/s | 57.7 KiB | 00m00s [ 9/48] python3-gast-0:0.6.0-6.fc44.noa 100% | 1.6 MiB/s | 69.1 KiB | 00m00s [10/48] python3-ply-0:3.11-30.fc44.noar 100% | 2.8 MiB/s | 132.3 KiB | 00m00s [11/48] ninja-build-0:1.13.1-4.fc44.ppc 100% | 4.6 MiB/s | 204.7 KiB | 00m00s [12/48] python3-setuptools-0:80.9.0-2.f 100% | 24.2 MiB/s | 1.8 MiB | 00m00s [13/48] xsimd-devel-0:13.2.0-2.fc43.noa 100% | 2.9 MiB/s | 147.2 KiB | 00m00s [14/48] patchelf-0:0.18.0-9.fc43.ppc64l 100% | 3.2 MiB/s | 133.0 KiB | 00m00s [15/48] vim-filesystem-2:9.1.1952-1.fc4 100% | 357.8 KiB/s | 15.4 KiB | 00m00s [16/48] boost-0:1.83.0-17.fc44.ppc64le 100% | 248.8 KiB/s | 11.7 KiB | 00m00s [17/48] boost-numpy3-0:1.83.0-17.fc44.p 100% | 552.1 KiB/s | 27.6 KiB | 00m00s [18/48] libicu-devel-0:77.1-1.fc43.ppc6 100% | 11.5 MiB/s | 753.4 KiB | 00m00s [19/48] boost-atomic-0:1.83.0-17.fc44.p 100% | 387.2 KiB/s | 17.0 KiB | 00m00s [20/48] boost-devel-0:1.83.0-17.fc44.pp 100% | 38.7 MiB/s | 11.7 MiB | 00m00s [21/48] boost-chrono-0:1.83.0-17.fc44.p 100% | 354.6 KiB/s | 23.4 KiB | 00m00s [22/48] boost-container-0:1.83.0-17.fc4 100% | 919.2 KiB/s | 39.5 KiB | 00m00s [23/48] boost-context-0:1.83.0-17.fc44. 100% | 332.8 KiB/s | 14.6 KiB | 00m00s [24/48] libicu-0:77.1-1.fc43.ppc64le 100% | 45.5 MiB/s | 10.9 MiB | 00m00s [25/48] boost-coroutine-0:1.83.0-17.fc4 100% | 247.5 KiB/s | 18.1 KiB | 00m00s [26/48] boost-contract-0:1.83.0-17.fc44 100% | 579.0 KiB/s | 44.6 KiB | 00m00s [27/48] boost-date-time-0:1.83.0-17.fc4 100% | 351.4 KiB/s | 13.4 KiB | 00m00s [28/48] boost-fiber-0:1.83.0-17.fc44.pp 100% | 1.0 MiB/s | 42.0 KiB | 00m00s [29/48] boost-filesystem-0:1.83.0-17.fc 100% | 1.6 MiB/s | 67.4 KiB | 00m00s [30/48] boost-graph-0:1.83.0-17.fc44.pp 100% | 3.6 MiB/s | 159.5 KiB | 00m00s [31/48] boost-iostreams-0:1.83.0-17.fc4 100% | 917.8 KiB/s | 38.5 KiB | 00m00s [32/48] boost-json-0:1.83.0-17.fc44.ppc 100% | 3.5 MiB/s | 156.0 KiB | 00m00s [33/48] boost-locale-0:1.83.0-17.fc44.p 100% | 5.7 MiB/s | 234.4 KiB | 00m00s [34/48] boost-log-0:1.83.0-17.fc44.ppc6 100% | 10.6 MiB/s | 530.6 KiB | 00m00s [35/48] boost-math-0:1.83.0-17.fc44.ppc 100% | 6.1 MiB/s | 314.5 KiB | 00m00s [36/48] boost-nowide-0:1.83.0-17.fc44.p 100% | 478.0 KiB/s | 18.6 KiB | 00m00s [37/48] boost-program-options-0:1.83.0- 100% | 2.6 MiB/s | 113.6 KiB | 00m00s [38/48] boost-python3-0:1.83.0-17.fc44. 100% | 2.8 MiB/s | 119.0 KiB | 00m00s [39/48] boost-random-0:1.83.0-17.fc44.p 100% | 554.0 KiB/s | 22.2 KiB | 00m00s [40/48] boost-regex-0:1.83.0-17.fc44.pp 100% | 2.9 MiB/s | 126.4 KiB | 00m00s [41/48] boost-stacktrace-0:1.83.0-17.fc 100% | 719.4 KiB/s | 28.8 KiB | 00m00s [42/48] boost-serialization-0:1.83.0-17 100% | 3.1 MiB/s | 134.1 KiB | 00m00s [43/48] boost-system-0:1.83.0-17.fc44.p 100% | 334.2 KiB/s | 13.4 KiB | 00m00s [44/48] boost-test-0:1.83.0-17.fc44.ppc 100% | 5.1 MiB/s | 246.0 KiB | 00m00s [45/48] boost-thread-0:1.83.0-17.fc44.p 100% | 1.3 MiB/s | 60.7 KiB | 00m00s [46/48] boost-timer-0:1.83.0-17.fc44.pp 100% | 941.8 KiB/s | 38.6 KiB | 00m00s [47/48] boost-type_erasure-0:1.83.0-17. 100% | 617.0 KiB/s | 31.5 KiB | 00m00s [48/48] boost-wave-0:1.83.0-17.fc44.ppc 100% | 4.5 MiB/s | 249.3 KiB | 00m00s -------------------------------------------------------------------------------- [48/48] Total 100% | 31.8 MiB/s | 38.8 MiB | 00m01s Running transaction [ 1/50] Verify package files 100% | 141.0 B/s | 48.0 B | 00m00s [ 2/50] Prepare transaction 100% | 134.0 B/s | 48.0 B | 00m00s [ 3/50] Installing boost-system-0:1.83. 100% | 33.6 MiB/s | 68.9 KiB | 00m00s [ 4/50] Installing boost-chrono-0:1.83. 100% | 68.6 MiB/s | 70.2 KiB | 00m00s [ 5/50] Installing boost-thread-0:1.83. 100% | 98.2 MiB/s | 201.1 KiB | 00m00s [ 6/50] Installing libicu-0:77.1-1.fc43 100% | 158.4 MiB/s | 37.8 MiB | 00m00s [ 7/50] Installing boost-regex-0:1.83.0 100% | 96.5 MiB/s | 395.2 KiB | 00m00s [ 8/50] Installing boost-context-0:1.83 100% | 67.5 MiB/s | 69.1 KiB | 00m00s [ 9/50] Installing boost-atomic-0:1.83. 100% | 68.0 MiB/s | 69.6 KiB | 00m00s [10/50] Installing boost-filesystem-0:1 100% | 97.5 MiB/s | 199.6 KiB | 00m00s [11/50] Installing boost-python3-0:1.83 100% | 129.6 MiB/s | 398.3 KiB | 00m00s [12/50] Installing boost-date-time-0:1. 100% | 67.3 MiB/s | 68.9 KiB | 00m00s [13/50] Installing boost-container-0:1. 100% | 65.5 MiB/s | 134.2 KiB | 00m00s [14/50] Installing python3-gast-0:0.6.0 100% | 61.0 MiB/s | 312.1 KiB | 00m00s [15/50] Installing python3-beniget-0:0. 100% | 62.8 MiB/s | 257.2 KiB | 00m00s [16/50] Installing boost-json-0:1.83.0- 100% | 128.0 MiB/s | 393.2 KiB | 00m00s [17/50] Installing boost-wave-0:1.83.0- 100% | 146.1 MiB/s | 1.0 MiB | 00m00s [18/50] Installing boost-numpy3-0:1.83. 100% | 68.6 MiB/s | 70.3 KiB | 00m00s [19/50] Installing boost-fiber-0:1.83.0 100% | 66.0 MiB/s | 135.1 KiB | 00m00s [20/50] Installing boost-log-0:1.83.0-1 100% | 160.6 MiB/s | 1.9 MiB | 00m00s [21/50] Installing boost-coroutine-0:1. 100% | 68.3 MiB/s | 69.9 KiB | 00m00s [22/50] Installing boost-graph-0:1.83.0 100% | 90.4 MiB/s | 462.9 KiB | 00m00s [23/50] Installing libicu-devel-0:77.1- 100% | 68.5 MiB/s | 5.1 MiB | 00m00s [24/50] Installing boost-locale-0:1.83. 100% | 128.4 MiB/s | 788.7 KiB | 00m00s [25/50] Installing boost-type_erasure-0 100% | 34.6 MiB/s | 70.9 KiB | 00m00s [26/50] Installing boost-timer-0:1.83.0 100% | 69.0 MiB/s | 70.6 KiB | 00m00s [27/50] Installing boost-test-0:1.83.0- 100% | 129.2 MiB/s | 793.7 KiB | 00m00s [28/50] Installing boost-stacktrace-0:1 100% | 100.0 MiB/s | 204.9 KiB | 00m00s [29/50] Installing boost-serialization- 100% | 130.0 MiB/s | 532.6 KiB | 00m00s [30/50] Installing boost-random-0:1.83. 100% | 68.7 MiB/s | 70.4 KiB | 00m00s [31/50] Installing boost-program-option 100% | 108.1 MiB/s | 332.2 KiB | 00m00s [32/50] Installing boost-nowide-0:1.83. 100% | 68.1 MiB/s | 69.7 KiB | 00m00s [33/50] Installing boost-math-0:1.83.0- 100% | 150.1 MiB/s | 1.4 MiB | 00m00s [34/50] Installing boost-iostreams-0:1. 100% | 65.9 MiB/s | 135.0 KiB | 00m00s [35/50] Installing boost-contract-0:1.8 100% | 66.2 MiB/s | 135.5 KiB | 00m00s [36/50] Installing boost-0:1.83.0-17.fc 100% | 39.1 KiB/s | 1.7 KiB | 00m00s [37/50] Installing boost-devel-0:1.83.0 100% | 80.2 MiB/s | 145.8 MiB | 00m02s [38/50] Installing vim-filesystem-2:9.1 100% | 2.3 MiB/s | 4.7 KiB | 00m00s [39/50] Installing ninja-build-0:1.13.1 100% | 13.1 MiB/s | 535.0 KiB | 00m00s [40/50] Installing meson-0:1.9.1-4.fc44 100% | 87.8 MiB/s | 13.4 MiB | 00m00s [41/50] Installing patchelf-0:0.18.0-9. 100% | 10.4 MiB/s | 372.7 KiB | 00m00s [42/50] Installing xsimd-devel-0:13.2.0 100% | 84.0 MiB/s | 1.4 MiB | 00m00s [43/50] Installing python3-setuptools-0 100% | 76.4 MiB/s | 8.8 MiB | 00m00s [44/50] Installing python3-ply-0:3.11-3 100% | 113.4 MiB/s | 580.4 KiB | 00m00s [45/50] Installing python3-pyproject-me 100% | 69.3 MiB/s | 212.9 KiB | 00m00s [46/50] Installing python3-meson-python 100% | 29.5 MiB/s | 332.5 KiB | 00m00s [47/50] Installing pythran-0:0.18.0-7.f 100% | 26.6 MiB/s | 6.4 MiB | 00m00s [48/50] Installing python3-pip-0:25.3-1 100% | 55.8 MiB/s | 11.5 MiB | 00m00s [49/50] Installing python3-cython-0:3.1 100% | 103.4 MiB/s | 20.2 MiB | 00m00s [50/50] Installing python3-pybind11-0:3 100% | 728.6 KiB/s | 69.9 KiB | 00m00s Warning: skipped OpenPGP checks for 48 packages from repository: http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch Complete! Building target platforms: ppc64le Building for target ppc64le setting SOURCE_DATE_EPOCH=1762819200 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.k1vIBH + umask 022 + cd /builddir/build/BUILD/scipy-1.16.2-build + cd scipy-1.16.2 + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(packaging)' + echo 'python3dist(pip) >= 19' + '[' -f pyproject.toml ']' + echo '(python3dist(tomli) if python3-devel < 3.11)' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/scipy-1.16.2-build/.pyproject-builddir + echo -n + CFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection ' + CXXFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection ' + FFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib64/gfortran/modules ' + FCFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib64/gfortran/modules ' + VALAFLAGS=-g + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Clink-arg=-specs=/usr/lib/rpm/redhat/redhat-package-notes --cap-lints=warn' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + LT_SYS_LIBRARY_PATH=/usr/lib64: + CC=gcc + CXX=g++ + TMPDIR=/builddir/build/BUILD/scipy-1.16.2-build/.pyproject-builddir + RPM_TOXENV=py314 + FEDORA=44 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/scipy-1.16.2-build/pyproject-wheeldir --output /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2-2.fc44.ppc64le-pyproject-buildrequires -p -x test -Csetup-args=-Dblas=flexiblas -Csetup-args=-Dlapack=flexiblas Handling meson-python>=0.15.0,<0.21.0 from build-system.requires Requirement satisfied: meson-python>=0.15.0,<0.21.0 (installed: meson-python 0.18.0) Handling Cython>=3.0.8 from build-system.requires Requirement satisfied: Cython>=3.0.8 (installed: Cython 3.1.6) Handling pybind11>=2.13.2,<3.1.0 from build-system.requires Requirement satisfied: pybind11>=2.13.2,<3.1.0 (installed: pybind11 3.0.0) Handling pythran>=0.14.0,<0.19.0 from build-system.requires Requirement satisfied: pythran>=0.14.0,<0.19.0 (installed: pythran 0.18.0) Handling numpy>=2.0.0,<2.6 from build-system.requires Requirement satisfied: numpy>=2.0.0,<2.6 (installed: numpy 2.3.5) Handling numpy>=1.25.2,<2.6 from pyproject.toml generated metadata: [dependencies] (scipy) Requirement satisfied: numpy>=1.25.2,<2.6 (installed: numpy 2.3.5) Handling pytest>=8.0.0 from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement not satisfied: pytest>=8.0.0 Handling pytest-xdist from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement not satisfied: pytest-xdist Handling mpmath from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement not satisfied: mpmath Handling gmpy2 from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement not satisfied: gmpy2 Handling threadpoolctl from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement not satisfied: threadpoolctl Handling pooch from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement not satisfied: pooch Handling hypothesis>=6.30 from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement not satisfied: hypothesis>=6.30 Handling array-api-strict>=2 from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement not satisfied: array-api-strict>=2 Handling Cython from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement satisfied: Cython (installed: Cython 3.1.6) Handling meson from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement satisfied: meson (installed: meson 1.9.1) Handling ninja; sys_platform != "emscripten" from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement not satisfied: ninja; sys_platform != "emscripten" Handling sphinx>=5.0.0,<8.2.0 from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: sphinx>=5.0.0,<8.2.0 Handling intersphinx_registry from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: intersphinx_registry Handling pydata-sphinx-theme>=0.15.2 from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: pydata-sphinx-theme>=0.15.2 Handling sphinx-copybutton from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: sphinx-copybutton Handling sphinx-design>=0.4.0 from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: sphinx-design>=0.4.0 Handling matplotlib>=3.5 from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: matplotlib>=3.5 Handling numpydoc from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: numpydoc Handling jupytext from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: jupytext Handling myst-nb>=1.2.0 from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: myst-nb>=1.2.0 Handling pooch from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: pooch Handling jupyterlite-sphinx>=0.19.1 from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: jupyterlite-sphinx>=0.19.1 Handling jupyterlite-pyodide-kernel from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: jupyterlite-pyodide-kernel Handling linkify-it-py from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: linkify-it-py Handling mypy==1.10.0 from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: mypy==1.10.0 Handling typing_extensions from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: typing_extensions Handling types-psutil from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: types-psutil Handling pycodestyle from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: pycodestyle Handling ruff>=0.0.292 from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: ruff>=0.0.292 Handling cython-lint>=0.12.2 from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: cython-lint>=0.12.2 Handling rich-click from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: rich-click Handling doit>=0.36.0 from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: doit>=0.36.0 Handling pydevtool from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: pydevtool + cat /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2-2.fc44.ppc64le-pyproject-buildrequires + rm -rfv '*.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/scipy-1.16.2-2.fc44.buildreqs.nosrc.rpm INFO: Going to install missing dynamic buildrequires Updating and loading repositories: Additional repo http_kojipkgs_fedorapr 100% | 33.3 KiB/s | 3.8 KiB | 00m00s Copr repository 100% | 13.4 KiB/s | 1.5 KiB | 00m00s fedora 100% | 34.5 KiB/s | 6.1 KiB | 00m00s updates 100% | 49.9 KiB/s | 7.1 KiB | 00m00s Repositories loaded. Package "flexiblas-devel-3.5.0-1.fc44.ppc64le" is already installed. Package "flexiblas-openblas-openmp-3.5.0-1.fc44.ppc64le" is already installed. Package "gcc-c++-15.2.1-4.fc44.ppc64le" is already installed. Package "gcc-gfortran-15.2.1-4.fc44.ppc64le" is already installed. Package "pybind11-devel-3.0-2.fc44.ppc64le" is already installed. Package "pyproject-rpm-macros-1.18.6-1.fc44.noarch" is already installed. Package "pyproject-rpm-macros-1.18.6-1.fc44.noarch" is already installed. Package "python3-devel-3.14.0-2.fc44.ppc64le" is already installed. Package "python3-numpy-f2py-1:2.3.5-1.fc44.ppc64le" is already installed. Package "python3-cython-3.1.6-1.fc44.ppc64le" is already installed. Package "python3-cython-3.1.6-1.fc44.ppc64le" is already installed. Package "meson-1.9.1-4.fc44.noarch" is already installed. Package "python3-packaging-25.0-7.fc44.noarch" is already installed. Package "python3-pip-25.3-1.fc44.noarch" is already installed.Package Arch Version Repository Size Installing: python3-array-api-strict noarch 2.0.1-7.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 694.1 KiB python3-gmpy2 ppc64le 2.2.2-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.1 MiB python3-hypothesis noarch 6.123.0-7.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 5.0 MiB python3-mpmath noarch 1.3.0-16.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 5.3 MiB python3-ninja noarch 1.13.1-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 290.0 B python3-pooch noarch 1.8.2-9.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 635.2 KiB python3-pytest noarch 8.4.2-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 22.5 MiB python3-pytest-xdist noarch 3.7.0-5.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 468.4 KiB python3-threadpoolctl noarch 3.5.0-10.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 137.4 KiB Installing dependencies: python3-attrs noarch 25.4.0-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 436.8 KiB python3-charset-normalizer noarch 3.4.4-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 356.2 KiB python3-execnet noarch 2.1.2-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 970.1 KiB python3-idna noarch 3.11-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 738.4 KiB python3-iniconfig noarch 2.3.0-1.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 49.3 KiB python3-platformdirs noarch 4.4.0-2.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 182.4 KiB python3-pluggy noarch 1.6.0-4.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 211.0 KiB python3-pygments noarch 2.19.1-7.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 11.3 MiB python3-requests noarch 2.32.5-2.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 476.9 KiB python3-sortedcontainers noarch 2.4.0-25.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 392.9 KiB python3-urllib3 noarch 2.5.0-3.fc44 http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch 1.1 MiB Transaction Summary: Installing: 20 packages Total size of inbound packages is 9 MiB. Need to download 9 MiB. After this operation, 52 MiB extra will be used (install 52 MiB, remove 0 B). [ 1/20] python3-array-api-strict-0:2.0. 100% | 865.7 KiB/s | 146.3 KiB | 00m00s [ 2/20] python3-gmpy2-0:2.2.2-1.fc44.pp 100% | 1.3 MiB/s | 253.3 KiB | 00m00s [ 3/20] python3-ninja-0:1.13.1-4.fc44.n 100% | 204.4 KiB/s | 9.2 KiB | 00m00s [ 4/20] python3-pooch-0:1.8.2-9.fc44.no 100% | 2.6 MiB/s | 127.1 KiB | 00m00s [ 5/20] python3-hypothesis-0:6.123.0-7. 100% | 3.8 MiB/s | 1.2 MiB | 00m00s [ 6/20] python3-mpmath-0:1.3.0-16.fc44. 100% | 6.9 MiB/s | 1.1 MiB | 00m00s [ 7/20] python3-pytest-xdist-0:3.7.0-5. 100% | 2.4 MiB/s | 107.5 KiB | 00m00s [ 8/20] python3-threadpoolctl-0:3.5.0-1 100% | 1.0 MiB/s | 45.0 KiB | 00m00s [ 9/20] python3-attrs-0:25.4.0-1.fc44.n 100% | 2.7 MiB/s | 128.4 KiB | 00m00s [10/20] python3-platformdirs-0:4.4.0-2. 100% | 866.0 KiB/s | 44.2 KiB | 00m00s [11/20] python3-requests-0:2.32.5-2.fc4 100% | 2.5 MiB/s | 150.2 KiB | 00m00s [12/20] python3-iniconfig-0:2.3.0-1.fc4 100% | 465.0 KiB/s | 26.0 KiB | 00m00s [13/20] python3-pytest-0:8.4.2-1.fc44.n 100% | 10.4 MiB/s | 2.2 MiB | 00m00s [14/20] python3-pluggy-0:1.6.0-4.fc44.n 100% | 1.1 MiB/s | 56.1 KiB | 00m00s [15/20] python3-execnet-0:2.1.2-1.fc44. 100% | 5.1 MiB/s | 250.0 KiB | 00m00s [16/20] python3-charset-normalizer-0:3. 100% | 2.1 MiB/s | 109.6 KiB | 00m00s [17/20] python3-pygments-0:2.19.1-7.fc4 100% | 19.3 MiB/s | 2.5 MiB | 00m00s [18/20] python3-idna-0:3.11-1.fc44.noar 100% | 2.0 MiB/s | 119.3 KiB | 00m00s [19/20] python3-urllib3-0:2.5.0-3.fc44. 100% | 4.9 MiB/s | 278.6 KiB | 00m00s [20/20] python3-sortedcontainers-0:2.4. 100% | 1.3 MiB/s | 63.9 KiB | 00m00s -------------------------------------------------------------------------------- [20/20] Total 100% | 13.3 MiB/s | 8.8 MiB | 00m01s Running transaction [ 1/22] Verify package files 100% | 263.0 B/s | 20.0 B | 00m00s [ 2/22] Prepare transaction 100% | 173.0 B/s | 20.0 B | 00m00s [ 3/22] Installing python3-idna-0:3.11- 100% | 90.9 MiB/s | 744.9 KiB | 00m00s [ 4/22] Installing python3-urllib3-0:2. 100% | 79.4 MiB/s | 1.1 MiB | 00m00s [ 5/22] Installing python3-sortedcontai 100% | 77.6 MiB/s | 397.3 KiB | 00m00s [ 6/22] Installing python3-charset-norm 100% | 9.2 MiB/s | 366.4 KiB | 00m00s [ 7/22] Installing python3-requests-0:2 100% | 59.7 MiB/s | 488.9 KiB | 00m00s [ 8/22] Installing python3-execnet-0:2. 100% | 53.8 MiB/s | 991.8 KiB | 00m00s [ 9/22] Installing python3-pygments-0:2 100% | 70.5 MiB/s | 11.5 MiB | 00m00s [10/22] Installing python3-pluggy-0:1.6 100% | 53.1 MiB/s | 217.5 KiB | 00m00s [11/22] Installing python3-iniconfig-0: 100% | 10.5 MiB/s | 53.7 KiB | 00m00s [12/22] Installing python3-pytest-0:8.4 100% | 110.6 MiB/s | 22.7 MiB | 00m00s [13/22] Installing python3-platformdirs 100% | 46.1 MiB/s | 188.8 KiB | 00m00s [14/22] Installing python3-attrs-0:25.4 100% | 55.1 MiB/s | 451.1 KiB | 00m00s [15/22] Installing python3-hypothesis-0 100% | 64.1 MiB/s | 5.1 MiB | 00m00s [16/22] Installing python3-pooch-0:1.8. 100% | 63.5 MiB/s | 650.4 KiB | 00m00s [17/22] Installing python3-pytest-xdist 100% | 67.1 MiB/s | 480.8 KiB | 00m00s [18/22] Installing python3-threadpoolct 100% | 68.2 MiB/s | 139.6 KiB | 00m00s [19/22] Installing python3-ninja-0:1.13 100% | 921.9 KiB/s | 944.0 B | 00m00s [20/22] Installing python3-mpmath-0:1.3 100% | 122.2 MiB/s | 5.4 MiB | 00m00s [21/22] Installing python3-gmpy2-0:2.2. 100% | 39.5 MiB/s | 1.1 MiB | 00m00s [22/22] Installing python3-array-api-st 100% | 10.8 MiB/s | 717.6 KiB | 00m00s Warning: skipped OpenPGP checks for 20 packages from repository: http_kojipkgs_fedoraproject_org_repos_rawhide_latest_basearch Complete! Building target platforms: ppc64le Building for target ppc64le setting SOURCE_DATE_EPOCH=1762819200 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.HzyEcW + umask 022 + cd /builddir/build/BUILD/scipy-1.16.2-build + cd scipy-1.16.2 + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(packaging)' + echo 'python3dist(pip) >= 19' + '[' -f pyproject.toml ']' + echo '(python3dist(tomli) if python3-devel < 3.11)' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/scipy-1.16.2-build/.pyproject-builddir + echo -n + CFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection ' + CXXFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection ' + FFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib64/gfortran/modules ' + FCFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib64/gfortran/modules ' + VALAFLAGS=-g + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Clink-arg=-specs=/usr/lib/rpm/redhat/redhat-package-notes --cap-lints=warn' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + LT_SYS_LIBRARY_PATH=/usr/lib64: + CC=gcc + CXX=g++ + TMPDIR=/builddir/build/BUILD/scipy-1.16.2-build/.pyproject-builddir + RPM_TOXENV=py314 + FEDORA=44 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/scipy-1.16.2-build/pyproject-wheeldir --output /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2-2.fc44.ppc64le-pyproject-buildrequires -p -x test -Csetup-args=-Dblas=flexiblas -Csetup-args=-Dlapack=flexiblas Handling meson-python>=0.15.0,<0.21.0 from build-system.requires Requirement satisfied: meson-python>=0.15.0,<0.21.0 (installed: meson-python 0.18.0) Handling Cython>=3.0.8 from build-system.requires Requirement satisfied: Cython>=3.0.8 (installed: Cython 3.1.6) Handling pybind11>=2.13.2,<3.1.0 from build-system.requires Requirement satisfied: pybind11>=2.13.2,<3.1.0 (installed: pybind11 3.0.0) Handling pythran>=0.14.0,<0.19.0 from build-system.requires Requirement satisfied: pythran>=0.14.0,<0.19.0 (installed: pythran 0.18.0) Handling numpy>=2.0.0,<2.6 from build-system.requires Requirement satisfied: numpy>=2.0.0,<2.6 (installed: numpy 2.3.5) Handling numpy>=1.25.2,<2.6 from pyproject.toml generated metadata: [dependencies] (scipy) Requirement satisfied: numpy>=1.25.2,<2.6 (installed: numpy 2.3.5) Handling pytest>=8.0.0 from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement satisfied: pytest>=8.0.0 (installed: pytest 8.4.2) Handling pytest-xdist from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement satisfied: pytest-xdist (installed: pytest-xdist 3.7.0) Handling mpmath from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement satisfied: mpmath (installed: mpmath 1.3.0) Handling gmpy2 from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement satisfied: gmpy2 (installed: gmpy2 2.2.2) Handling threadpoolctl from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement satisfied: threadpoolctl (installed: threadpoolctl 3.5.0) Handling pooch from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement satisfied: pooch (installed: pooch 1.8.2) Handling hypothesis>=6.30 from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement satisfied: hypothesis>=6.30 (installed: hypothesis 6.123.0) Handling array-api-strict>=2 from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement satisfied: array-api-strict>=2 (installed: array-api-strict 2.0.1) Handling Cython from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement satisfied: Cython (installed: Cython 3.1.6) Handling meson from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement satisfied: meson (installed: meson 1.9.1) Handling ninja; sys_platform != "emscripten" from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement satisfied: ninja; sys_platform != "emscripten" (installed: ninja 1.13.1) Handling sphinx>=5.0.0,<8.2.0 from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: sphinx>=5.0.0,<8.2.0 Handling intersphinx_registry from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: intersphinx_registry Handling pydata-sphinx-theme>=0.15.2 from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: pydata-sphinx-theme>=0.15.2 Handling sphinx-copybutton from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: sphinx-copybutton Handling sphinx-design>=0.4.0 from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: sphinx-design>=0.4.0 Handling matplotlib>=3.5 from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: matplotlib>=3.5 Handling numpydoc from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: numpydoc Handling jupytext from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: jupytext Handling myst-nb>=1.2.0 from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: myst-nb>=1.2.0 Handling pooch from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: pooch Handling jupyterlite-sphinx>=0.19.1 from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: jupyterlite-sphinx>=0.19.1 Handling jupyterlite-pyodide-kernel from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: jupyterlite-pyodide-kernel Handling linkify-it-py from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: linkify-it-py Handling mypy==1.10.0 from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: mypy==1.10.0 Handling typing_extensions from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: typing_extensions Handling types-psutil from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: types-psutil Handling pycodestyle from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: pycodestyle Handling ruff>=0.0.292 from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: ruff>=0.0.292 Handling cython-lint>=0.12.2 from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: cython-lint>=0.12.2 Handling rich-click from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: rich-click Handling doit>=0.36.0 from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: doit>=0.36.0 Handling pydevtool from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: pydevtool + cat /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2-2.fc44.ppc64le-pyproject-buildrequires + rm -rfv '*.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Wrote: /builddir/build/SRPMS/scipy-1.16.2-2.fc44.buildreqs.nosrc.rpm INFO: Going to install missing dynamic buildrequires Updating and loading repositories: Additional repo http_kojipkgs_fedorapr 100% | 33.0 KiB/s | 3.8 KiB | 00m00s Copr repository 100% | 13.2 KiB/s | 1.5 KiB | 00m00s fedora 100% | 34.3 KiB/s | 6.1 KiB | 00m00s updates 100% | 49.2 KiB/s | 7.1 KiB | 00m00s Repositories loaded. Package "flexiblas-devel-3.5.0-1.fc44.ppc64le" is already installed. Package "flexiblas-openblas-openmp-3.5.0-1.fc44.ppc64le" is already installed. Package "gcc-c++-15.2.1-4.fc44.ppc64le" is already installed. Nothing to do. Package "gcc-gfortran-15.2.1-4.fc44.ppc64le" is already installed. Package "pybind11-devel-3.0-2.fc44.ppc64le" is already installed. Package "pyproject-rpm-macros-1.18.6-1.fc44.noarch" is already installed. Package "pyproject-rpm-macros-1.18.6-1.fc44.noarch" is already installed. Package "python3-devel-3.14.0-2.fc44.ppc64le" is already installed. Package "python3-numpy-f2py-1:2.3.5-1.fc44.ppc64le" is already installed. Package "python3-array-api-strict-2.0.1-7.fc44.noarch" is already installed. Package "python3-cython-3.1.6-1.fc44.ppc64le" is already installed. Package "python3-cython-3.1.6-1.fc44.ppc64le" is already installed. Package "python3-gmpy2-2.2.2-1.fc44.ppc64le" is already installed. Package "python3-hypothesis-6.123.0-7.fc44.noarch" is already installed. Package "meson-1.9.1-4.fc44.noarch" is already installed. Package "python3-mpmath-1.3.0-16.fc44.noarch" is already installed. Package "python3-ninja-1.13.1-4.fc44.noarch" is already installed. Package "python3-packaging-25.0-7.fc44.noarch" is already installed. Package "python3-pip-25.3-1.fc44.noarch" is already installed. Package "python3-pooch-1.8.2-9.fc44.noarch" is already installed. Package "python3-pytest-8.4.2-1.fc44.noarch" is already installed. Package "python3-pytest-xdist-3.7.0-5.fc44.noarch" is already installed. Package "python3-threadpoolctl-3.5.0-10.fc44.noarch" is already installed. Building target platforms: ppc64le Building for target ppc64le setting SOURCE_DATE_EPOCH=1762819200 Executing(%generate_buildrequires): /bin/sh -e /var/tmp/rpm-tmp.TRJzCZ + umask 022 + cd /builddir/build/BUILD/scipy-1.16.2-build + cd scipy-1.16.2 + echo pyproject-rpm-macros + echo python3-devel + echo 'python3dist(packaging)' + echo 'python3dist(pip) >= 19' + '[' -f pyproject.toml ']' + echo '(python3dist(tomli) if python3-devel < 3.11)' + rm -rfv '*.dist-info/' + '[' -f /usr/bin/python3 ']' + mkdir -p /builddir/build/BUILD/scipy-1.16.2-build/.pyproject-builddir + echo -n + CFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection ' + CXXFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection ' + FFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib64/gfortran/modules ' + FCFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib64/gfortran/modules ' + VALAFLAGS=-g + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Clink-arg=-specs=/usr/lib/rpm/redhat/redhat-package-notes --cap-lints=warn' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + LT_SYS_LIBRARY_PATH=/usr/lib64: + CC=gcc + CXX=g++ + TMPDIR=/builddir/build/BUILD/scipy-1.16.2-build/.pyproject-builddir + RPM_TOXENV=py314 + FEDORA=44 + HOSTNAME=rpmbuild + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_buildrequires.py --generate-extras --python3_pkgversion 3 --wheeldir /builddir/build/BUILD/scipy-1.16.2-build/pyproject-wheeldir --output /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2-2.fc44.ppc64le-pyproject-buildrequires -p -x test -Csetup-args=-Dblas=flexiblas -Csetup-args=-Dlapack=flexiblas Handling meson-python>=0.15.0,<0.21.0 from build-system.requires Requirement satisfied: meson-python>=0.15.0,<0.21.0 (installed: meson-python 0.18.0) Handling Cython>=3.0.8 from build-system.requires Requirement satisfied: Cython>=3.0.8 (installed: Cython 3.1.6) Handling pybind11>=2.13.2,<3.1.0 from build-system.requires Requirement satisfied: pybind11>=2.13.2,<3.1.0 (installed: pybind11 3.0.0) Handling pythran>=0.14.0,<0.19.0 from build-system.requires Requirement satisfied: pythran>=0.14.0,<0.19.0 (installed: pythran 0.18.0) Handling numpy>=2.0.0,<2.6 from build-system.requires Requirement satisfied: numpy>=2.0.0,<2.6 (installed: numpy 2.3.5) Handling numpy>=1.25.2,<2.6 from pyproject.toml generated metadata: [dependencies] (scipy) Requirement satisfied: numpy>=1.25.2,<2.6 (installed: numpy 2.3.5) Handling pytest>=8.0.0 from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement satisfied: pytest>=8.0.0 (installed: pytest 8.4.2) Handling pytest-xdist from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement satisfied: pytest-xdist (installed: pytest-xdist 3.7.0) Handling mpmath from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement satisfied: mpmath (installed: mpmath 1.3.0) Handling gmpy2 from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement satisfied: gmpy2 (installed: gmpy2 2.2.2) Handling threadpoolctl from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement satisfied: threadpoolctl (installed: threadpoolctl 3.5.0) Handling pooch from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement satisfied: pooch (installed: pooch 1.8.2) Handling hypothesis>=6.30 from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement satisfied: hypothesis>=6.30 (installed: hypothesis 6.123.0) Handling array-api-strict>=2 from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement satisfied: array-api-strict>=2 (installed: array-api-strict 2.0.1) Handling Cython from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement satisfied: Cython (installed: Cython 3.1.6) Handling meson from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement satisfied: meson (installed: meson 1.9.1) Handling ninja; sys_platform != "emscripten" from pyproject.toml generated metadata: [optional-dependencies] test (scipy) Requirement satisfied: ninja; sys_platform != "emscripten" (installed: ninja 1.13.1) Handling sphinx>=5.0.0,<8.2.0 from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: sphinx>=5.0.0,<8.2.0 Handling intersphinx_registry from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: intersphinx_registry Handling pydata-sphinx-theme>=0.15.2 from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: pydata-sphinx-theme>=0.15.2 Handling sphinx-copybutton from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: sphinx-copybutton Handling sphinx-design>=0.4.0 from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: sphinx-design>=0.4.0 Handling matplotlib>=3.5 from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: matplotlib>=3.5 Handling numpydoc from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: numpydoc Handling jupytext from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: jupytext Handling myst-nb>=1.2.0 from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: myst-nb>=1.2.0 Handling pooch from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: pooch Handling jupyterlite-sphinx>=0.19.1 from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: jupyterlite-sphinx>=0.19.1 Handling jupyterlite-pyodide-kernel from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: jupyterlite-pyodide-kernel Handling linkify-it-py from pyproject.toml generated metadata: [optional-dependencies] doc (scipy) Ignoring alien requirement: linkify-it-py Handling mypy==1.10.0 from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: mypy==1.10.0 Handling typing_extensions from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: typing_extensions Handling types-psutil from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: types-psutil Handling pycodestyle from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: pycodestyle Handling ruff>=0.0.292 from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: ruff>=0.0.292 Handling cython-lint>=0.12.2 from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: cython-lint>=0.12.2 Handling rich-click from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: rich-click Handling doit>=0.36.0 from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: doit>=0.36.0 Handling pydevtool from pyproject.toml generated metadata: [optional-dependencies] dev (scipy) Ignoring alien requirement: pydevtool + cat /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2-2.fc44.ppc64le-pyproject-buildrequires + rm -rfv '*.dist-info/' + RPM_EC=0 ++ jobs -p + exit 0 Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.IOxdVB + umask 022 + cd /builddir/build/BUILD/scipy-1.16.2-build + CFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection ' + export CFLAGS + CXXFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection ' + export CXXFLAGS + FFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib64/gfortran/modules ' + export FFLAGS + FCFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib64/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Clink-arg=-specs=/usr/lib/rpm/redhat/redhat-package-notes --cap-lints=warn' + export RUSTFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib64: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + cd scipy-1.16.2 + mkdir -p /builddir/build/BUILD/scipy-1.16.2-build/.pyproject-builddir + CFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection ' + CXXFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection ' + FFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib64/gfortran/modules ' + FCFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib64/gfortran/modules ' + VALAFLAGS=-g + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Clink-arg=-specs=/usr/lib/rpm/redhat/redhat-package-notes --cap-lints=warn' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + LT_SYS_LIBRARY_PATH=/usr/lib64: + CC=gcc + CXX=g++ + TMPDIR=/builddir/build/BUILD/scipy-1.16.2-build/.pyproject-builddir + /usr/bin/python3 -Bs /usr/lib/rpm/redhat/pyproject_wheel.py -Csetup-args=-Dblas=flexiblas -Csetup-args=-Dlapack=flexiblas /builddir/build/BUILD/scipy-1.16.2-build/pyproject-wheeldir Processing /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2 Preparing metadata (pyproject.toml): started Running command Preparing metadata (pyproject.toml) + meson setup /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2 /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy -Dbuildtype=release -Db_ndebug=if-release -Db_vscrt=md -Dblas=flexiblas -Dlapack=flexiblas --native-file=/builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/meson-python-native-file.ini The Meson build system Version: 1.9.1 Source dir: /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2 Build dir: /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy Build type: native build Project name: scipy Project version: 1.16.2 C compiler for the host machine: gcc (gcc 15.2.1 "gcc (GCC) 15.2.1 20251111 (Red Hat 15.2.1-4)") C linker for the host machine: gcc ld.bfd 2.45.50.20251124 C++ compiler for the host machine: g++ (gcc 15.2.1 "g++ (GCC) 15.2.1 20251111 (Red Hat 15.2.1-4)") C++ linker for the host machine: g++ ld.bfd 2.45.50.20251124 Cython compiler for the host machine: cython (cython 3.1.6) Host machine cpu family: ppc64 Host machine cpu: ppc64le Program python found: YES (/usr/bin/python3) Found pkg-config: YES (/usr/bin/pkg-config) 2.3.0 Run-time dependency python found: YES 3.14 Program cython found: YES (/usr/bin/cython) Compiler for C supports arguments -Wno-unused-but-set-variable: YES Compiler for C supports arguments -Wno-unused-function: YES Compiler for C supports arguments -Wno-conversion: YES Compiler for C supports arguments -Wno-misleading-indentation: YES Library m found: YES Fortran compiler for the host machine: gfortran (gcc 15.2.1 "GNU Fortran (GCC) 15.2.1 20251111 (Red Hat 15.2.1-4)") Fortran linker for the host machine: gfortran ld.bfd 2.45.50.20251124 ../meson.build:94: WARNING: Consider using the built-in option for language standard version instead of using "-std=legacy". Compiler for Fortran supports arguments -Wno-conversion: YES Checking if "-Wl,--version-script" links: YES Program tools/generate_f2pymod.py found: YES (/usr/bin/python3 /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/tools/generate_f2pymod.py) Program scipy/_build_utils/tempita.py found: YES (/usr/bin/python3 /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_build_utils/tempita.py) Program pythran found: YES 0.18.0 0.18.0 (/usr/bin/pythran) Run-time dependency xsimd found: YES 13.2.0 Executing subproject xsf xsf| Project name: xsf xsf| Project version: 0.1.0 xsf| C++ compiler for the host machine: g++ (gcc 15.2.1 "g++ (GCC) 15.2.1 20251111 (Red Hat 15.2.1-4)") xsf| C++ linker for the host machine: g++ ld.bfd 2.45.50.20251124 xsf| Build targets in project: 0 xsf| Subproject xsf finished. Executing subproject boost_math boost_math| Project name: boost-math boost_math| Project version: 1.88.0 boost_math| Build targets in project: 0 boost_math| Subproject boost_math finished. Executing subproject qhull_r qhull_r| Project name: qhull_r qhull_r| Project version: 8.0.2 qhull_r| C compiler for the host machine: gcc (gcc 15.2.1 "gcc (GCC) 15.2.1 20251111 (Red Hat 15.2.1-4)") qhull_r| C linker for the host machine: gcc ld.bfd 2.45.50.20251124 qhull_r| Compiler for C supports arguments -Wno-unused-but-set-variable: YES (cached) qhull_r| Build targets in project: 1 qhull_r| Subproject qhull_r finished. Run-time dependency threads found: YES numpy-config found: YES (/usr/bin/numpy-config) 2.3.5 Run-time dependency numpy found: YES 2.3.5 Library npymath found: YES Run-time dependency pybind11 found: YES 3.0.0 Checking if "thread_local" compiles: NO Checking if "_Thread_local" compiles: YES Checking if "__thread" compiles: YES Configuring scipy_config.h using configuration Program f2py found: YES (/usr/bin/f2py) Run-time dependency flexiblas found: YES 3.5.0 Dependency flexiblas found: YES 3.5.0 (cached) Compiler for C supports arguments -Wno-maybe-uninitialized: YES Compiler for C supports arguments -Wno-discarded-qualifiers: YES Compiler for C supports arguments -Wno-empty-body: YES Compiler for C supports arguments -Wno-implicit-function-declaration: YES Compiler for C supports arguments -Wno-parentheses: YES Compiler for C supports arguments -Wno-switch: YES Compiler for C supports arguments -Wno-unused-label: YES Compiler for C supports arguments -Wno-unused-result: YES Compiler for C supports arguments -Wno-unused-variable: YES Compiler for C supports arguments -Wno-unused-but-set-variable: YES (cached) Compiler for C++ supports arguments -Wno-bitwise-instead-of-logical: NO Compiler for C++ supports arguments -Wno-cpp: YES Compiler for C++ supports arguments -Wno-class-memaccess: YES Compiler for C++ supports arguments -Wno-deprecated-declarations: YES Compiler for C++ supports arguments -Wno-deprecated-builtins: NO Compiler for C++ supports arguments -Wno-format-truncation: YES Compiler for C++ supports arguments -Wno-non-virtual-dtor: YES Compiler for C++ supports arguments -Wno-sign-compare: YES Compiler for C++ supports arguments -Wno-switch: YES Compiler for C++ supports arguments -Wno-terminate: YES Compiler for C++ supports arguments -Wno-unused-but-set-variable: YES Compiler for C++ supports arguments -Wno-unused-function: YES Compiler for C++ supports arguments -Wno-unused-local-typedefs: YES Compiler for C++ supports arguments -Wno-unused-variable: YES Compiler for C++ supports arguments -Wno-int-in-bool-context: YES Compiler for Fortran supports arguments -Wno-argument-mismatch: YES Compiler for Fortran supports arguments -Wno-conversion: YES (cached) Compiler for Fortran supports arguments -Wno-intrinsic-shadow: YES Compiler for Fortran supports arguments -Wno-maybe-uninitialized: YES Compiler for Fortran supports arguments -Wno-surprising: YES Compiler for Fortran supports arguments -Wno-uninitialized: YES Compiler for Fortran supports arguments -Wno-unused-dummy-argument: YES Compiler for Fortran supports arguments -Wno-unused-label: YES Compiler for Fortran supports arguments -Wno-unused-variable: YES Compiler for Fortran supports arguments -Wno-tabs: YES Compiler for Fortran supports arguments -Wno-argument-mismatch: YES (cached) Compiler for Fortran supports arguments -Wno-conversion: YES (cached) Compiler for Fortran supports arguments -Wno-maybe-uninitialized: YES (cached) Compiler for Fortran supports arguments -Wno-unused-dummy-argument: YES (cached) Compiler for Fortran supports arguments -Wno-unused-label: YES (cached) Compiler for Fortran supports arguments -Wno-unused-variable: YES (cached) Compiler for Fortran supports arguments -Wno-tabs: YES (cached) Checking if "Check atomic builtins without -latomic" links: YES Configuring __config__.py using configuration Checking for function "open_memstream" : YES Configuring messagestream_config.h using configuration Program _generate_pyx.py found: YES (/usr/bin/python3 /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_generate_pyx.py) Program _generate_pyx.py found: YES (/usr/bin/python3 /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_generate_pyx.py) Program ../_generate_sparsetools.py found: YES (/usr/bin/python3 /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/sparsetools/../_generate_sparsetools.py) Checking for size of "void*" : 8 Compiler for Fortran supports arguments -w: YES Checking for size of "void*" : 8 Executing subproject highs highs| Project name: highs highs| Project version: 1.8.0 highs| C compiler for the host machine: gcc (gcc 15.2.1 "gcc (GCC) 15.2.1 20251111 (Red Hat 15.2.1-4)") highs| C linker for the host machine: gcc ld.bfd 2.45.50.20251124 highs| C++ compiler for the host machine: g++ (gcc 15.2.1 "g++ (GCC) 15.2.1 20251111 (Red Hat 15.2.1-4)") highs| C++ linker for the host machine: g++ ld.bfd 2.45.50.20251124 highs| Compiler for C++ supports arguments -Wno-invalid-offsetof: YES highs| Compiler for C++ supports arguments -Wno-maybe-uninitialized: YES highs| Compiler for C++ supports arguments -Wno-reorder: YES highs| Compiler for C++ supports arguments -Wno-reorder-ctor: NO highs| Compiler for C++ supports arguments -Wno-sometimes-uninitialized: NO highs| Compiler for C++ supports arguments -Wno-unused-but-set-variable: YES (cached) highs| Compiler for C++ supports arguments -Wno-unused-variable: YES (cached) highs| Compiler for C++ supports arguments -Wno-use-after-free: YES highs| Compiler for C++ supports arguments -Wno-comment: YES highs| Compiler for C supports arguments -Wno-comment: YES highs| Compiler for C supports arguments -Wno-invalid-offsetof: NO highs| Compiler for C supports arguments -Wno-maybe-uninitialized: YES (cached) highs| Compiler for C supports arguments -Wno-sometimes-uninitialized: NO highs| Compiler for C supports arguments -Wno-unused-label: YES (cached) highs| Compiler for C supports arguments -Wno-use-after-free: YES highs| Compiler for C supports arguments -Wno-unused-but-set-variable: YES (cached) highs| Compiler for C supports arguments -Wno-unused-variable: YES (cached) highs| Compiler for C supports arguments -Wno-use-after-free: YES (cached) highs| Compiler for C++ supports arguments -mpopcntd: YES highs| Dependency threads found: YES unknown (cached) highs| Checking if "Check atomic builtins without -latomic" links: YES (cached) highs| Dependency zlib skipped: feature use_zlib disabled highs| Checking if "mm_pause check" compiles: NO highs| Checking if "builtin_clz check" compiles: YES highs| Configuring HConfig.h.meson.interim using configuration highs| Build targets in project: 144 highs| Subproject highs finished. Build targets in project: 194 scipy 1.16.2 Subprojects boost_math : YES highs : YES qhull_r : YES xsf : YES User defined options Native files: /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/meson-python-native-file.ini b_ndebug : if-release b_vscrt : md blas : flexiblas buildtype : release lapack : flexiblas Found ninja-1.13.1 at /usr/bin/ninja + /usr/bin/ninja [1/1468] Scanning target lib__spropack for modules [2/1468] Scanning target lib__dpropack for modules [3/1468] Generating from 'spropack.pyf' [4/1468] Scanning target lib__cpropack for modules [5/1468] Generating from 'dpropack.pyf' [6/1468] Scanning target lib__zpropack for modules [7/1468] Generating from 'cpropack.pyf' [8/1468] Generating scipy/_cyutility.c with a custom command [9/1468] Generating from 'zpropack.pyf' [10/1468] Scanning target arpack_lib for modules [11/1468] Generating from 'test_fortran.pyf' [12/1468] Copying file scipy/optimize/cython_optimize/__init__.py [13/1468] Scanning target mach_lib for modules [14/1468] Scanning target lsoda_lib for modules [15/1468] Generating scipy/sparse/linalg/_eigen/arpack/arpack_module with a custom command [16/1468] Scanning target vode_lib for modules [17/1468] Scanning target dop_lib for modules [18/1468] Generating from 'vode.pyf' [19/1468] Generating from 'lsoda.pyf' [20/1468] Generating from 'dop.pyf' [21/1468] Generating from 'tests/test_odeint_banded.pyf' [22/1468] Scanning target fitpack_lib for modules [23/1468] Scanning target odrpack for modules [24/1468] Copying file scipy/__init__.py [25/1468] Copying file scipy/_lib/__init__.py [26/1468] Copying file scipy/_lib/_ccallback_c.pxd [27/1468] Copying file scipy/_lib/ccallback.pxd [28/1468] Copying file scipy/_lib/messagestream.pxd [29/1468] Copying file scipy/special/__init__.py [30/1468] Copying file scipy/special/_agm.pxd [31/1468] Copying file scipy/special/_boxcox.pxd [32/1468] Copying file scipy/special/_cdflib_wrappers.pxd [33/1468] Copying file scipy/special/_complexstuff.pxd [34/1468] Copying file scipy/special/_convex_analysis.pxd [35/1468] Copying file scipy/special/_ellip_harm.pxd [36/1468] Copying file scipy/special/_ellip_harm_2.pxd [37/1468] Copying file scipy/special/_ellipk.pxd [38/1468] Copying file scipy/special/_factorial.pxd [39/1468] Copying file scipy/special/_hyp0f1.pxd [40/1468] Copying file scipy/special/_hypergeometric.pxd [41/1468] Copying file scipy/special/_legacy.pxd [42/1468] Copying file scipy/special/_ndtri_exp.pxd [43/1468] Copying file scipy/special/_sici.pxd [44/1468] Copying file scipy/special/_spence.pxd [45/1468] Generating from 'src/dfitpack.pyf' [46/1468] Copying file scipy/special/orthogonal_eval.pxd [47/1468] Copying file scipy/special/sf_error.pxd [48/1468] Copying file scipy/special/_ufuncs_extra_code.pxi [49/1468] Copying file scipy/special/_ufuncs_extra_code_common.pxi [50/1468] Generating scipy/special/cython_special with a custom command [51/1468] Copying file scipy/special/cython_special.pxd [52/1468] Copying file scipy/special/__init__.pxd [53/1468] Copying file scipy/linalg/__init__.py [54/1468] Copying file scipy/linalg/_cythonized_array_utils.pxd [55/1468] Copying file scipy/linalg/__init__.pxd [56/1468] Generating scipy/linalg/_decomp_update with a custom command [57/1468] Generating scipy/sparse/_csparsetools_pyx with a custom command [58/1468] Generating scipy/linalg/cython_linalg with a custom command [59/1468] Copying file scipy/sparse/csgraph/parameters.pxi [60/1468] Generating dynamic dependency information for target lib__spropack [61/1468] Generating dynamic dependency information for target lib__dpropack [62/1468] Scanning target _spropack.cpython-314-powerpc64le-linux-gnu for modules [63/1468] Generating dynamic dependency information for target lib__cpropack [64/1468] Scanning target _dpropack.cpython-314-powerpc64le-linux-gnu for modules [65/1468] Generating dynamic dependency information for target lib__zpropack [66/1468] Compiling C object scipy/_cyutility.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated_..__cyutility.c.o [67/1468] Scanning target _cpropack.cpython-314-powerpc64le-linux-gnu for modules [68/1468] Linking target scipy/_cyutility.cpython-314-powerpc64le-linux-gnu.so [69/1468] Scanning target _zpropack.cpython-314-powerpc64le-linux-gnu for modules [70/1468] Generating dynamic dependency information for target arpack_lib [71/1468] Copying file scipy/stats/__init__.py [72/1468] Scanning target _arpack.cpython-314-powerpc64le-linux-gnu for modules [73/1468] Copying file scipy/stats/_stats.pxd [74/1468] Copying file scipy/stats/_unuran/unuran.pxd [75/1468] Copying file scipy/stats/_biasedurn.pxd [76/1468] Copying file scipy/stats/_unuran/__init__.py [77/1468] Copying file scipy/optimize/__init__.py [78/1468] Copying file scipy/optimize/cython_optimize.pxd [79/1468] Scanning target _test_fortran.cpython-314-powerpc64le-linux-gnu for modules [80/1468] Copying file scipy/optimize/__init__.pxd [81/1468] Copying file scipy/optimize/cython_optimize/c_zeros.pxd [82/1468] Generating scipy/optimize/cython_optimize/_zeros_pyx with a custom command [83/1468] Copying file scipy/optimize/cython_optimize/_zeros.pxd [84/1468] Generating subprojects/highs/src/HConfig.h with a custom command [85/1468] Copying file scipy/spatial/_qhull.pxd [86/1468] Copying file scipy/spatial/setlist.pxd [87/1468] Generating dynamic dependency information for target vode_lib [88/1468] Generating dynamic dependency information for target mach_lib [89/1468] Generating dynamic dependency information for target lsoda_lib [90/1468] Generating dynamic dependency information for target dop_lib [91/1468] Scanning target _lsoda.cpython-314-powerpc64le-linux-gnu for modules [92/1468] Scanning target _vode.cpython-314-powerpc64le-linux-gnu for modules [93/1468] Scanning target _test_odeint_banded.cpython-314-powerpc64le-linux-gnu for modules [94/1468] Scanning target _dop.cpython-314-powerpc64le-linux-gnu for modules [95/1468] Generating dynamic dependency information for target fitpack_lib [96/1468] Generating dynamic dependency information for target odrpack [97/1468] Scanning target _dfitpack.cpython-314-powerpc64le-linux-gnu for modules [98/1468] Compiling C object subprojects/qhull_r/liblibqhull_r.a.p/libqhull_r_geom_r.c.o [99/1468] Compiling C object subprojects/qhull_r/liblibqhull_r.a.p/libqhull_r_geom2_r.c.o [100/1468] Compiling C object subprojects/qhull_r/liblibqhull_r.a.p/libqhull_r_global_r.c.o [101/1468] Compiling C object subprojects/qhull_r/liblibqhull_r.a.p/libqhull_r_mem_r.c.o [102/1468] Compiling C object subprojects/qhull_r/liblibqhull_r.a.p/libqhull_r_libqhull_r.c.o [103/1468] Compiling C object subprojects/qhull_r/liblibqhull_r.a.p/libqhull_r_io_r.c.o [104/1468] Compiling C object subprojects/qhull_r/liblibqhull_r.a.p/libqhull_r_poly_r.c.o [105/1468] Compiling C object subprojects/qhull_r/liblibqhull_r.a.p/libqhull_r_poly2_r.c.o [106/1468] Compiling C object subprojects/qhull_r/liblibqhull_r.a.p/libqhull_r_random_r.c.o [107/1468] Compiling C object subprojects/qhull_r/liblibqhull_r.a.p/libqhull_r_qset_r.c.o [108/1468] Compiling C object subprojects/qhull_r/liblibqhull_r.a.p/libqhull_r_merge_r.c.o [109/1468] Compiling C object subprojects/qhull_r/liblibqhull_r.a.p/libqhull_r_user_r.c.o [110/1468] Compiling C object subprojects/qhull_r/liblibqhull_r.a.p/libqhull_r_usermem_r.c.o [111/1468] Compiling C object subprojects/qhull_r/liblibqhull_r.a.p/libqhull_r_userprintf_r.c.o [112/1468] Compiling C object subprojects/qhull_r/liblibqhull_r.a.p/libqhull_r_userprintf_rbox_r.c.o [113/1468] Compiling C object subprojects/qhull_r/liblibqhull_r.a.p/libqhull_r_stat_r.c.o [114/1468] Compiling C object subprojects/qhull_r/liblibqhull_r.a.p/libqhull_r_rboxlib_r.c.o [115/1468] Compiling C object scipy/libdummy_g77_abi_wrappers.a.p/_build_utils_src_wrap_dummy_g77_abi.c.o [116/1468] Compiling C object scipy/lib_fortranobject.a.p/.._.._.._.._.._.._usr_lib64_python3.14_site-packages_numpy_f2py_src_fortranobject.c.o [117/1468] Generating 'scipy/_lib/_test_deprecation_call.cpython-314-powerpc64le-linux-gnu.so.p/_test_deprecation_call.c' [118/1468] Generating 'scipy/_lib/_ccallback_c.cpython-314-powerpc64le-linux-gnu.so.p/_ccallback_c.c' [119/1468] Generating 'scipy/_lib/_test_deprecation_def.cpython-314-powerpc64le-linux-gnu.so.p/_test_deprecation_def.c' [120/1468] Generating 'scipy/_lib/messagestream.cpython-314-powerpc64le-linux-gnu.so.p/messagestream.c' [121/1468] Generating 'scipy/special/_specfun.cpython-314-powerpc64le-linux-gnu.so.p/_specfun.cpp' [122/1468] Compiling C object scipy/special/libcdflib.a.p/cdflib.c.o [123/1468] Generating 'scipy/special/_ufuncs_cxx.cpython-314-powerpc64le-linux-gnu.so.p/_ufuncs_cxx.cpp' [124/1468] Generating 'scipy/special/_ellip_harm_2.cpython-314-powerpc64le-linux-gnu.so.p/_ellip_harm_2.c' [125/1468] Generating 'scipy/special/_comb.cpython-314-powerpc64le-linux-gnu.so.p/_comb.c' [126/1468] Generating 'scipy/special/_test_internal.cpython-314-powerpc64le-linux-gnu.so.p/_test_internal.c' [127/1468] Generating 'scipy/special/_ufuncs.cpython-314-powerpc64le-linux-gnu.so.p/_ufuncs.c' [128/1468] Generating 'scipy/special/cython_special.cpython-314-powerpc64le-linux-gnu.so.p/cython_special.c' [129/1468] Generating scipy/linalg/fblas_module with a custom command [130/1468] Generating 'scipy/linalg/_solve_toeplitz.cpython-314-powerpc64le-linux-gnu.so.p/_solve_toeplitz.c' [131/1468] Generating 'scipy/linalg/_matfuncs_sqrtm_triu.cpython-314-powerpc64le-linux-gnu.so.p/_matfuncs_sqrtm_triu.c' [132/1468] Generating 'scipy/linalg/_decomp_interpolative.cpython-314-powerpc64le-linux-gnu.so.p/_decomp_interpolative.c' [133/1468] Generating 'scipy/linalg/cython_blas.cpython-314-powerpc64le-linux-gnu.so.p/cython_blas.c' [134/1468] Generating 'scipy/linalg/_decomp_lu_cython.cpython-314-powerpc64le-linux-gnu.so.p/_decomp_lu_cython.c' [135/1468] Generating 'scipy/linalg/_decomp_update.cpython-314-powerpc64le-linux-gnu.so.p/_decomp_update.c' [136/1468] Generating 'scipy/linalg/cython_lapack.cpython-314-powerpc64le-linux-gnu.so.p/cython_lapack.c' [137/1468] Generating 'scipy/linalg/_linalg_pythran.cpython-314-powerpc64le-linux-gnu.so.p/_linalg_pythran.cpp' [138/1468] Generating 'scipy/sparse/_csparsetools.cpython-314-powerpc64le-linux-gnu.so.p/_csparsetools.c' [139/1468] Generating scipy/sparse/sparsetools/_sparsetools_headers with a custom command [140/1468] Generating 'scipy/sparse/csgraph/_flow.cpython-314-powerpc64le-linux-gnu.so.p/_flow.c' [141/1468] Generating 'scipy/linalg/_cythonized_array_utils.cpython-314-powerpc64le-linux-gnu.so.p/_cythonized_array_utils.c' [142/1468] Generating 'scipy/sparse/csgraph/_min_spanning_tree.cpython-314-powerpc64le-linux-gnu.so.p/_min_spanning_tree.c' [143/1468] Generating 'scipy/sparse/csgraph/_matching.cpython-314-powerpc64le-linux-gnu.so.p/_matching.c' [144/1468] Generating 'scipy/sparse/csgraph/_reordering.cpython-314-powerpc64le-linux-gnu.so.p/_reordering.c' [145/1468] Generating 'scipy/sparse/csgraph/_tools.cpython-314-powerpc64le-linux-gnu.so.p/_tools.c' [146/1468] Generating 'scipy/sparse/csgraph/_traversal.cpython-314-powerpc64le-linux-gnu.so.p/_traversal.c' [147/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__spropack.a.p/PROPACK_single_printstat.F.o [148/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__spropack.a.p/PROPACK_single_sblasext.F.o [149/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__spropack.a.p/PROPACK_single_sbsvd.F.o [150/1468] Generating 'scipy/sparse/csgraph/_shortest_path.cpython-314-powerpc64le-linux-gnu.so.p/_shortest_path.cpp' [151/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__spropack.a.p/PROPACK_single_sgetu0.F.o [152/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__spropack.a.p/PROPACK_single_sgemm_ovwr.F.o [153/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__spropack.a.p/PROPACK_single_slansvd.F.o [154/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__spropack.a.p/PROPACK_single_slansvd_irl.F.o [155/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__spropack.a.p/PROPACK_single_sreorth.F.o [156/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__spropack.a.p/PROPACK_single_slanbpro.F.o [157/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__spropack.a.p/PROPACK_single_ssafescal.F.o [158/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__spropack.a.p/PROPACK_single_sritzvec.F.o [159/1468] Generating dynamic dependency information for target _spropack.cpython-314-powerpc64le-linux-gnu [160/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__spropack.a.p/PROPACK_single_smgs.risc.F.o [161/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__dpropack.a.p/PROPACK_double_dbsvd.F.o [162/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__dpropack.a.p/PROPACK_double_dblasext.F.o [163/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__dpropack.a.p/PROPACK_double_dgetu0.F.o [164/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__dpropack.a.p/PROPACK_double_dgemm_ovwr.F.o [165/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__dpropack.a.p/PROPACK_double_dlansvd.F.o [166/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__dpropack.a.p/PROPACK_double_dlansvd_irl.F.o [167/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__dpropack.a.p/PROPACK_double_dreorth.F.o [168/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__dpropack.a.p/PROPACK_double_dlanbpro.F.o [169/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__dpropack.a.p/PROPACK_double_dsafescal.F.o [170/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__dpropack.a.p/PROPACK_double_dritzvec.F.o [171/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__dpropack.a.p/PROPACK_double_dmgs.risc.F.o [172/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__dpropack.a.p/PROPACK_double_printstat.F.o [173/1468] Generating dynamic dependency information for target _dpropack.cpython-314-powerpc64le-linux-gnu [174/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__cpropack.a.p/PROPACK_complex8_ccdotc.F.o [175/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__cpropack.a.p/PROPACK_complex8_cblasext.F.o [176/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__cpropack.a.p/PROPACK_complex8_cgetu0.F.o [177/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__cpropack.a.p/PROPACK_complex8_cgemm_ovwr.F.o [178/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__cpropack.a.p/PROPACK_complex8_clansvd.F.o [179/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__cpropack.a.p/PROPACK_complex8_clanbpro.F.o [180/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__cpropack.a.p/PROPACK_complex8_creorth.F.o [181/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__cpropack.a.p/PROPACK_complex8_critzvec.F.o [182/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__cpropack.a.p/PROPACK_complex8_clansvd_irl.F.o [183/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__cpropack.a.p/PROPACK_complex8_csafescal.F.o [184/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__cpropack.a.p/PROPACK_complex8_printstat.F.o [185/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__cpropack.a.p/PROPACK_complex8_sbsvd.F.o [186/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__cpropack.a.p/PROPACK_complex8_sblasext.F.o [187/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__cpropack.a.p/PROPACK_complex8_sgemm_ovwr.F.o [188/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__cpropack.a.p/PROPACK_complex8_cmgs.risc.F.o [189/1468] Generating dynamic dependency information for target _cpropack.cpython-314-powerpc64le-linux-gnu [190/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__zpropack.a.p/PROPACK_complex16_dbsvd.F.o [191/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__zpropack.a.p/PROPACK_complex16_dblasext.F.o [192/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__zpropack.a.p/PROPACK_complex16_dgemm_ovwr.F.o [193/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__zpropack.a.p/PROPACK_complex16_zzdotc.f.o [194/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__zpropack.a.p/PROPACK_complex16_printstat.F.o [195/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__zpropack.a.p/PROPACK_complex16_zblasext.F.o [196/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__zpropack.a.p/PROPACK_complex16_zgetu0.F.o [197/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__zpropack.a.p/PROPACK_complex16_zgemm_ovwr.F.o [198/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__zpropack.a.p/PROPACK_complex16_zlanbpro.F.o [199/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__zpropack.a.p/PROPACK_complex16_zlansvd.F.o [200/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__zpropack.a.p/PROPACK_complex16_zlansvd_irl.F.o [201/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__zpropack.a.p/PROPACK_complex16_zreorth.F.o [202/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__zpropack.a.p/PROPACK_complex16_zsafescal.F.o [203/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__zpropack.a.p/PROPACK_complex16_zritzvec.F.o [204/1468] Generating dynamic dependency information for target _zpropack.cpython-314-powerpc64le-linux-gnu [205/1468] Compiling Fortran object scipy/sparse/linalg/_propack/liblib__zpropack.a.p/PROPACK_complex16_zmgs.risc.F.o [206/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ccolumn_dfs.c.o [207/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ccolumn_bmod.c.o [208/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ccopy_to_ucol.c.o [209/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_cdiagonal.c.o [210/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_cgscon.c.o [211/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_cgsequ.c.o [212/1468] Generating scipy/linalg/flapack_module with a custom command [213/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_cgsisx.c.o [214/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_cgssv.c.o [215/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_cgsitrf.c.o [216/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_cgsrfs.c.o [217/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_cgssvx.c.o [218/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_cgstrf.c.o [219/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_clacon2.c.o [220/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_clangs.c.o [221/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_cgstrs.c.o [222/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_claqgs.c.o [223/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_cldperm.c.o [224/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_cmyblas2.c.o [225/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_cmemory.c.o [226/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_cpanel_dfs.c.o [227/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_cpanel_bmod.c.o [228/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_cpivotL.c.o [229/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_cpivotgrowth.c.o [230/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_cpruneL.c.o [231/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_creadMM.c.o [232/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_colamd.c.o [233/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_creadhb.c.o [234/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_csnode_bmod.c.o [235/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_creadtriple.c.o [236/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_creadrb.c.o [237/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_csnode_dfs.c.o [238/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_csp_blas3.c.o [239/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dGetDiagU.c.o [240/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_csp_blas2.c.o [241/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dcolumn_bmod.c.o [242/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_cutil.c.o [243/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dcolumn_dfs.c.o [244/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dcomplex.c.o [245/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dgscon.c.o [246/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dcopy_to_ucol.c.o [247/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ddiagonal.c.o [248/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dgsequ.c.o [249/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dgsisx.c.o [250/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dgsitrf.c.o [251/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dgssv.c.o [252/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dgsrfs.c.o [253/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dgstrf.c.o [254/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dgssvx.c.o [255/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dgstrs.c.o [256/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dlacon2.c.o [257/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dlaqgs.c.o [258/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dmach.c.o [259/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dlangs.c.o [260/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dldperm.c.o [261/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dmyblas2.c.o [262/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dmemory.c.o [263/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dpanel_bmod.c.o [264/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dpivotgrowth.c.o [265/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dpanel_dfs.c.o [266/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dpivotL.c.o [267/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dpruneL.c.o [268/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dreadMM.c.o [269/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dreadrb.c.o [270/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dreadhb.c.o [271/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dreadtriple.c.o [272/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dsnode_bmod.c.o [273/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dsnode_dfs.c.o [274/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dsp_blas3.c.o [275/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dzsum1.c.o [276/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dsp_blas2.c.o [277/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_dutil.c.o [278/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_heap_relax_snode.c.o [279/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_icmax1.c.o [280/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_get_perm_c.c.o [281/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_ccolumn_dfs.c.o [282/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_ccopy_to_ucol.c.o [283/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_cpanel_dfs.c.o [284/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_csnode_dfs.c.o [285/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_dcolumn_dfs.c.o [286/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_cdrop_row.c.o [287/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_cpivotL.c.o [288/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_dcopy_to_ucol.c.o [289/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_dpanel_dfs.c.o [290/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_dsnode_dfs.c.o [291/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_dpivotL.c.o [292/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_ddrop_row.c.o [293/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_relax_snode.c.o [294/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_heap_relax_snode.c.o [295/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_scolumn_dfs.c.o [296/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_scopy_to_ucol.c.o [297/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_spanel_dfs.c.o [298/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_sdrop_row.c.o [299/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_ssnode_dfs.c.o [300/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_zcolumn_dfs.c.o [301/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_spivotL.c.o [302/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_zcopy_to_ucol.c.o [303/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_zdrop_row.c.o [304/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_zpanel_dfs.c.o [305/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_input_error.c.o [306/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_izmax1.c.o [307/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_zsnode_dfs.c.o [308/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_mark_relax.c.o [309/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ilu_zpivotL.c.o [310/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_memory.c.o [311/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_relax_snode.c.o [312/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_qselect.c.o [313/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_scolumn_dfs.c.o [314/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_mmd.c.o [315/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_scolumn_bmod.c.o [316/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_scsum1.c.o [317/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_scomplex.c.o [318/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_scopy_to_ucol.c.o [319/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_sgscon.c.o [320/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_sdiagonal.c.o [321/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_sgsequ.c.o [322/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_sgsisx.c.o [323/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_sgsitrf.c.o [324/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_sgssv.c.o [325/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_sgsrfs.c.o [326/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_sgssvx.c.o [327/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_sgstrf.c.o [328/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_slacon2.c.o [329/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_slangs.c.o [330/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_slaqgs.c.o [331/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_sgstrs.c.o [332/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_smach.c.o [333/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_sldperm.c.o [334/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_sp_coletree.c.o [335/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_sp_ienv.c.o [336/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_sp_preorder.c.o [337/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_smyblas2.c.o [338/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_smemory.c.o [339/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_spivotL.c.o [340/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_spanel_dfs.c.o [341/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_spivotgrowth.c.o [342/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_spruneL.c.o [343/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_spanel_bmod.c.o [344/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_sreadMM.c.o [345/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_sreadhb.c.o [346/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_sreadtriple.c.o [347/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ssnode_bmod.c.o [348/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_sreadrb.c.o [349/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ssp_blas3.c.o [350/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ssnode_dfs.c.o [351/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_superlu_timer.c.o [352/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_ssp_blas2.c.o [353/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_util.c.o [354/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_sutil.c.o [355/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zcopy_to_ucol.c.o [356/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zcolumn_dfs.c.o [357/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zcolumn_bmod.c.o [358/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zdiagonal.c.o [359/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zgscon.c.o [360/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zgsequ.c.o [361/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zgsisx.c.o [362/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zgssv.c.o [363/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zgsitrf.c.o [364/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zgsrfs.c.o [365/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zgssvx.c.o [366/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zgstrf.c.o [367/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zlacon2.c.o [368/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zlangs.c.o [369/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zldperm.c.o [370/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zlaqgs.c.o [371/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zgstrs.c.o [372/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zmyblas2.c.o [373/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zmemory.c.o [374/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zpanel_dfs.c.o [375/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zpivotL.c.o [376/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zpruneL.c.o [377/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zpivotgrowth.c.o [378/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zpanel_bmod.c.o [379/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zreadMM.c.o [380/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zreadhb.c.o [381/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zreadtriple.c.o [382/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zreadrb.c.o [383/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zsnode_bmod.c.o [384/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zsp_blas3.c.o [385/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zsnode_dfs.c.o [386/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_ccdotc.f.o [387/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_cgetv0.f.o [388/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zutil.c.o [389/1468] Compiling C object scipy/sparse/linalg/_dsolve/libsuperlu_lib.a.p/SuperLU_SRC_zsp_blas2.c.o [390/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_cnaitr.f.o [391/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_cnapps.f.o [392/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_cneigh.f.o [393/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_cnaup2.f.o [394/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_cngets.f.o [395/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_cnaupd.f.o [396/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_cstatn.f.o [397/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_csortc.f.o [398/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_dgetv0.f.o [399/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_cneupd.f.o [400/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_dnaitr.f.o [401/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_dnapps.f.o [402/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_dnaupd.f.o [403/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_dnaup2.f.o [404/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_dnconv.f.o [405/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_dngets.f.o [406/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_dneigh.f.o [407/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_dsaitr.f.o [408/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_dneupd.f.o [409/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_dsapps.f.o [410/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_dsaupd.f.o [411/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_dsconv.f.o [412/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_dsaup2.f.o [413/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_dseigt.f.o [414/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_dsesrt.f.o [415/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_dsgets.f.o [416/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_dsortc.f.o [417/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_dstatn.f.o [418/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_dsortr.f.o [419/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_dstats.f.o [420/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_dseupd.f.o [421/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_sgetv0.f.o [422/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_snaitr.f.o [423/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_dstqrb.f.o [424/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_snaupd.f.o [425/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_snconv.f.o [426/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_snaup2.f.o [427/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_snapps.f.o [428/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_sngets.f.o [429/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_sneigh.f.o [430/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_ssaitr.f.o [431/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_ssapps.f.o [432/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_sneupd.f.o [433/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_ssconv.f.o [434/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_ssaupd.f.o [435/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_sseigt.f.o [436/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_ssaup2.f.o [437/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_ssgets.f.o [438/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_ssesrt.f.o [439/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_ssortc.f.o [440/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_ssortr.f.o [441/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_sstatn.f.o [442/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_sstats.f.o [443/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_sseupd.f.o [444/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_zgetv0.f.o [445/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_sstqrb.f.o [446/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_znaitr.f.o [447/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_znapps.f.o [448/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_znaupd.f.o [449/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_znaup2.f.o [450/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_zneigh.f.o [451/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_zngets.f.o [452/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_zstatn.f.o [453/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_zzdotc.f.o [454/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_zsortc.f.o [455/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_SRC_zneupd.f.o [456/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_UTIL_cvout.f.o [457/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_UTIL_dvout.f.o [458/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_UTIL_icnteq.f.o [459/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_UTIL_icopy.f.o [460/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_UTIL_cmout.f.o [461/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_UTIL_iset.f.o [462/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_UTIL_dmout.f.o [463/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_UTIL_iswap.f.o [464/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_UTIL_second_NONE.f.o [465/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_UTIL_ivout.f.o [466/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_UTIL_svout.f.o [467/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_UTIL_smout.f.o [468/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_UTIL_zmout.f.o [469/1468] Generating dynamic dependency information for target _arpack.cpython-314-powerpc64le-linux-gnu [470/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a.p/ARPACK_UTIL_zvout.f.o [471/1468] Generating 'scipy/stats/_ansari_swilk_statistics.cpython-314-powerpc64le-linux-gnu.so.p/_ansari_swilk_statistics.c' [472/1468] Generating 'scipy/stats/_sobol.cpython-314-powerpc64le-linux-gnu.so.p/_sobol.c' [473/1468] Generating 'scipy/stats/_stats.cpython-314-powerpc64le-linux-gnu.so.p/_stats.c' [474/1468] Generating 'scipy/stats/_qmc_cy.cpython-314-powerpc64le-linux-gnu.so.p/_qmc_cy.cpp' [475/1468] Generating 'scipy/stats/_biasedurn.cpython-314-powerpc64le-linux-gnu.so.p/_biasedurn.cpp' [476/1468] Compiling C object scipy/stats/_levy_stable/lib_levyst.a.p/c_src_levyst.c.o [477/1468] Generating 'scipy/stats/_levy_stable/levyst.cpython-314-powerpc64le-linux-gnu.so.p/levyst.c' [478/1468] Generating 'scipy/stats/_qmvnt_cy.cpython-314-powerpc64le-linux-gnu.so.p/_qmvnt_cy.cpp' [479/1468] Generating 'scipy/stats/_stats_pythran.cpython-314-powerpc64le-linux-gnu.so.p/_stats_pythran.cpp' [480/1468] Generating dynamic dependency information for target _test_fortran.cpython-314-powerpc64le-linux-gnu [481/1468] Generating 'scipy/stats/_rcont/rcont.cpython-314-powerpc64le-linux-gnu.so.p/rcont.c' [482/1468] Generating 'scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/unuran_wrapper.c' [483/1468] Generating 'scipy/io/matlab/_streams.cpython-314-powerpc64le-linux-gnu.so.p/_streams.c' [484/1468] Generating 'scipy/io/matlab/_mio_utils.cpython-314-powerpc64le-linux-gnu.so.p/_mio_utils.c' [485/1468] Compiling C object scipy/optimize/librootfind.a.p/Zeros_bisect.c.o [486/1468] Compiling C object scipy/optimize/librootfind.a.p/Zeros_brenth.c.o [487/1468] Compiling C object scipy/optimize/librootfind.a.p/Zeros_brentq.c.o [488/1468] Compiling C object scipy/optimize/librootfind.a.p/Zeros_ridder.c.o [489/1468] Compiling C++ object scipy/optimize/librectangular_lsap.a.p/rectangular_lsap_rectangular_lsap.cpp.o [490/1468] Generating 'scipy/io/matlab/_mio5_utils.cpython-314-powerpc64le-linux-gnu.so.p/_mio5_utils.c' [491/1468] Generating 'scipy/optimize/_moduleTNC.cpython-314-powerpc64le-linux-gnu.so.p/_moduleTNC.c' [492/1468] Generating 'scipy/optimize/_group_columns.cpython-314-powerpc64le-linux-gnu.so.p/_group_columns.cpp' [493/1468] Generating 'scipy/optimize/_bglu_dense.cpython-314-powerpc64le-linux-gnu.so.p/_bglu_dense.c' [494/1468] Generating 'scipy/optimize/_trlib/_trlib.cpython-314-powerpc64le-linux-gnu.so.p/_trlib.c' [495/1468] Generating 'scipy/optimize/cython_optimize/_zeros.cpython-314-powerpc64le-linux-gnu.so.p/_zeros.c' [496/1468] Generating 'scipy/optimize/_lsq/givens_elimination.cpython-314-powerpc64le-linux-gnu.so.p/givens_elimination.c' [497/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_io_Filereader.cpp.o [498/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_io_FilereaderEms.cpp.o [499/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_extern_filereaderlp_reader.cpp.o [500/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_interfaces_highs_c_api.cpp.o [501/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_io_FilereaderMps.cpp.o [502/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_io_FilereaderLp.cpp.o [503/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_io_HMPSIO.cpp.o [504/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_io_HighsIO.cpp.o [505/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_io_LoadOptions.cpp.o [506/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_io_HMpsFF.cpp.o [507/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_lp_data_HighsCallback.cpp.o [508/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_IpxWrapper.cpp.o [509/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_lp_data_HighsDebug.cpp.o [510/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_lp_data_HighsDeprecated.cpp.o [511/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_lp_data_HighsInfo.cpp.o [512/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_lp_data_HighsIis.cpp.o [513/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_lp_data_HighsInfoDebug.cpp.o [514/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_lp_data_HighsLp.cpp.o [515/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_lp_data_HighsInterface.cpp.o [516/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_lp_data_Highs.cpp.o [517/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_lp_data_HighsLpUtils.cpp.o [518/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_lp_data_HighsOptions.cpp.o [519/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_lp_data_HighsModelUtils.cpp.o [520/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_lp_data_HighsRanging.cpp.o [521/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_lp_data_HighsSolution.cpp.o [522/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_lp_data_HighsStatus.cpp.o [523/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_lp_data_HighsSolutionDebug.cpp.o [524/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_lp_data_HighsSolve.cpp.o [525/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsConflictPool.cpp.o [526/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsCutPool.cpp.o [527/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsCutGeneration.cpp.o [528/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsDebugSol.cpp.o [529/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsDynamicRowMatrix.cpp.o [530/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsGFkSolve.cpp.o [531/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsCliqueTable.cpp.o [532/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsDomain.cpp.o [533/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsImplications.cpp.o [534/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsLpAggregator.cpp.o [535/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsMipAnalysis.cpp.o [536/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsLpRelaxation.cpp.o [537/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsMipSolver.cpp.o [538/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsNodeQueue.cpp.o [539/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsModkSeparator.cpp.o [540/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsMipSolverData.cpp.o [541/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsObjectiveFunction.cpp.o [542/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsPathSeparator.cpp.o [543/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsPseudocost.cpp.o [544/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsRedcostFixing.cpp.o [545/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsSeparation.cpp.o [546/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsPrimalHeuristics.cpp.o [547/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsSeparator.cpp.o [548/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsSearch.cpp.o In file included from /usr/include/c++/15/bits/stl_algobase.h:64, from /usr/include/c++/15/deque:64, from /usr/include/c++/15/queue:68, from ../subprojects/highs/src/mip/HighsSearch.h:15, from ../subprojects/highs/src/mip/HighsSearch.cpp:11: /usr/include/c++/15/bits/stl_pair.h: In instantiation of ‘constexpr std::pair::type>::__type, typename std::__strip_reference_wrapper::type>::__type> std::make_pair(_T1&&, _T2&&) [with _T1 = double&; _T2 = double; typename __strip_reference_wrapper::type>::__type = double; typename decay<_Tp>::type = double; typename __strip_reference_wrapper::type>::__type = double; typename decay<_Tp2>::type = double]’: ../subprojects/highs/src/mip/HighsSearch.cpp:535:24: required from here 535 | std::make_pair(downscore[candidate], | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ 536 | pseudocost.getAvgInferencesDown(col)) >= | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/15/bits/stl_pair.h:1164:5: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 1164 | make_pair(_T1&& __x, _T2&& __y) | ^~~~~~~~~ [549/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_model_HighsHessian.cpp.o [550/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsTransformedLp.cpp.o [551/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_mip_HighsTableauSeparator.cpp.o [552/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_model_HighsModel.cpp.o [553/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_parallel_HighsTaskExecutor.cpp.o [554/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_model_HighsHessianUtils.cpp.o [555/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_pdlp_CupdlpWrapper.cpp.o [556/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_presolve_HPresolveAnalysis.cpp.o [557/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_presolve_HighsPostsolveStack.cpp.o [558/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_presolve_ICrash.cpp.o [559/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_presolve_ICrashUtil.cpp.o [560/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_presolve_ICrashX.cpp.o [561/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_presolve_HighsSymmetry.cpp.o [562/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_presolve_PresolveComponent.cpp.o [563/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_qpsolver_a_asm.cpp.o [564/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_qpsolver_a_quass.cpp.o [565/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_qpsolver_perturbation.cpp.o [566/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_qpsolver_basis.cpp.o [567/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_qpsolver_ratiotest.cpp.o [568/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_qpsolver_scaling.cpp.o [569/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_qpsolver_quass.cpp.o [570/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_presolve_HPresolve.cpp.o [571/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_simplex_HEkkControl.cpp.o [572/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_simplex_HEkkDebug.cpp.o [573/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_simplex_HEkk.cpp.o [574/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_simplex_HEkkDual.cpp.o [575/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_simplex_HEkkDualMulti.cpp.o [576/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_simplex_HEkkInterface.cpp.o [577/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_simplex_HEkkDualRHS.cpp.o [578/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_simplex_HEkkDualRow.cpp.o [579/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_simplex_HSimplexDebug.cpp.o [580/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_simplex_HSimplex.cpp.o [581/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_simplex_HSimplexNlaDebug.cpp.o [582/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_simplex_HSimplexNla.cpp.o [583/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_simplex_HEkkPrimal.cpp.o [584/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_simplex_HSimplexNlaFreeze.cpp.o [585/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_simplex_HSimplexNlaProductForm.cpp.o [586/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_simplex_HSimplexReport.cpp.o [587/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_test_DevKkt.cpp.o [588/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_test_KktCh2.cpp.o [589/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_util_HFactorDebug.cpp.o [590/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_simplex_HighsSimplexAnalysis.cpp.o [591/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_util_HFactorExtend.cpp.o [592/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_util_HFactorRefactor.cpp.o [593/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_util_HSet.cpp.o [594/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_util_HFactorUtils.cpp.o [595/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_util_HVectorBase.cpp.o [596/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_util_HFactor.cpp.o [597/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_util_HighsHash.cpp.o [598/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_util_HighsLinearSumBounds.cpp.o [599/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_util_HighsMatrixPic.cpp.o [600/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_util_HighsMatrixUtils.cpp.o [601/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_util_HighsSort.cpp.o [602/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_util_stringutil.cpp.o [603/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_pdlp_cupdlp_cupdlp_cs.c.o [604/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_pdlp_cupdlp_cupdlp_linalg.c.o [605/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_pdlp_cupdlp_cupdlp_proj.c.o [606/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_pdlp_cupdlp_cupdlp_restart.c.o [607/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_pdlp_cupdlp_cupdlp_scaling_cuda.c.o [608/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_util_HighsUtils.cpp.o [609/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_pdlp_cupdlp_cupdlp_step.c.o [610/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_pdlp_cupdlp_cupdlp_solver.c.o [611/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_basiclu_factorize.c.o [612/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_basiclu_get_factors.c.o [613/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_basiclu_initialize.c.o [614/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_basiclu_object.c.o [615/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_basiclu_solve_dense.c.o [616/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_basiclu_solve_for_update.c.o [617/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_basiclu_solve_sparse.c.o [618/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_basiclu_update.c.o [619/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_pdlp_cupdlp_cupdlp_utils.c.o [620/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_lu_build_factors.c.o [621/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_lu_dfs.c.o [622/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_lu_factorize_bump.c.o [623/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_lu_condest.c.o [624/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_lu_garbage_perm.c.o [625/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_lu_file.c.o [626/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_lu_initialize.c.o [627/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_lu_internal.c.o [628/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_lu_markowitz.c.o [629/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_lu_matrix_norm.c.o [630/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_util_HighsSparseMatrix.cpp.o [631/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_lu_setup_bump.c.o [632/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_lu_residual_test.c.o [633/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_lu_singletons.c.o [634/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_lu_solve_dense.c.o [635/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_lu_solve_sparse.c.o [636/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_lu_solve_for_update.c.o [637/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_lu_solve_symbolic.c.o [638/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_lu_solve_triangular.c.o [639/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_lu_pivot.c.o [640/1468] Compiling C object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_basiclu_lu_update.c.o [641/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_basiclu_kernel.cc.o [642/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_basiclu_wrapper.cc.o [643/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_conjugate_residuals.cc.o [644/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_control.cc.o [645/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_basis.cc.o [646/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_diagonal_precond.cc.o [647/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_crossover.cc.o [648/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_forrest_tomlin.cc.o [649/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_indexed_vector.cc.o [650/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_guess_basis.cc.o [651/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_info.cc.o [652/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_ipx_c.cc.o [653/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_ipm.cc.o [654/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_kkt_solver.cc.o [655/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_iterate.cc.o [656/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_kkt_solver_diag.cc.o [657/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_linear_operator.cc.o [658/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_kkt_solver_basis.cc.o [659/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_lu_factorization.cc.o [660/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_lu_update.cc.o [661/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_lp_solver.cc.o [662/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_maxvolume.cc.o [663/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_normal_matrix.cc.o [664/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_sparse_utils.cc.o [665/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_sparse_matrix.cc.o [666/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_splitted_normal_matrix.cc.o [667/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_starting_basis.cc.o [668/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_timer.cc.o [669/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_model.cc.o [670/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_symbolic_invert.cc.o [671/1468] Compiling C++ object scipy/optimize/_highspy/libhighs.a.p/.._.._.._subprojects_highs_src_ipm_ipx_utils.cc.o [672/1468] Generating 'scipy/spatial/_voronoi.cpython-314-powerpc64le-linux-gnu.so.p/_voronoi.c' [673/1468] Generating 'scipy/spatial/_ckdtree.cpython-314-powerpc64le-linux-gnu.so.p/_ckdtree.cpp' [674/1468] Generating 'scipy/spatial/_hausdorff.cpython-314-powerpc64le-linux-gnu.so.p/_hausdorff.c' [675/1468] Generating 'scipy/spatial/_qhull.cpython-314-powerpc64le-linux-gnu.so.p/_qhull.c' [676/1468] Generating 'scipy/spatial/transform/_rotation.cpython-314-powerpc64le-linux-gnu.so.p/_rotation.c' [677/1468] Generating 'scipy/spatial/transform/_rigid_transform.cpython-314-powerpc64le-linux-gnu.so.p/_rigid_transform.c' [678/1468] Generating 'scipy/cluster/_hierarchy.cpython-314-powerpc64le-linux-gnu.so.p/_hierarchy.c' [679/1468] Generating 'scipy/cluster/_optimal_leaf_ordering.cpython-314-powerpc64le-linux-gnu.so.p/_optimal_leaf_ordering.c' [680/1468] Compiling Fortran object scipy/integrate/libmach_lib.a.p/mach_d1mach.f.o [681/1468] Compiling Fortran object scipy/integrate/libmach_lib.a.p/mach_xerror.f.o [682/1468] Compiling Fortran object scipy/integrate/liblsoda_lib.a.p/odepack_blkdta000.f.o [683/1468] Compiling Fortran object scipy/integrate/liblsoda_lib.a.p/odepack_bnorm.f.o [684/1468] Compiling Fortran object scipy/integrate/liblsoda_lib.a.p/odepack_cfode.f.o [685/1468] Compiling Fortran object scipy/integrate/liblsoda_lib.a.p/odepack_ewset.f.o [686/1468] Compiling Fortran object scipy/integrate/liblsoda_lib.a.p/odepack_fnorm.f.o [687/1468] Compiling Fortran object scipy/integrate/liblsoda_lib.a.p/odepack_intdy.f.o [688/1468] Generating 'scipy/cluster/_vq.cpython-314-powerpc64le-linux-gnu.so.p/_vq.c' [689/1468] Compiling Fortran object scipy/integrate/liblsoda_lib.a.p/odepack_prja.f.o [690/1468] Generating 'scipy/fftpack/convolve.cpython-314-powerpc64le-linux-gnu.so.p/convolve.c' [691/1468] Compiling Fortran object scipy/integrate/liblsoda_lib.a.p/odepack_solsy.f.o [692/1468] Compiling Fortran object scipy/integrate/liblsoda_lib.a.p/odepack_srcma.f.o [693/1468] Compiling Fortran object scipy/integrate/liblsoda_lib.a.p/odepack_vmnorm.f.o [694/1468] Compiling Fortran object scipy/integrate/liblsoda_lib.a.p/odepack_lsoda.f.o [695/1468] Compiling Fortran object scipy/integrate/liblsoda_lib.a.p/odepack_xerrwv.f.o [696/1468] Compiling Fortran object scipy/integrate/liblsoda_lib.a.p/odepack_xsetf.f.o [697/1468] Compiling Fortran object scipy/integrate/liblsoda_lib.a.p/odepack_xsetun.f.o [698/1468] Compiling Fortran object scipy/integrate/liblsoda_lib.a.p/odepack_stoda.f.o [699/1468] Compiling Fortran object scipy/integrate/libdop_lib.a.p/dop_dop853.f.o [700/1468] Compiling Fortran object scipy/integrate/libvode_lib.a.p/odepack_zvode.f.o [701/1468] Compiling Fortran object scipy/integrate/libvode_lib.a.p/odepack_vode.f.o [702/1468] Generating dynamic dependency information for target _lsoda.cpython-314-powerpc64le-linux-gnu [703/1468] Generating dynamic dependency information for target _vode.cpython-314-powerpc64le-linux-gnu [704/1468] Generating dynamic dependency information for target _test_odeint_banded.cpython-314-powerpc64le-linux-gnu [705/1468] Generating dynamic dependency information for target _dop.cpython-314-powerpc64le-linux-gnu [706/1468] Compiling Fortran object scipy/integrate/libdop_lib.a.p/dop_dopri5.f.o [707/1468] Generating 'scipy/signal/_max_len_seq_inner.cpython-314-powerpc64le-linux-gnu.so.p/_max_len_seq_inner.cpp' [708/1468] Generating 'scipy/signal/_peak_finding_utils.cpython-314-powerpc64le-linux-gnu.so.p/_peak_finding_utils.c' [709/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_bispeu.f.o [710/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_bispev.f.o [711/1468] Generating 'scipy/signal/_sosfilt.cpython-314-powerpc64le-linux-gnu.so.p/_sosfilt.c' [712/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_clocur.f.o [713/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_cocosp.f.o [714/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_concon.f.o [715/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_cualde.f.o [716/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_curev.f.o [717/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_concur.f.o [718/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_curfit.f.o [719/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_evapol.f.o [720/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_dblint.f.o [721/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fourco.f.o [722/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpadno.f.o [723/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpadpo.f.o [724/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpader.f.o [725/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpback.f.o [726/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpbacp.f.o [727/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpbfout.f.o [728/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpbisp.f.o [729/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpbspl.f.o [730/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpchec.f.o [731/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpchep.f.o [732/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpched.f.o [733/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpcoco.f.o [734/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpcons.f.o [735/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpclos.f.o [736/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpcsin.f.o [737/1468] Generating 'scipy/signal/_upfirdn_apply.cpython-314-powerpc64le-linux-gnu.so.p/_upfirdn_apply.c' [738/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpcuro.f.o [739/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpcyt1.f.o [740/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpcurf.f.o [741/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpcosp.f.o [742/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpcyt2.f.o [743/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpdeno.f.o [744/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpdisc.f.o [745/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpgivs.f.o [746/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpfrno.f.o [747/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpgrpa.f.o [748/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpgrre.f.o [749/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpinst.f.o [750/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpintb.f.o [751/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpknot.f.o [752/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpgrdi.f.o [753/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpopdi.f.o [754/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fporde.f.o [755/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpopsp.f.o [756/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpgrsp.f.o [757/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fppara.f.o [758/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fppasu.f.o [759/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fppocu.f.o [760/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fppogr.f.o [761/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fprank.f.o [762/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fprati.f.o [763/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpperi.f.o [764/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fprota.f.o [765/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fprppo.f.o [766/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fprpsp.f.o [767/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpregr.f.o [768/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpseno.f.o [769/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fppola.f.o [770/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpspgr.f.o [771/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpsuev.f.o [772/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpsysy.f.o [773/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fptrnp.f.o [774/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fptrpe.f.o [775/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpsphe.f.o [776/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_insert.f.o [777/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_parcur.f.o [778/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_fpsurf.f.o [779/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_parder.f.o [780/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_parsur.f.o [781/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_pardeu.f.o [782/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_percur.f.o [783/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_polar.f.o [784/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_profil.f.o [785/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_regrid.f.o [786/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_spalde.f.o [787/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_pogrid.f.o [788/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_sphere.f.o [789/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_splev.f.o [790/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_splder.f.o [791/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_spgrid.f.o [792/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_splint.f.o [793/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_surev.f.o [794/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_sproot.f.o [795/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_surfit.f.o [796/1468] Compiling Fortran object scipy/interpolate/libfitpack_lib.a.p/fitpack_pardtc.f.o [797/1468] Generating 'scipy/interpolate/_rgi_cython.cpython-314-powerpc64le-linux-gnu.so.p/_rgi_cython.c' [798/1468] Generating 'scipy/interpolate/_interpnd.cpython-314-powerpc64le-linux-gnu.so.p/_interpnd.c' [799/1468] Generating dynamic dependency information for target _dfitpack.cpython-314-powerpc64le-linux-gnu [800/1468] Compiling C++ object scipy/interpolate/lib__fitpack.a.p/src___fitpack.cc.o In file included from /usr/include/python3.14/pyconfig.h:6, from /usr/include/python3.14/Python.h:14, from ../../../../../../usr/lib64/python3.14/site-packages/numpy/_core/include/numpy/npy_common.h:5, from ../scipy/interpolate/../_build_utils/src/npy_cblas.h:9, from ../scipy/interpolate/src/__fitpack.h:9, from ../scipy/interpolate/src/__fitpack.cc:5: /usr/include/python3.14/pyconfig-64.h:2007:9: warning: ‘_POSIX_C_SOURCE’ redefined 2007 | #define _POSIX_C_SOURCE 200809L | ^~~~~~~~~~~~~~~ In file included from /usr/include/c++/15/ppc64le-redhat-linux/bits/os_defines.h:39, from /usr/include/c++/15/ppc64le-redhat-linux/bits/c++config.h:727, from /usr/include/c++/15/bits/requires_hosted.h:31, from /usr/include/c++/15/string:40, from ../scipy/interpolate/src/__fitpack.cc:1: /usr/include/features.h:319:10: note: this is the location of the previous definition 319 | # define _POSIX_C_SOURCE 202405L | ^~~~~~~~~~~~~~~ /usr/include/python3.14/pyconfig-64.h:2043:9: warning: ‘_XOPEN_SOURCE’ redefined 2043 | #define _XOPEN_SOURCE 700 | ^~~~~~~~~~~~~ /usr/include/features.h:234:10: note: this is the location of the previous definition 234 | # define _XOPEN_SOURCE 800 | ^~~~~~~~~~~~~ [801/1468] Generating 'scipy/interpolate/_rbfinterp_pythran.cpython-314-powerpc64le-linux-gnu.so.p/_rbfinterp_pythran.cpp' [802/1468] Generating 'scipy/interpolate/_ppoly.cpython-314-powerpc64le-linux-gnu.so.p/_ppoly.c' [803/1468] Compiling Fortran object scipy/odr/libodrpack.a.p/odrpack_d_lpk.f.o [804/1468] Compiling Fortran object scipy/odr/libodrpack.a.p/odrpack_d_mprec.f.o [805/1468] Generating 'scipy/ndimage/_cytest.cpython-314-powerpc64le-linux-gnu.so.p/_cytest.c' [806/1468] Compiling Fortran object scipy/odr/libodrpack.a.p/odrpack_dlunoc.f.o [807/1468] Linking static target subprojects/qhull_r/liblibqhull_r.a [808/1468] Linking static target scipy/lib_fortranobject.a [809/1468] Linking static target scipy/libdummy_g77_abi_wrappers.a [810/1468] Generating 'scipy/ndimage/_ni_label.cpython-314-powerpc64le-linux-gnu.so.p/_ni_label.c' [811/1468] Compiling C object scipy/_lib/_test_ccallback.cpython-314-powerpc64le-linux-gnu.so.p/src__test_ccallback.c.o [812/1468] Compiling C object scipy/_lib/_fpumode.cpython-314-powerpc64le-linux-gnu.so.p/_fpumode.c.o [813/1468] Compiling C object scipy/_lib/_test_deprecation_call.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__test_deprecation_call.c.o [814/1468] Compiling C object scipy/_lib/_test_deprecation_def.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__test_deprecation_def.c.o [815/1468] Compiling C object scipy/_lib/_ccallback_c.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__ccallback_c.c.o [816/1468] Compiling C object scipy/_lib/messagestream.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated_messagestream.c.o [817/1468] Compiling C++ object scipy/_lib/_uarray/_uarray.cpython-314-powerpc64le-linux-gnu.so.p/vectorcall.cxx.o [818/1468] Linking static target scipy/special/libcdflib.a [819/1468] Compiling Fortran object scipy/odr/libodrpack.a.p/odrpack_d_odr.f.o [820/1468] Compiling C++ object scipy/special/_special_ufuncs.cpython-314-powerpc64le-linux-gnu.so.p/_special_ufuncs_docs.cpp.o [821/1468] Compiling C++ object scipy/special/_special_ufuncs.cpython-314-powerpc64le-linux-gnu.so.p/sf_error.cc.o [822/1468] Compiling C++ object scipy/_lib/_uarray/_uarray.cpython-314-powerpc64le-linux-gnu.so.p/_uarray_dispatch.cxx.o In file included from /usr/include/python3.14/Python.h:81, from ../scipy/_lib/_uarray/_uarray_dispatch.cxx:1: In function ‘PyTypeObject* _Py_TYPE(PyObject*)’, inlined from ‘static void {anonymous}::BackendState::dealloc({anonymous}::BackendState*)’ at ../scipy/_lib/_uarray/_uarray_dispatch.cxx:316:5: /usr/include/python3.14/object.h:270:20: warning: ‘*(PyObject*)self._object::ob_type’ is used uninitialized [-Wuninitialized] 270 | return ob->ob_type; | ^~~~~~~ In function ‘PyTypeObject* _Py_TYPE(PyObject*)’, inlined from ‘static void {anonymous}::SkipBackendContext::dealloc({anonymous}::SkipBackendContext*)’ at ../scipy/_lib/_uarray/_uarray_dispatch.cxx:866:5: /usr/include/python3.14/object.h:270:20: warning: ‘*(PyObject*)self._object::ob_type’ is used uninitialized [-Wuninitialized] 270 | return ob->ob_type; | ^~~~~~~ In function ‘PyTypeObject* _Py_TYPE(PyObject*)’, inlined from ‘static void {anonymous}::SetBackendContext::dealloc({anonymous}::SetBackendContext*)’ at ../scipy/_lib/_uarray/_uarray_dispatch.cxx:768:5: /usr/include/python3.14/object.h:270:20: warning: ‘*(PyObject*)self._object::ob_type’ is used uninitialized [-Wuninitialized] 270 | return ob->ob_type; | ^~~~~~~ In function ‘PyTypeObject* _Py_TYPE(PyObject*)’, inlined from ‘static void {anonymous}::Function::dealloc({anonymous}::Function*)’ at ../scipy/_lib/_uarray/_uarray_dispatch.cxx:1091:5: /usr/include/python3.14/object.h:270:20: warning: ‘*(PyObject*)self._object::ob_type’ is used uninitialized [-Wuninitialized] 270 | return ob->ob_type; | ^~~~~~~ [823/1468] Compiling C++ object scipy/special/_gufuncs.cpython-314-powerpc64le-linux-gnu.so.p/_gufuncs_docs.cpp.o [824/1468] Compiling C++ object scipy/special/_gufuncs.cpython-314-powerpc64le-linux-gnu.so.p/sf_error.cc.o [825/1468] Compiling C++ object scipy/special/_specfun.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__specfun.cpp.o [826/1468] Compiling C object scipy/special/_ufuncs.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__ufuncs.c.o [827/1468] Compiling C object scipy/special/_ufuncs.cpython-314-powerpc64le-linux-gnu.so.p/_cosine.c.o [828/1468] Compiling C++ object scipy/special/_gufuncs.cpython-314-powerpc64le-linux-gnu.so.p/_gufuncs.cpp.o [829/1468] Compiling C++ object scipy/special/_ufuncs.cpython-314-powerpc64le-linux-gnu.so.p/sf_error.cc.o [830/1468] Compiling C++ object scipy/special/_ufuncs.cpython-314-powerpc64le-linux-gnu.so.p/dd_real_wrappers.cpp.o In file included from ../scipy/special/dd_real_wrappers.cpp:8: ../subprojects/xsf/include/xsf/cephes/dd_real.h: In function ‘std::pair xsf::cephes::detail::divrem(const double_double&, const double_double&)’: ../subprojects/xsf/include/xsf/cephes/dd_real.h:384:66: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 384 | divrem(const double_double &lhs, const double_double &rhs) { | ^ [831/1468] Compiling C++ object scipy/special/_ufuncs.cpython-314-powerpc64le-linux-gnu.so.p/xsf_wrappers.cpp.o In file included from ../subprojects/xsf/include/xsf/log.h:3, from ../scipy/special/xsf_wrappers.cpp:18: ../subprojects/xsf/include/xsf/cephes/dd_real.h: In function ‘std::pair xsf::cephes::detail::divrem(const double_double&, const double_double&)’: ../subprojects/xsf/include/xsf/cephes/dd_real.h:384:66: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 384 | divrem(const double_double &lhs, const double_double &rhs) { | ^ [832/1468] Compiling C++ object scipy/special/_ufuncs_cxx.cpython-314-powerpc64le-linux-gnu.so.p/_wright.cxx.o [833/1468] Compiling C++ object scipy/special/_ufuncs_cxx.cpython-314-powerpc64le-linux-gnu.so.p/ellint_carlson_wrap.cxx.o [834/1468] Compiling C++ object scipy/special/_ufuncs_cxx.cpython-314-powerpc64le-linux-gnu.so.p/sf_error.cc.o [835/1468] Compiling C++ object scipy/special/_special_ufuncs.cpython-314-powerpc64le-linux-gnu.so.p/_special_ufuncs.cpp.o [836/1468] Compiling C++ object scipy/special/_ufuncs_cxx.cpython-314-powerpc64le-linux-gnu.so.p/wright.cc.o [837/1468] Compiling C++ object scipy/special/_ellip_harm_2.cpython-314-powerpc64le-linux-gnu.so.p/sf_error.cc.o [838/1468] Compiling C object scipy/special/_ellip_harm_2.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__ellip_harm_2.c.o [839/1468] Compiling C object scipy/special/cython_special.cpython-314-powerpc64le-linux-gnu.so.p/_cosine.c.o [840/1468] Compiling C++ object scipy/special/cython_special.cpython-314-powerpc64le-linux-gnu.so.p/xsf_wrappers.cpp.o In file included from ../subprojects/xsf/include/xsf/log.h:3, from ../scipy/special/xsf_wrappers.cpp:18: ../subprojects/xsf/include/xsf/cephes/dd_real.h: In function ‘std::pair xsf::cephes::detail::divrem(const double_double&, const double_double&)’: ../subprojects/xsf/include/xsf/cephes/dd_real.h:384:66: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 384 | divrem(const double_double &lhs, const double_double &rhs) { | ^ [841/1468] Compiling C++ object scipy/special/cython_special.cpython-314-powerpc64le-linux-gnu.so.p/sf_error.cc.o [842/1468] Compiling C++ object scipy/special/cython_special.cpython-314-powerpc64le-linux-gnu.so.p/dd_real_wrappers.cpp.o In file included from ../scipy/special/dd_real_wrappers.cpp:8: ../subprojects/xsf/include/xsf/cephes/dd_real.h: In function ‘std::pair xsf::cephes::detail::divrem(const double_double&, const double_double&)’: ../subprojects/xsf/include/xsf/cephes/dd_real.h:384:66: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 384 | divrem(const double_double &lhs, const double_double &rhs) { | ^ [843/1468] Compiling C object scipy/special/_comb.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__comb.c.o [844/1468] Compiling C object scipy/special/_test_internal.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__test_internal.c.o [845/1468] Compiling C++ object scipy/special/_test_internal.cpython-314-powerpc64le-linux-gnu.so.p/dd_real_wrappers.cpp.o In file included from ../scipy/special/dd_real_wrappers.cpp:8: ../subprojects/xsf/include/xsf/cephes/dd_real.h: In function ‘std::pair xsf::cephes::detail::divrem(const double_double&, const double_double&)’: ../subprojects/xsf/include/xsf/cephes/dd_real.h:384:66: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 384 | divrem(const double_double &lhs, const double_double &rhs) { | ^ [846/1468] Compiling C++ object scipy/special/_ufuncs_cxx.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__ufuncs_cxx.cpp.o In file included from ../subprojects/boost_math/math/include/boost/math/special_functions/detail/bernoulli_details.hpp:11, from ../subprojects/boost_math/math/include/boost/math/special_functions/bernoulli.hpp:16, from ../subprojects/boost_math/math/include/boost/math/special_functions/gamma.hpp:41, from ../subprojects/boost_math/math/include/boost/math/special_functions/beta.hpp:22, from ../scipy/special/boost_special_functions.h:9, from scipy/special/_ufuncs_cxx_defs.h:3, from scipy/special/_ufuncs_cxx.cpython-314-powerpc64le-linux-gnu.so.p/_ufuncs_cxx.cpp:1153: ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp: In instantiation of ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::tools::bracket_and_solve_root(F, const T&, T, bool, Tol, uintmax_t&, const Policy&) [with F = boost::math::quantile, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile > >(const skew_normal_distribution, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile > >&, const float&)::; T = float; Tol = eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >; uintmax_t = long unsigned int]’: ../subprojects/boost_math/math/include/boost/math/distributions/skew_normal.hpp:694:50: required from ‘RealType boost::math::quantile(const skew_normal_distribution&, const RealType&) [with RealType = float; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 694 | auto p_result = tools::bracket_and_solve_root(fun, result, scaling_factor, true, tools::eps_tolerance(get_digits), max_iter, Policy()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1268:33: required from ‘Real skewnorm_ppf_wrap(Real, Real, Real, Real) [with Real = float]’ 1268 | return boost::math::quantile( | ~~~~~~~~~~~~~~~~~~~~~^ 1269 | boost::math::skew_normal_distribution(l, sc, sh), x); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1275:29: required from here 1275 | return skewnorm_ppf_wrap(x, l, sc, sh); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp:516:48: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 516 | BOOST_MATH_GPU_ENABLED boost::math::pair bracket_and_solve_root(F f, const T& guess, T factor, bool rising, Tol tol, boost::math::uintmax_t& max_iter, const Policy& pol) | ^~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp: In instantiation of ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::tools::bracket_and_solve_root(F, const T&, T, bool, Tol, uintmax_t&, const Policy&) [with F = boost::math::quantile, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile > >(const skew_normal_distribution, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile > >&, const double&)::; T = double; Tol = eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >; uintmax_t = long unsigned int]’: ../subprojects/boost_math/math/include/boost/math/distributions/skew_normal.hpp:694:50: required from ‘RealType boost::math::quantile(const skew_normal_distribution&, const RealType&) [with RealType = double; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 694 | auto p_result = tools::bracket_and_solve_root(fun, result, scaling_factor, true, tools::eps_tolerance(get_digits), max_iter, Policy()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1268:33: required from ‘Real skewnorm_ppf_wrap(Real, Real, Real, Real) [with Real = double]’ 1268 | return boost::math::quantile( | ~~~~~~~~~~~~~~~~~~~~~^ 1269 | boost::math::skew_normal_distribution(l, sc, sh), x); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1281:29: required from here 1281 | return skewnorm_ppf_wrap(x, l, sc, sh); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp:516:48: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 516 | BOOST_MATH_GPU_ENABLED boost::math::pair bracket_and_solve_root(F f, const T& guess, T factor, bool rising, Tol tol, boost::math::uintmax_t& max_iter, const Policy& pol) | ^~~~~~~~~~~~~~~~~~~~~~ In file included from ../subprojects/boost_math/math/include/boost/math/special_functions/gamma.hpp:26: ../subprojects/boost_math/math/include/boost/math/policies/error_handling.hpp: In instantiation of ‘std::pair<_FIter, _FIter> boost::math::detail::pair_from_single(const T&) [with T = float]’: ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp:543:57: required from ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::tools::bracket_and_solve_root(F, const T&, T, bool, Tol, uintmax_t&, const Policy&) [with F = boost::math::quantile, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile > >(const skew_normal_distribution, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile > >&, const float&)::; T = float; Tol = eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >; uintmax_t = long unsigned int]’ 543 | return boost::math::detail::pair_from_single(policies::raise_evaluation_error(function, "Unable to bracket root, last nearest value was %1%", b, pol)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/skew_normal.hpp:694:50: required from ‘RealType boost::math::quantile(const skew_normal_distribution&, const RealType&) [with RealType = float; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 694 | auto p_result = tools::bracket_and_solve_root(fun, result, scaling_factor, true, tools::eps_tolerance(get_digits), max_iter, Policy()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1268:33: required from ‘Real skewnorm_ppf_wrap(Real, Real, Real, Real) [with Real = float]’ 1268 | return boost::math::quantile( | ~~~~~~~~~~~~~~~~~~~~~^ 1269 | boost::math::skew_normal_distribution(l, sc, sh), x); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1275:29: required from here 1275 | return skewnorm_ppf_wrap(x, l, sc, sh); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/policies/error_handling.hpp:1038:48: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 1038 | BOOST_MATH_GPU_ENABLED boost::math::pair pair_from_single(const T& val) BOOST_MATH_NOEXCEPT(T) | ^~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/policies/error_handling.hpp: In instantiation of ‘std::pair<_FIter, _FIter> boost::math::detail::pair_from_single(const T&) [with T = double]’: ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp:543:57: required from ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::tools::bracket_and_solve_root(F, const T&, T, bool, Tol, uintmax_t&, const Policy&) [with F = boost::math::quantile, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile > >(const skew_normal_distribution, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile > >&, const double&)::; T = double; Tol = eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >; uintmax_t = long unsigned int]’ 543 | return boost::math::detail::pair_from_single(policies::raise_evaluation_error(function, "Unable to bracket root, last nearest value was %1%", b, pol)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/skew_normal.hpp:694:50: required from ‘RealType boost::math::quantile(const skew_normal_distribution&, const RealType&) [with RealType = double; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 694 | auto p_result = tools::bracket_and_solve_root(fun, result, scaling_factor, true, tools::eps_tolerance(get_digits), max_iter, Policy()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1268:33: required from ‘Real skewnorm_ppf_wrap(Real, Real, Real, Real) [with Real = double]’ 1268 | return boost::math::quantile( | ~~~~~~~~~~~~~~~~~~~~~^ 1269 | boost::math::skew_normal_distribution(l, sc, sh), x); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1281:29: required from here 1281 | return skewnorm_ppf_wrap(x, l, sc, sh); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/policies/error_handling.hpp:1038:48: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 1038 | BOOST_MATH_GPU_ENABLED boost::math::pair pair_from_single(const T& val) BOOST_MATH_NOEXCEPT(T) | ^~~~~~~~~~~~~~~~ In file included from ../subprojects/boost_math/math/include/boost/math/distributions.hpp:40, from ../scipy/special/boost_special_functions.h:15: ../subprojects/boost_math/math/include/boost/math/distributions/non_central_chi_squared.hpp: In instantiation of ‘const std::pair<_FIter, _FIter> boost::math::range(const non_central_chi_squared_distribution&) [with RealType = float; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::default_policy, policies::default_policy, policies::default_policy, policies::default_policy, policies::default_policy, policies::default_policy, policies::default_policy, policies::default_policy>]’: ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp:73:33: required from ‘typename Dist::value_type boost::math::detail::generic_quantile(const Dist&, const typename Dist::value_type&, const typename Dist::value_type&, bool, const char*) [with Dist = boost::math::non_central_chi_squared_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy> >; typename Dist::value_type = float]’ 73 | ? check_range_result(range(dist).second, forwarding_policy(), function) | ~~~~~^~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_chi_squared.hpp:476:57: required from ‘RealType boost::math::detail::nccs_quantile(const boost::math::non_central_chi_squared_distribution&, const RealType&, bool) [with RealType = float; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >]’ 476 | value_type result = detail::generic_quantile( | ~~~~~~~~~~~~~~~~~~~~~~~~^ 477 | non_central_chi_squared_distribution(k, l), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 478 | p, | ~~ 479 | guess, | ~~~~~~ 480 | comp, | ~~~~~ 481 | function); | ~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_chi_squared.hpp:981:38: required from ‘RealType boost::math::quantile(const non_central_chi_squared_distribution&, const RealType&) [with RealType = float; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 981 | return detail::nccs_quantile(dist, p, false); | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:762:33: required from ‘Real ncx2_ppf_wrap(Real, Real, Real) [with Real = float]’ 762 | return boost::math::quantile( | ~~~~~~~~~~~~~~~~~~~~~^ 763 | boost::math::non_central_chi_squared_distribution(k, l), x); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:769:25: required from here 769 | return ncx2_ppf_wrap(x, k, l); | ~~~~~~~~~~~~~^~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_chi_squared.hpp:789:81: note: parameter passing for argument of type ‘const std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 789 | BOOST_MATH_GPU_ENABLED inline const boost::math::pair range(const non_central_chi_squared_distribution& /* dist */) | ^~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_chi_squared.hpp: In instantiation of ‘const std::pair<_FIter, _FIter> boost::math::range(const non_central_chi_squared_distribution&) [with RealType = double; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::default_policy, policies::default_policy, policies::default_policy, policies::default_policy, policies::default_policy, policies::default_policy, policies::default_policy, policies::default_policy>]’: ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp:73:33: required from ‘typename Dist::value_type boost::math::detail::generic_quantile(const Dist&, const typename Dist::value_type&, const typename Dist::value_type&, bool, const char*) [with Dist = boost::math::non_central_chi_squared_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy> >; typename Dist::value_type = double]’ 73 | ? check_range_result(range(dist).second, forwarding_policy(), function) | ~~~~~^~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_chi_squared.hpp:476:57: required from ‘RealType boost::math::detail::nccs_quantile(const boost::math::non_central_chi_squared_distribution&, const RealType&, bool) [with RealType = double; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >]’ 476 | value_type result = detail::generic_quantile( | ~~~~~~~~~~~~~~~~~~~~~~~~^ 477 | non_central_chi_squared_distribution(k, l), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 478 | p, | ~~ 479 | guess, | ~~~~~~ 480 | comp, | ~~~~~ 481 | function); | ~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_chi_squared.hpp:981:38: required from ‘RealType boost::math::quantile(const non_central_chi_squared_distribution&, const RealType&) [with RealType = double; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 981 | return detail::nccs_quantile(dist, p, false); | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:762:33: required from ‘Real ncx2_ppf_wrap(Real, Real, Real) [with Real = double]’ 762 | return boost::math::quantile( | ~~~~~~~~~~~~~~~~~~~~~^ 763 | boost::math::non_central_chi_squared_distribution(k, l), x); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:775:25: required from here 775 | return ncx2_ppf_wrap(x, k, l); | ~~~~~~~~~~~~~^~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_chi_squared.hpp:789:81: note: parameter passing for argument of type ‘const std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 789 | BOOST_MATH_GPU_ENABLED inline const boost::math::pair range(const non_central_chi_squared_distribution& /* dist */) | ^~~~~ In file included from ../subprojects/boost_math/math/include/boost/math/distributions.hpp:41: ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp: In instantiation of ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::detail::bracket_and_solve_root_01(F, const T&, T, bool, Tol, uintmax_t&, const Policy&) [with F = nc_beta_quantile_functor, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> > >; T = float; Tol = boost::math::tools::eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >; uintmax_t = long unsigned int]’: ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:516:43: required from ‘RealType boost::math::detail::nc_beta_quantile(const boost::math::non_central_beta_distribution&, const RealType&, bool) [with RealType = float; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >]’ 516 | = bracket_and_solve_root_01( | ~~~~~~~~~~~~~~~~~~~~~~~~~^ 517 | f, guess, value_type(2.5), true, tol, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 518 | max_iter, Policy()); | ~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:959:41: required from ‘RealType boost::math::quantile(const non_central_beta_distribution&, const RealType&) [with RealType = float; Policy = policies::policy, policies::promote_double, policies::max_root_iterations<400> >]’ 959 | return detail::nc_beta_quantile(dist, p, false); | ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_f.hpp:385:31: required from ‘RealType boost::math::quantile(const non_central_f_distribution&, const RealType&) [with RealType = float; Policy = policies::policy, policies::promote_double, policies::max_root_iterations<400> >]’ 385 | RealType x = quantile(boost::math::non_central_beta_distribution(alpha, beta, dist.non_centrality()), p); | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:902:48: required from ‘Real ncf_ppf_wrap(Real, Real, Real, Real) [with Real = float]’ 902 | y = boost::math::quantile( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 903 | boost::math::non_central_f_distribution(v1, v2, l), x); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:923:24: required from here 923 | return ncf_ppf_wrap(v1, v2, l, x); | ~~~~~~~~~~~~^~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:313:57: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 313 | BOOST_MATH_GPU_ENABLED boost::math::pair bracket_and_solve_root_01(F f, const T& guess, T factor, bool rising, Tol tol, boost::math::uintmax_t& max_iter, const Policy& pol) | ^~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp: In instantiation of ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::detail::bracket_and_solve_root_01(F, const T&, T, bool, Tol, uintmax_t&, const Policy&) [with F = nc_beta_quantile_functor, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> > >; T = double; Tol = boost::math::tools::eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >; uintmax_t = long unsigned int]’: ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:516:43: required from ‘RealType boost::math::detail::nc_beta_quantile(const boost::math::non_central_beta_distribution&, const RealType&, bool) [with RealType = double; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >]’ 516 | = bracket_and_solve_root_01( | ~~~~~~~~~~~~~~~~~~~~~~~~~^ 517 | f, guess, value_type(2.5), true, tol, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 518 | max_iter, Policy()); | ~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:959:41: required from ‘RealType boost::math::quantile(const non_central_beta_distribution&, const RealType&) [with RealType = double; Policy = policies::policy, policies::promote_double, policies::max_root_iterations<400> >]’ 959 | return detail::nc_beta_quantile(dist, p, false); | ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_f.hpp:385:31: required from ‘RealType boost::math::quantile(const non_central_f_distribution&, const RealType&) [with RealType = double; Policy = policies::policy, policies::promote_double, policies::max_root_iterations<400> >]’ 385 | RealType x = quantile(boost::math::non_central_beta_distribution(alpha, beta, dist.non_centrality()), p); | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:902:48: required from ‘Real ncf_ppf_wrap(Real, Real, Real, Real) [with Real = double]’ 902 | y = boost::math::quantile( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 903 | boost::math::non_central_f_distribution(v1, v2, l), x); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:929:24: required from here 929 | return ncf_ppf_wrap(v1, v2, l, x); | ~~~~~~~~~~~~^~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:313:57: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 313 | BOOST_MATH_GPU_ENABLED boost::math::pair bracket_and_solve_root_01(F f, const T& guess, T factor, bool rising, Tol tol, boost::math::uintmax_t& max_iter, const Policy& pol) | ^~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp: In instantiation of ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::detail::bracket_and_solve_root_01(F, const T&, T, bool, Tol, uintmax_t&, const Policy&) [with F = nc_beta_quantile_functor, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile > >; T = float; Tol = boost::math::tools::eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >; uintmax_t = long unsigned int]’: ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:516:43: required from ‘RealType boost::math::detail::nc_beta_quantile(const boost::math::non_central_beta_distribution&, const RealType&, bool) [with RealType = float; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >]’ 516 | = bracket_and_solve_root_01( | ~~~~~~~~~~~~~~~~~~~~~~~~~^ 517 | f, guess, value_type(2.5), true, tol, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 518 | max_iter, Policy()); | ~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:965:41: required from ‘RealType boost::math::quantile(const complemented2_type, RealType>&) [with RealType = float; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 965 | return detail::nc_beta_quantile(c.dist, c.param, true); | ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_f.hpp:399:31: required from ‘RealType boost::math::quantile(const complemented2_type, RealType>&) [with RealType = float; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 399 | RealType x = quantile(complement(boost::math::non_central_beta_distribution(alpha, beta, c.dist.non_centrality()), c.param)); | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:956:33: required from ‘Real ncf_isf_wrap(Real, Real, Real, Real) [with Real = float]’ 956 | return boost::math::quantile(boost::math::complement( | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ 957 | boost::math::non_central_f_distribution(v1, v2, l), x)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:963:24: required from here 963 | return ncf_isf_wrap(x, v1, v2, l); | ~~~~~~~~~~~~^~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:313:57: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 313 | BOOST_MATH_GPU_ENABLED boost::math::pair bracket_and_solve_root_01(F f, const T& guess, T factor, bool rising, Tol tol, boost::math::uintmax_t& max_iter, const Policy& pol) | ^~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp: In instantiation of ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::detail::bracket_and_solve_root_01(F, const T&, T, bool, Tol, uintmax_t&, const Policy&) [with F = nc_beta_quantile_functor, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile > >; T = double; Tol = boost::math::tools::eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >; uintmax_t = long unsigned int]’: ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:516:43: required from ‘RealType boost::math::detail::nc_beta_quantile(const boost::math::non_central_beta_distribution&, const RealType&, bool) [with RealType = double; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >]’ 516 | = bracket_and_solve_root_01( | ~~~~~~~~~~~~~~~~~~~~~~~~~^ 517 | f, guess, value_type(2.5), true, tol, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 518 | max_iter, Policy()); | ~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:965:41: required from ‘RealType boost::math::quantile(const complemented2_type, RealType>&) [with RealType = double; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 965 | return detail::nc_beta_quantile(c.dist, c.param, true); | ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_f.hpp:399:31: required from ‘RealType boost::math::quantile(const complemented2_type, RealType>&) [with RealType = double; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 399 | RealType x = quantile(complement(boost::math::non_central_beta_distribution(alpha, beta, c.dist.non_centrality()), c.param)); | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:956:33: required from ‘Real ncf_isf_wrap(Real, Real, Real, Real) [with Real = double]’ 956 | return boost::math::quantile(boost::math::complement( | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ 957 | boost::math::non_central_f_distribution(v1, v2, l), x)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:969:24: required from here 969 | return ncf_isf_wrap(x, v1, v2, l); | ~~~~~~~~~~~~^~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:313:57: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 313 | BOOST_MATH_GPU_ENABLED boost::math::pair bracket_and_solve_root_01(F f, const T& guess, T factor, bool rising, Tol tol, boost::math::uintmax_t& max_iter, const Policy& pol) | ^~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../subprojects/boost_math/math/include/boost/math/distributions.hpp:43: ../subprojects/boost_math/math/include/boost/math/distributions/non_central_t.hpp: In instantiation of ‘const std::pair<_FIter, _FIter> boost::math::range(const non_central_t_distribution&) [with RealType = float; Policy = policies::policy, policies::promote_double, policies::max_root_iterations<400> >]’: ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp:73:33: required from ‘typename Dist::value_type boost::math::detail::generic_quantile(const Dist&, const typename Dist::value_type&, const typename Dist::value_type&, bool, const char*) [with Dist = boost::math::non_central_t_distribution, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> > >; typename Dist::value_type = float]’ 73 | ? check_range_result(range(dist).second, forwarding_policy(), function) | ~~~~~^~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_t.hpp:384:57: required from ‘T boost::math::detail::non_central_t_quantile(const char*, T, T, T, T, const Policy&) [with T = float; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >]’ 384 | value_type result = detail::generic_quantile( | ~~~~~~~~~~~~~~~~~~~~~~~~^ 385 | non_central_t_distribution(v, delta), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 386 | (p < q ? p : q), | ~~~~~~~~~~~~~~~~ 387 | guess, | ~~~~~~ 388 | (p >= q), | ~~~~~~~~~ 389 | function); | ~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_t.hpp:1302:47: required from ‘RealType boost::math::quantile(const non_central_t_distribution&, const RealType&) [with RealType = float; Policy = policies::policy, policies::promote_double, policies::max_root_iterations<400> >]’ 1302 | return detail::non_central_t_quantile(function, v, l, p, RealType(1-p), Policy()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1112:27: required from ‘Real nct_ppf_wrap(Real, Real, Real) [with Real = float]’ 1112 | y = boost::math::quantile( | ~~~~~~~~~~~~~~~~~~~~~^ 1113 | boost::math::non_central_t_distribution(v, l), x); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1135:24: required from here 1135 | return nct_ppf_wrap(v, l, x); | ~~~~~~~~~~~~^~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_t.hpp:967:50: note: parameter passing for argument of type ‘const std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 967 | inline const std::pair range(const non_central_t_distribution& /* dist */) | ^~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_t.hpp: In instantiation of ‘const std::pair<_FIter, _FIter> boost::math::range(const non_central_t_distribution&) [with RealType = double; Policy = policies::policy, policies::promote_double, policies::max_root_iterations<400> >]’: ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp:73:33: required from ‘typename Dist::value_type boost::math::detail::generic_quantile(const Dist&, const typename Dist::value_type&, const typename Dist::value_type&, bool, const char*) [with Dist = boost::math::non_central_t_distribution, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> > >; typename Dist::value_type = double]’ 73 | ? check_range_result(range(dist).second, forwarding_policy(), function) | ~~~~~^~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_t.hpp:384:57: required from ‘T boost::math::detail::non_central_t_quantile(const char*, T, T, T, T, const Policy&) [with T = double; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >]’ 384 | value_type result = detail::generic_quantile( | ~~~~~~~~~~~~~~~~~~~~~~~~^ 385 | non_central_t_distribution(v, delta), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 386 | (p < q ? p : q), | ~~~~~~~~~~~~~~~~ 387 | guess, | ~~~~~~ 388 | (p >= q), | ~~~~~~~~~ 389 | function); | ~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_t.hpp:1302:47: required from ‘RealType boost::math::quantile(const non_central_t_distribution&, const RealType&) [with RealType = double; Policy = policies::policy, policies::promote_double, policies::max_root_iterations<400> >]’ 1302 | return detail::non_central_t_quantile(function, v, l, p, RealType(1-p), Policy()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1112:27: required from ‘Real nct_ppf_wrap(Real, Real, Real) [with Real = double]’ 1112 | y = boost::math::quantile( | ~~~~~~~~~~~~~~~~~~~~~^ 1113 | boost::math::non_central_t_distribution(v, l), x); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1141:24: required from here 1141 | return nct_ppf_wrap(v, l, x); | ~~~~~~~~~~~~^~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_t.hpp:967:50: note: parameter passing for argument of type ‘const std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 967 | inline const std::pair range(const non_central_t_distribution& /* dist */) | ^~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_t.hpp: In instantiation of ‘const std::pair<_FIter, _FIter> boost::math::range(const non_central_t_distribution&) [with RealType = float; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::default_policy, policies::default_policy, policies::default_policy, policies::default_policy, policies::default_policy, policies::default_policy, policies::default_policy, policies::default_policy>]’: ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp:73:33: required from ‘typename Dist::value_type boost::math::detail::generic_quantile(const Dist&, const typename Dist::value_type&, const typename Dist::value_type&, bool, const char*) [with Dist = boost::math::non_central_t_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy> >; typename Dist::value_type = float]’ 73 | ? check_range_result(range(dist).second, forwarding_policy(), function) | ~~~~~^~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_t.hpp:384:57: required from ‘T boost::math::detail::non_central_t_quantile(const char*, T, T, T, T, const Policy&) [with T = float; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >]’ 384 | value_type result = detail::generic_quantile( | ~~~~~~~~~~~~~~~~~~~~~~~~^ 385 | non_central_t_distribution(v, delta), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 386 | (p < q ? p : q), | ~~~~~~~~~~~~~~~~ 387 | guess, | ~~~~~~ 388 | (p >= q), | ~~~~~~~~~ 389 | function); | ~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_t.hpp:1313:47: required from ‘RealType boost::math::quantile(const complemented2_type, RealType>&) [with RealType = float; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 1313 | return detail::non_central_t_quantile(function, v, l, RealType(1-q), q, Policy()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1168:33: required from ‘Real nct_isf_wrap(Real, Real, Real) [with Real = float]’ 1168 | return boost::math::quantile(boost::math::complement( | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ 1169 | boost::math::non_central_t_distribution(v, l), x)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1175:24: required from here 1175 | return nct_isf_wrap(x, v, l); | ~~~~~~~~~~~~^~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_t.hpp:967:50: note: parameter passing for argument of type ‘const std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 967 | inline const std::pair range(const non_central_t_distribution& /* dist */) | ^~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_t.hpp: In instantiation of ‘const std::pair<_FIter, _FIter> boost::math::range(const non_central_t_distribution&) [with RealType = double; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::default_policy, policies::default_policy, policies::default_policy, policies::default_policy, policies::default_policy, policies::default_policy, policies::default_policy, policies::default_policy>]’: ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp:73:33: required from ‘typename Dist::value_type boost::math::detail::generic_quantile(const Dist&, const typename Dist::value_type&, const typename Dist::value_type&, bool, const char*) [with Dist = boost::math::non_central_t_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy> >; typename Dist::value_type = double]’ 73 | ? check_range_result(range(dist).second, forwarding_policy(), function) | ~~~~~^~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_t.hpp:384:57: required from ‘T boost::math::detail::non_central_t_quantile(const char*, T, T, T, T, const Policy&) [with T = double; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >]’ 384 | value_type result = detail::generic_quantile( | ~~~~~~~~~~~~~~~~~~~~~~~~^ 385 | non_central_t_distribution(v, delta), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 386 | (p < q ? p : q), | ~~~~~~~~~~~~~~~~ 387 | guess, | ~~~~~~ 388 | (p >= q), | ~~~~~~~~~ 389 | function); | ~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_t.hpp:1313:47: required from ‘RealType boost::math::quantile(const complemented2_type, RealType>&) [with RealType = double; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 1313 | return detail::non_central_t_quantile(function, v, l, RealType(1-q), q, Policy()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1168:33: required from ‘Real nct_isf_wrap(Real, Real, Real) [with Real = double]’ 1168 | return boost::math::quantile(boost::math::complement( | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ 1169 | boost::math::non_central_t_distribution(v, l), x)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1181:24: required from here 1181 | return nct_isf_wrap(x, v, l); | ~~~~~~~~~~~~^~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_t.hpp:967:50: note: parameter passing for argument of type ‘const std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 967 | inline const std::pair range(const non_central_t_distribution& /* dist */) | ^~~~~ In file included from /usr/include/c++/15/bits/stl_algobase.h:64, from /usr/include/c++/15/bits/specfun.h:43, from /usr/include/c++/15/cmath:3913, from /usr/include/c++/15/math.h:36, from /usr/include/python3.14/Python.h:22, from scipy/special/_ufuncs_cxx.cpython-314-powerpc64le-linux-gnu.so.p/_ufuncs_cxx.cpp:19: /usr/include/c++/15/bits/stl_pair.h: In instantiation of ‘constexpr std::pair::type>::__type, typename std::__strip_reference_wrapper::type>::__type> std::make_pair(_T1&&, _T2&&) [with _T1 = const float&; _T2 = const float&; typename __strip_reference_wrapper::type>::__type = float; typename decay<_Tp>::type = float; typename __strip_reference_wrapper::type>::__type = float; typename decay<_Tp2>::type = float]’: ../subprojects/boost_math/math/include/boost/math/policies/error_handling.hpp:1040:33: required from ‘std::pair<_FIter, _FIter> boost::math::detail::pair_from_single(const T&) [with T = float]’ 1040 | return boost::math::make_pair(val, val); | ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp:543:57: required from ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::tools::bracket_and_solve_root(F, const T&, T, bool, Tol, uintmax_t&, const Policy&) [with F = boost::math::quantile, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile > >(const skew_normal_distribution, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile > >&, const float&)::; T = float; Tol = eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >; uintmax_t = long unsigned int]’ 543 | return boost::math::detail::pair_from_single(policies::raise_evaluation_error(function, "Unable to bracket root, last nearest value was %1%", b, pol)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/skew_normal.hpp:694:50: required from ‘RealType boost::math::quantile(const skew_normal_distribution&, const RealType&) [with RealType = float; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 694 | auto p_result = tools::bracket_and_solve_root(fun, result, scaling_factor, true, tools::eps_tolerance(get_digits), max_iter, Policy()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1268:33: required from ‘Real skewnorm_ppf_wrap(Real, Real, Real, Real) [with Real = float]’ 1268 | return boost::math::quantile( | ~~~~~~~~~~~~~~~~~~~~~^ 1269 | boost::math::skew_normal_distribution(l, sc, sh), x); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1275:29: required from here 1275 | return skewnorm_ppf_wrap(x, l, sc, sh); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~ /usr/include/c++/15/bits/stl_pair.h:1164:5: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 1164 | make_pair(_T1&& __x, _T2&& __y) | ^~~~~~~~~ /usr/include/c++/15/bits/stl_pair.h: In instantiation of ‘constexpr std::pair::type>::__type, typename std::__strip_reference_wrapper::type>::__type> std::make_pair(_T1&&, _T2&&) [with _T1 = const double&; _T2 = const double&; typename __strip_reference_wrapper::type>::__type = double; typename decay<_Tp>::type = double; typename __strip_reference_wrapper::type>::__type = double; typename decay<_Tp2>::type = double]’: ../subprojects/boost_math/math/include/boost/math/policies/error_handling.hpp:1040:33: required from ‘std::pair<_FIter, _FIter> boost::math::detail::pair_from_single(const T&) [with T = double]’ 1040 | return boost::math::make_pair(val, val); | ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp:543:57: required from ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::tools::bracket_and_solve_root(F, const T&, T, bool, Tol, uintmax_t&, const Policy&) [with F = boost::math::quantile, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile > >(const skew_normal_distribution, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile > >&, const double&)::; T = double; Tol = eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >; uintmax_t = long unsigned int]’ 543 | return boost::math::detail::pair_from_single(policies::raise_evaluation_error(function, "Unable to bracket root, last nearest value was %1%", b, pol)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/skew_normal.hpp:694:50: required from ‘RealType boost::math::quantile(const skew_normal_distribution&, const RealType&) [with RealType = double; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 694 | auto p_result = tools::bracket_and_solve_root(fun, result, scaling_factor, true, tools::eps_tolerance(get_digits), max_iter, Policy()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1268:33: required from ‘Real skewnorm_ppf_wrap(Real, Real, Real, Real) [with Real = double]’ 1268 | return boost::math::quantile( | ~~~~~~~~~~~~~~~~~~~~~^ 1269 | boost::math::skew_normal_distribution(l, sc, sh), x); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1281:29: required from here 1281 | return skewnorm_ppf_wrap(x, l, sc, sh); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~ /usr/include/c++/15/bits/stl_pair.h:1164:5: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 1164 | make_pair(_T1&& __x, _T2&& __y) | ^~~~~~~~~ In file included from ../subprojects/boost_math/math/include/boost/math/distributions.hpp:39: ../subprojects/boost_math/math/include/boost/math/distributions/negative_binomial.hpp: In instantiation of ‘const std::pair<_FIter, _FIter> boost::math::support(const negative_binomial_distribution&) [with RealType = float; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’: ../subprojects/boost_math/math/include/boost/math/distributions/detail/inv_discrete_quantile.hpp:99:52: required from ‘typename Dist::value_type boost::math::detail::do_inverse_discrete_quantile(const Dist&, const typename Dist::value_type&, bool, typename Dist::value_type, const typename Dist::value_type&, typename Dist::value_type, const Tolerance&, uintmax_t&) [with Dist = boost::math::negative_binomial_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile > >; Tolerance = boost::math::tools::equal_ceil; typename Dist::value_type = float; uintmax_t = long unsigned int]’ 99 | boost::math::tie(min_bound, max_bound) = support(dist); | ~~~~~~~^~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/detail/inv_discrete_quantile.hpp:536:59: required from ‘typename Dist::value_type boost::math::detail::inverse_discrete_quantile(const Dist&, const typename Dist::value_type&, bool, const typename Dist::value_type&, const typename Dist::value_type&, const typename Dist::value_type&, const boost::math::policies::discrete_quantile&, uintmax_t&) [with Dist = boost::math::negative_binomial_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile > >; typename Dist::value_type = float; uintmax_t = long unsigned int]’ 536 | return round_to_ceil(dist, do_inverse_discrete_quantile( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 537 | dist, | ~~~~~ 538 | p, | ~~ 539 | c, | ~~ 540 | ceil(guess), | ~~~~~~~~~~~~ 541 | multiplier, | ~~~~~~~~~~~ 542 | adder, | ~~~~~~ 543 | tools::equal_ceil(), | ~~~~~~~~~~~~~~~~~~~~ 544 | max_iter), p, c); | ~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/negative_binomial.hpp:499:47: required from ‘RealType boost::math::quantile(const negative_binomial_distribution&, const RealType&) [with RealType = float; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 499 | return detail::inverse_discrete_quantile( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 500 | dist, | ~~~~~ 501 | P, | ~~ 502 | false, | ~~~~~~ 503 | guess, | ~~~~~~ 504 | factor, | ~~~~~~~ 505 | RealType(1), | ~~~~~~~~~~~~ 506 | discrete_type(), | ~~~~~~~~~~~~~~~~ 507 | max_iter); | ~~~~~~~~~ ../scipy/special/boost_special_functions.h:1465:33: required from ‘Real nbinom_ppf_wrap(Real, Real, Real) [with Real = float]’ 1465 | return boost::math::quantile( | ~~~~~~~~~~~~~~~~~~~~~^ 1466 | boost::math::negative_binomial_distribution(r, p), x); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1472:27: required from here 1472 | return nbinom_ppf_wrap(x, r, p); | ~~~~~~~~~~~~~~~^~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/negative_binomial.hpp:269:79: note: parameter passing for argument of type ‘const std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 269 | BOOST_MATH_GPU_ENABLED inline const boost::math::pair support(const negative_binomial_distribution& /* dist */) | ^~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/negative_binomial.hpp: In instantiation of ‘const std::pair<_FIter, _FIter> boost::math::support(const negative_binomial_distribution&) [with RealType = double; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’: ../subprojects/boost_math/math/include/boost/math/distributions/detail/inv_discrete_quantile.hpp:99:52: required from ‘typename Dist::value_type boost::math::detail::do_inverse_discrete_quantile(const Dist&, const typename Dist::value_type&, bool, typename Dist::value_type, const typename Dist::value_type&, typename Dist::value_type, const Tolerance&, uintmax_t&) [with Dist = boost::math::negative_binomial_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile > >; Tolerance = boost::math::tools::equal_ceil; typename Dist::value_type = double; uintmax_t = long unsigned int]’ 99 | boost::math::tie(min_bound, max_bound) = support(dist); | ~~~~~~~^~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/detail/inv_discrete_quantile.hpp:536:59: required from ‘typename Dist::value_type boost::math::detail::inverse_discrete_quantile(const Dist&, const typename Dist::value_type&, bool, const typename Dist::value_type&, const typename Dist::value_type&, const typename Dist::value_type&, const boost::math::policies::discrete_quantile&, uintmax_t&) [with Dist = boost::math::negative_binomial_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile > >; typename Dist::value_type = double; uintmax_t = long unsigned int]’ 536 | return round_to_ceil(dist, do_inverse_discrete_quantile( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 537 | dist, | ~~~~~ 538 | p, | ~~ 539 | c, | ~~ 540 | ceil(guess), | ~~~~~~~~~~~~ 541 | multiplier, | ~~~~~~~~~~~ 542 | adder, | ~~~~~~ 543 | tools::equal_ceil(), | ~~~~~~~~~~~~~~~~~~~~ 544 | max_iter), p, c); | ~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/negative_binomial.hpp:499:47: required from ‘RealType boost::math::quantile(const negative_binomial_distribution&, const RealType&) [with RealType = double; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 499 | return detail::inverse_discrete_quantile( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 500 | dist, | ~~~~~ 501 | P, | ~~ 502 | false, | ~~~~~~ 503 | guess, | ~~~~~~ 504 | factor, | ~~~~~~~ 505 | RealType(1), | ~~~~~~~~~~~~ 506 | discrete_type(), | ~~~~~~~~~~~~~~~~ 507 | max_iter); | ~~~~~~~~~ ../scipy/special/boost_special_functions.h:1465:33: required from ‘Real nbinom_ppf_wrap(Real, Real, Real) [with Real = double]’ 1465 | return boost::math::quantile( | ~~~~~~~~~~~~~~~~~~~~~^ 1466 | boost::math::negative_binomial_distribution(r, p), x); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1478:27: required from here 1478 | return nbinom_ppf_wrap(x, r, p); | ~~~~~~~~~~~~~~~^~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/negative_binomial.hpp:269:79: note: parameter passing for argument of type ‘const std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 269 | BOOST_MATH_GPU_ENABLED inline const boost::math::pair support(const negative_binomial_distribution& /* dist */) | ^~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp: In instantiation of ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::tools::toms748_solve(F, const T&, const T&, const T&, const T&, Tol, uintmax_t&, const Policy&) [with F = boost::math::detail::generic_quantile_finder, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy> > >; T = float; Tol = eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy>; uintmax_t = long unsigned int]’: ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp:609:45: required from ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::tools::bracket_and_solve_root(F, const T&, T, bool, Tol, uintmax_t&, const Policy&) [with F = boost::math::detail::generic_quantile_finder, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy> > >; T = float; Tol = eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy>; uintmax_t = long unsigned int]’ 609 | boost::math::pair r = toms748_solve( | ~~~~~~~~~~~~~^ 610 | f, | ~~ 611 | (a < 0 ? b : a), | ~~~~~~~~~~~~~~~~ 612 | (a < 0 ? a : b), | ~~~~~~~~~~~~~~~~ 613 | (a < 0 ? fb : fa), | ~~~~~~~~~~~~~~~~~~ 614 | (a < 0 ? fa : fb), | ~~~~~~~~~~~~~~~~~~ 615 | tol, | ~~~~ 616 | count, | ~~~~~~ 617 | pol); | ~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp:86:80: required from ‘typename Dist::value_type boost::math::detail::generic_quantile(const Dist&, const typename Dist::value_type&, const typename Dist::value_type&, bool, const char*) [with Dist = boost::math::non_central_chi_squared_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy> >; typename Dist::value_type = float]’ 86 | boost::math::pair ir = tools::bracket_and_solve_root( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 87 | f, guess, value_type(2), true, tol, max_iter, forwarding_policy()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_chi_squared.hpp:476:57: required from ‘RealType boost::math::detail::nccs_quantile(const boost::math::non_central_chi_squared_distribution&, const RealType&, bool) [with RealType = float; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >]’ 476 | value_type result = detail::generic_quantile( | ~~~~~~~~~~~~~~~~~~~~~~~~^ 477 | non_central_chi_squared_distribution(k, l), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 478 | p, | ~~ 479 | guess, | ~~~~~~ 480 | comp, | ~~~~~ 481 | function); | ~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_chi_squared.hpp:981:38: required from ‘RealType boost::math::quantile(const non_central_chi_squared_distribution&, const RealType&) [with RealType = float; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 981 | return detail::nccs_quantile(dist, p, false); | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:762:33: required from ‘Real ncx2_ppf_wrap(Real, Real, Real) [with Real = float]’ 762 | return boost::math::quantile( | ~~~~~~~~~~~~~~~~~~~~~^ 763 | boost::math::non_central_chi_squared_distribution(k, l), x); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:769:25: required from here 769 | return ncx2_ppf_wrap(x, k, l); | ~~~~~~~~~~~~~^~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp:310:48: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 310 | BOOST_MATH_GPU_ENABLED boost::math::pair toms748_solve(F f, const T& ax, const T& bx, const T& fax, const T& fbx, Tol tol, boost::math::uintmax_t& max_iter, const Policy& pol) | ^~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp: In instantiation of ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::tools::toms748_solve(F, const T&, const T&, const T&, const T&, Tol, uintmax_t&, const Policy&) [with F = boost::math::detail::generic_quantile_finder, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy> > >; T = double; Tol = eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy>; uintmax_t = long unsigned int]’: ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp:609:45: required from ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::tools::bracket_and_solve_root(F, const T&, T, bool, Tol, uintmax_t&, const Policy&) [with F = boost::math::detail::generic_quantile_finder, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy> > >; T = double; Tol = eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy>; uintmax_t = long unsigned int]’ 609 | boost::math::pair r = toms748_solve( | ~~~~~~~~~~~~~^ 610 | f, | ~~ 611 | (a < 0 ? b : a), | ~~~~~~~~~~~~~~~~ 612 | (a < 0 ? a : b), | ~~~~~~~~~~~~~~~~ 613 | (a < 0 ? fb : fa), | ~~~~~~~~~~~~~~~~~~ 614 | (a < 0 ? fa : fb), | ~~~~~~~~~~~~~~~~~~ 615 | tol, | ~~~~ 616 | count, | ~~~~~~ 617 | pol); | ~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp:86:80: required from ‘typename Dist::value_type boost::math::detail::generic_quantile(const Dist&, const typename Dist::value_type&, const typename Dist::value_type&, bool, const char*) [with Dist = boost::math::non_central_chi_squared_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy> >; typename Dist::value_type = double]’ 86 | boost::math::pair ir = tools::bracket_and_solve_root( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 87 | f, guess, value_type(2), true, tol, max_iter, forwarding_policy()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_chi_squared.hpp:476:57: required from ‘RealType boost::math::detail::nccs_quantile(const boost::math::non_central_chi_squared_distribution&, const RealType&, bool) [with RealType = double; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >]’ 476 | value_type result = detail::generic_quantile( | ~~~~~~~~~~~~~~~~~~~~~~~~^ 477 | non_central_chi_squared_distribution(k, l), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 478 | p, | ~~ 479 | guess, | ~~~~~~ 480 | comp, | ~~~~~ 481 | function); | ~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_chi_squared.hpp:981:38: required from ‘RealType boost::math::quantile(const non_central_chi_squared_distribution&, const RealType&) [with RealType = double; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 981 | return detail::nccs_quantile(dist, p, false); | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:762:33: required from ‘Real ncx2_ppf_wrap(Real, Real, Real) [with Real = double]’ 762 | return boost::math::quantile( | ~~~~~~~~~~~~~~~~~~~~~^ 763 | boost::math::non_central_chi_squared_distribution(k, l), x); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:775:25: required from here 775 | return ncx2_ppf_wrap(x, k, l); | ~~~~~~~~~~~~~^~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp:310:48: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 310 | BOOST_MATH_GPU_ENABLED boost::math::pair toms748_solve(F f, const T& ax, const T& bx, const T& fax, const T& fbx, Tol tol, boost::math::uintmax_t& max_iter, const Policy& pol) | ^~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp: In instantiation of ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::tools::toms748_solve(F, const T&, const T&, const T&, const T&, Tol, uintmax_t&, const Policy&) [with F = boost::math::detail::nc_beta_quantile_functor, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> > >; T = float; Tol = eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >; uintmax_t = long unsigned int]’: ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:399:54: required from ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::detail::bracket_and_solve_root_01(F, const T&, T, bool, Tol, uintmax_t&, const Policy&) [with F = nc_beta_quantile_functor, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> > >; T = float; Tol = boost::math::tools::eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >; uintmax_t = long unsigned int]’ 399 | boost::math::pair r = toms748_solve( | ~~~~~~~~~~~~~^ 400 | f, | ~~ 401 | (a < 0 ? b : a), | ~~~~~~~~~~~~~~~~ 402 | (a < 0 ? a : b), | ~~~~~~~~~~~~~~~~ 403 | (a < 0 ? fb : fa), | ~~~~~~~~~~~~~~~~~~ 404 | (a < 0 ? fa : fb), | ~~~~~~~~~~~~~~~~~~ 405 | tol, | ~~~~ 406 | count, | ~~~~~~ 407 | pol); | ~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:516:43: required from ‘RealType boost::math::detail::nc_beta_quantile(const boost::math::non_central_beta_distribution&, const RealType&, bool) [with RealType = float; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >]’ 516 | = bracket_and_solve_root_01( | ~~~~~~~~~~~~~~~~~~~~~~~~~^ 517 | f, guess, value_type(2.5), true, tol, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 518 | max_iter, Policy()); | ~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:959:41: required from ‘RealType boost::math::quantile(const non_central_beta_distribution&, const RealType&) [with RealType = float; Policy = policies::policy, policies::promote_double, policies::max_root_iterations<400> >]’ 959 | return detail::nc_beta_quantile(dist, p, false); | ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_f.hpp:385:31: required from ‘RealType boost::math::quantile(const non_central_f_distribution&, const RealType&) [with RealType = float; Policy = policies::policy, policies::promote_double, policies::max_root_iterations<400> >]’ 385 | RealType x = quantile(boost::math::non_central_beta_distribution(alpha, beta, dist.non_centrality()), p); | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:902:48: required from ‘Real ncf_ppf_wrap(Real, Real, Real, Real) [with Real = float]’ 902 | y = boost::math::quantile( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 903 | boost::math::non_central_f_distribution(v1, v2, l), x); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:923:24: required from here 923 | return ncf_ppf_wrap(v1, v2, l, x); | ~~~~~~~~~~~~^~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp:310:48: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 310 | BOOST_MATH_GPU_ENABLED boost::math::pair toms748_solve(F f, const T& ax, const T& bx, const T& fax, const T& fbx, Tol tol, boost::math::uintmax_t& max_iter, const Policy& pol) | ^~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp: In instantiation of ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::tools::toms748_solve(F, const T&, const T&, const T&, const T&, Tol, uintmax_t&, const Policy&) [with F = boost::math::detail::nc_beta_quantile_functor, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> > >; T = double; Tol = eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >; uintmax_t = long unsigned int]’: ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:399:54: required from ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::detail::bracket_and_solve_root_01(F, const T&, T, bool, Tol, uintmax_t&, const Policy&) [with F = nc_beta_quantile_functor, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> > >; T = double; Tol = boost::math::tools::eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >; uintmax_t = long unsigned int]’ 399 | boost::math::pair r = toms748_solve( | ~~~~~~~~~~~~~^ 400 | f, | ~~ 401 | (a < 0 ? b : a), | ~~~~~~~~~~~~~~~~ 402 | (a < 0 ? a : b), | ~~~~~~~~~~~~~~~~ 403 | (a < 0 ? fb : fa), | ~~~~~~~~~~~~~~~~~~ 404 | (a < 0 ? fa : fb), | ~~~~~~~~~~~~~~~~~~ 405 | tol, | ~~~~ 406 | count, | ~~~~~~ 407 | pol); | ~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:516:43: required from ‘RealType boost::math::detail::nc_beta_quantile(const boost::math::non_central_beta_distribution&, const RealType&, bool) [with RealType = double; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >]’ 516 | = bracket_and_solve_root_01( | ~~~~~~~~~~~~~~~~~~~~~~~~~^ 517 | f, guess, value_type(2.5), true, tol, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 518 | max_iter, Policy()); | ~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:959:41: required from ‘RealType boost::math::quantile(const non_central_beta_distribution&, const RealType&) [with RealType = double; Policy = policies::policy, policies::promote_double, policies::max_root_iterations<400> >]’ 959 | return detail::nc_beta_quantile(dist, p, false); | ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_f.hpp:385:31: required from ‘RealType boost::math::quantile(const non_central_f_distribution&, const RealType&) [with RealType = double; Policy = policies::policy, policies::promote_double, policies::max_root_iterations<400> >]’ 385 | RealType x = quantile(boost::math::non_central_beta_distribution(alpha, beta, dist.non_centrality()), p); | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:902:48: required from ‘Real ncf_ppf_wrap(Real, Real, Real, Real) [with Real = double]’ 902 | y = boost::math::quantile( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 903 | boost::math::non_central_f_distribution(v1, v2, l), x); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:929:24: required from here 929 | return ncf_ppf_wrap(v1, v2, l, x); | ~~~~~~~~~~~~^~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp:310:48: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 310 | BOOST_MATH_GPU_ENABLED boost::math::pair toms748_solve(F f, const T& ax, const T& bx, const T& fax, const T& fbx, Tol tol, boost::math::uintmax_t& max_iter, const Policy& pol) | ^~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp: In instantiation of ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::tools::toms748_solve(F, const T&, const T&, const T&, const T&, Tol, uintmax_t&, const Policy&) [with F = boost::math::detail::nc_beta_quantile_functor, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile > >; T = float; Tol = eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >; uintmax_t = long unsigned int]’: ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:399:54: required from ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::detail::bracket_and_solve_root_01(F, const T&, T, bool, Tol, uintmax_t&, const Policy&) [with F = nc_beta_quantile_functor, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile > >; T = float; Tol = boost::math::tools::eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >; uintmax_t = long unsigned int]’ 399 | boost::math::pair r = toms748_solve( | ~~~~~~~~~~~~~^ 400 | f, | ~~ 401 | (a < 0 ? b : a), | ~~~~~~~~~~~~~~~~ 402 | (a < 0 ? a : b), | ~~~~~~~~~~~~~~~~ 403 | (a < 0 ? fb : fa), | ~~~~~~~~~~~~~~~~~~ 404 | (a < 0 ? fa : fb), | ~~~~~~~~~~~~~~~~~~ 405 | tol, | ~~~~ 406 | count, | ~~~~~~ 407 | pol); | ~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:516:43: required from ‘RealType boost::math::detail::nc_beta_quantile(const boost::math::non_central_beta_distribution&, const RealType&, bool) [with RealType = float; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >]’ 516 | = bracket_and_solve_root_01( | ~~~~~~~~~~~~~~~~~~~~~~~~~^ 517 | f, guess, value_type(2.5), true, tol, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 518 | max_iter, Policy()); | ~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:965:41: required from ‘RealType boost::math::quantile(const complemented2_type, RealType>&) [with RealType = float; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 965 | return detail::nc_beta_quantile(c.dist, c.param, true); | ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_f.hpp:399:31: required from ‘RealType boost::math::quantile(const complemented2_type, RealType>&) [with RealType = float; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 399 | RealType x = quantile(complement(boost::math::non_central_beta_distribution(alpha, beta, c.dist.non_centrality()), c.param)); | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:956:33: required from ‘Real ncf_isf_wrap(Real, Real, Real, Real) [with Real = float]’ 956 | return boost::math::quantile(boost::math::complement( | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ 957 | boost::math::non_central_f_distribution(v1, v2, l), x)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:963:24: required from here 963 | return ncf_isf_wrap(x, v1, v2, l); | ~~~~~~~~~~~~^~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp:310:48: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 310 | BOOST_MATH_GPU_ENABLED boost::math::pair toms748_solve(F f, const T& ax, const T& bx, const T& fax, const T& fbx, Tol tol, boost::math::uintmax_t& max_iter, const Policy& pol) | ^~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp: In instantiation of ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::tools::toms748_solve(F, const T&, const T&, const T&, const T&, Tol, uintmax_t&, const Policy&) [with F = boost::math::detail::nc_beta_quantile_functor, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile > >; T = double; Tol = eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >; uintmax_t = long unsigned int]’: ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:399:54: required from ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::detail::bracket_and_solve_root_01(F, const T&, T, bool, Tol, uintmax_t&, const Policy&) [with F = nc_beta_quantile_functor, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile > >; T = double; Tol = boost::math::tools::eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >; uintmax_t = long unsigned int]’ 399 | boost::math::pair r = toms748_solve( | ~~~~~~~~~~~~~^ 400 | f, | ~~ 401 | (a < 0 ? b : a), | ~~~~~~~~~~~~~~~~ 402 | (a < 0 ? a : b), | ~~~~~~~~~~~~~~~~ 403 | (a < 0 ? fb : fa), | ~~~~~~~~~~~~~~~~~~ 404 | (a < 0 ? fa : fb), | ~~~~~~~~~~~~~~~~~~ 405 | tol, | ~~~~ 406 | count, | ~~~~~~ 407 | pol); | ~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:516:43: required from ‘RealType boost::math::detail::nc_beta_quantile(const boost::math::non_central_beta_distribution&, const RealType&, bool) [with RealType = double; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >]’ 516 | = bracket_and_solve_root_01( | ~~~~~~~~~~~~~~~~~~~~~~~~~^ 517 | f, guess, value_type(2.5), true, tol, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 518 | max_iter, Policy()); | ~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:965:41: required from ‘RealType boost::math::quantile(const complemented2_type, RealType>&) [with RealType = double; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 965 | return detail::nc_beta_quantile(c.dist, c.param, true); | ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_f.hpp:399:31: required from ‘RealType boost::math::quantile(const complemented2_type, RealType>&) [with RealType = double; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 399 | RealType x = quantile(complement(boost::math::non_central_beta_distribution(alpha, beta, c.dist.non_centrality()), c.param)); | ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:956:33: required from ‘Real ncf_isf_wrap(Real, Real, Real, Real) [with Real = double]’ 956 | return boost::math::quantile(boost::math::complement( | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ 957 | boost::math::non_central_f_distribution(v1, v2, l), x)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:969:24: required from here 969 | return ncf_isf_wrap(x, v1, v2, l); | ~~~~~~~~~~~~^~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp:310:48: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 310 | BOOST_MATH_GPU_ENABLED boost::math::pair toms748_solve(F f, const T& ax, const T& bx, const T& fax, const T& fbx, Tol tol, boost::math::uintmax_t& max_iter, const Policy& pol) | ^~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp: In instantiation of ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::tools::toms748_solve(F, const T&, const T&, const T&, const T&, Tol, uintmax_t&, const Policy&) [with F = boost::math::detail::generic_quantile_finder, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> > > >; T = float; Tol = eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >; uintmax_t = long unsigned int]’: ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp:609:45: required from ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::tools::bracket_and_solve_root(F, const T&, T, bool, Tol, uintmax_t&, const Policy&) [with F = boost::math::detail::generic_quantile_finder, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> > > >; T = float; Tol = eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >; uintmax_t = long unsigned int]’ 609 | boost::math::pair r = toms748_solve( | ~~~~~~~~~~~~~^ 610 | f, | ~~ 611 | (a < 0 ? b : a), | ~~~~~~~~~~~~~~~~ 612 | (a < 0 ? a : b), | ~~~~~~~~~~~~~~~~ 613 | (a < 0 ? fb : fa), | ~~~~~~~~~~~~~~~~~~ 614 | (a < 0 ? fa : fb), | ~~~~~~~~~~~~~~~~~~ 615 | tol, | ~~~~ 616 | count, | ~~~~~~ 617 | pol); | ~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp:86:80: required from ‘typename Dist::value_type boost::math::detail::generic_quantile(const Dist&, const typename Dist::value_type&, const typename Dist::value_type&, bool, const char*) [with Dist = boost::math::non_central_t_distribution, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> > >; typename Dist::value_type = float]’ 86 | boost::math::pair ir = tools::bracket_and_solve_root( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 87 | f, guess, value_type(2), true, tol, max_iter, forwarding_policy()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_t.hpp:384:57: required from ‘T boost::math::detail::non_central_t_quantile(const char*, T, T, T, T, const Policy&) [with T = float; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >]’ 384 | value_type result = detail::generic_quantile( | ~~~~~~~~~~~~~~~~~~~~~~~~^ 385 | non_central_t_distribution(v, delta), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 386 | (p < q ? p : q), | ~~~~~~~~~~~~~~~~ 387 | guess, | ~~~~~~ 388 | (p >= q), | ~~~~~~~~~ 389 | function); | ~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_t.hpp:1302:47: required from ‘RealType boost::math::quantile(const non_central_t_distribution&, const RealType&) [with RealType = float; Policy = policies::policy, policies::promote_double, policies::max_root_iterations<400> >]’ 1302 | return detail::non_central_t_quantile(function, v, l, p, RealType(1-p), Policy()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1112:27: required from ‘Real nct_ppf_wrap(Real, Real, Real) [with Real = float]’ 1112 | y = boost::math::quantile( | ~~~~~~~~~~~~~~~~~~~~~^ 1113 | boost::math::non_central_t_distribution(v, l), x); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1135:24: required from here 1135 | return nct_ppf_wrap(v, l, x); | ~~~~~~~~~~~~^~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp:310:48: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 310 | BOOST_MATH_GPU_ENABLED boost::math::pair toms748_solve(F f, const T& ax, const T& bx, const T& fax, const T& fbx, Tol tol, boost::math::uintmax_t& max_iter, const Policy& pol) | ^~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp: In instantiation of ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::tools::toms748_solve(F, const T&, const T&, const T&, const T&, Tol, uintmax_t&, const Policy&) [with F = boost::math::detail::generic_quantile_finder, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> > > >; T = double; Tol = eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >; uintmax_t = long unsigned int]’: ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp:609:45: required from ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::tools::bracket_and_solve_root(F, const T&, T, bool, Tol, uintmax_t&, const Policy&) [with F = boost::math::detail::generic_quantile_finder, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> > > >; T = double; Tol = eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >; uintmax_t = long unsigned int]’ 609 | boost::math::pair r = toms748_solve( | ~~~~~~~~~~~~~^ 610 | f, | ~~ 611 | (a < 0 ? b : a), | ~~~~~~~~~~~~~~~~ 612 | (a < 0 ? a : b), | ~~~~~~~~~~~~~~~~ 613 | (a < 0 ? fb : fa), | ~~~~~~~~~~~~~~~~~~ 614 | (a < 0 ? fa : fb), | ~~~~~~~~~~~~~~~~~~ 615 | tol, | ~~~~ 616 | count, | ~~~~~~ 617 | pol); | ~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp:86:80: required from ‘typename Dist::value_type boost::math::detail::generic_quantile(const Dist&, const typename Dist::value_type&, const typename Dist::value_type&, bool, const char*) [with Dist = boost::math::non_central_t_distribution, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> > >; typename Dist::value_type = double]’ 86 | boost::math::pair ir = tools::bracket_and_solve_root( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 87 | f, guess, value_type(2), true, tol, max_iter, forwarding_policy()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_t.hpp:384:57: required from ‘T boost::math::detail::non_central_t_quantile(const char*, T, T, T, T, const Policy&) [with T = double; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >]’ 384 | value_type result = detail::generic_quantile( | ~~~~~~~~~~~~~~~~~~~~~~~~^ 385 | non_central_t_distribution(v, delta), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 386 | (p < q ? p : q), | ~~~~~~~~~~~~~~~~ 387 | guess, | ~~~~~~ 388 | (p >= q), | ~~~~~~~~~ 389 | function); | ~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_t.hpp:1302:47: required from ‘RealType boost::math::quantile(const non_central_t_distribution&, const RealType&) [with RealType = double; Policy = policies::policy, policies::promote_double, policies::max_root_iterations<400> >]’ 1302 | return detail::non_central_t_quantile(function, v, l, p, RealType(1-p), Policy()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1112:27: required from ‘Real nct_ppf_wrap(Real, Real, Real) [with Real = double]’ 1112 | y = boost::math::quantile( | ~~~~~~~~~~~~~~~~~~~~~^ 1113 | boost::math::non_central_t_distribution(v, l), x); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1141:24: required from here 1141 | return nct_ppf_wrap(v, l, x); | ~~~~~~~~~~~~^~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp:310:48: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 310 | BOOST_MATH_GPU_ENABLED boost::math::pair toms748_solve(F f, const T& ax, const T& bx, const T& fax, const T& fbx, Tol tol, boost::math::uintmax_t& max_iter, const Policy& pol) | ^~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp: In instantiation of ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::tools::toms748_solve(F, const T&, const T&, const T&, const T&, Tol, uintmax_t&, const Policy&) [with F = boost::math::detail::generic_quantile_finder, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy> > >; T = float; Tol = eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy>; uintmax_t = long unsigned int]’: ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp:609:45: required from ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::tools::bracket_and_solve_root(F, const T&, T, bool, Tol, uintmax_t&, const Policy&) [with F = boost::math::detail::generic_quantile_finder, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy> > >; T = float; Tol = eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy>; uintmax_t = long unsigned int]’ 609 | boost::math::pair r = toms748_solve( | ~~~~~~~~~~~~~^ 610 | f, | ~~ 611 | (a < 0 ? b : a), | ~~~~~~~~~~~~~~~~ 612 | (a < 0 ? a : b), | ~~~~~~~~~~~~~~~~ 613 | (a < 0 ? fb : fa), | ~~~~~~~~~~~~~~~~~~ 614 | (a < 0 ? fa : fb), | ~~~~~~~~~~~~~~~~~~ 615 | tol, | ~~~~ 616 | count, | ~~~~~~ 617 | pol); | ~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp:86:80: required from ‘typename Dist::value_type boost::math::detail::generic_quantile(const Dist&, const typename Dist::value_type&, const typename Dist::value_type&, bool, const char*) [with Dist = boost::math::non_central_t_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy> >; typename Dist::value_type = float]’ 86 | boost::math::pair ir = tools::bracket_and_solve_root( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 87 | f, guess, value_type(2), true, tol, max_iter, forwarding_policy()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_t.hpp:384:57: required from ‘T boost::math::detail::non_central_t_quantile(const char*, T, T, T, T, const Policy&) [with T = float; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >]’ 384 | value_type result = detail::generic_quantile( | ~~~~~~~~~~~~~~~~~~~~~~~~^ 385 | non_central_t_distribution(v, delta), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 386 | (p < q ? p : q), | ~~~~~~~~~~~~~~~~ 387 | guess, | ~~~~~~ 388 | (p >= q), | ~~~~~~~~~ 389 | function); | ~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_t.hpp:1313:47: required from ‘RealType boost::math::quantile(const complemented2_type, RealType>&) [with RealType = float; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 1313 | return detail::non_central_t_quantile(function, v, l, RealType(1-q), q, Policy()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1168:33: required from ‘Real nct_isf_wrap(Real, Real, Real) [with Real = float]’ 1168 | return boost::math::quantile(boost::math::complement( | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ 1169 | boost::math::non_central_t_distribution(v, l), x)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1175:24: required from here 1175 | return nct_isf_wrap(x, v, l); | ~~~~~~~~~~~~^~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp:310:48: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 310 | BOOST_MATH_GPU_ENABLED boost::math::pair toms748_solve(F f, const T& ax, const T& bx, const T& fax, const T& fbx, Tol tol, boost::math::uintmax_t& max_iter, const Policy& pol) | ^~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp: In instantiation of ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::tools::toms748_solve(F, const T&, const T&, const T&, const T&, Tol, uintmax_t&, const Policy&) [with F = boost::math::detail::generic_quantile_finder, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy> > >; T = double; Tol = eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy>; uintmax_t = long unsigned int]’: ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp:609:45: required from ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::tools::bracket_and_solve_root(F, const T&, T, bool, Tol, uintmax_t&, const Policy&) [with F = boost::math::detail::generic_quantile_finder, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy> > >; T = double; Tol = eps_tolerance; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy>; uintmax_t = long unsigned int]’ 609 | boost::math::pair r = toms748_solve( | ~~~~~~~~~~~~~^ 610 | f, | ~~ 611 | (a < 0 ? b : a), | ~~~~~~~~~~~~~~~~ 612 | (a < 0 ? a : b), | ~~~~~~~~~~~~~~~~ 613 | (a < 0 ? fb : fa), | ~~~~~~~~~~~~~~~~~~ 614 | (a < 0 ? fa : fb), | ~~~~~~~~~~~~~~~~~~ 615 | tol, | ~~~~ 616 | count, | ~~~~~~ 617 | pol); | ~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp:86:80: required from ‘typename Dist::value_type boost::math::detail::generic_quantile(const Dist&, const typename Dist::value_type&, const typename Dist::value_type&, bool, const char*) [with Dist = boost::math::non_central_t_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy> >; typename Dist::value_type = double]’ 86 | boost::math::pair ir = tools::bracket_and_solve_root( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 87 | f, guess, value_type(2), true, tol, max_iter, forwarding_policy()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_t.hpp:384:57: required from ‘T boost::math::detail::non_central_t_quantile(const char*, T, T, T, T, const Policy&) [with T = double; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >]’ 384 | value_type result = detail::generic_quantile( | ~~~~~~~~~~~~~~~~~~~~~~~~^ 385 | non_central_t_distribution(v, delta), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 386 | (p < q ? p : q), | ~~~~~~~~~~~~~~~~ 387 | guess, | ~~~~~~ 388 | (p >= q), | ~~~~~~~~~ 389 | function); | ~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_t.hpp:1313:47: required from ‘RealType boost::math::quantile(const complemented2_type, RealType>&) [with RealType = double; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 1313 | return detail::non_central_t_quantile(function, v, l, RealType(1-q), q, Policy()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1168:33: required from ‘Real nct_isf_wrap(Real, Real, Real) [with Real = double]’ 1168 | return boost::math::quantile(boost::math::complement( | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ 1169 | boost::math::non_central_t_distribution(v, l), x)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1181:24: required from here 1181 | return nct_isf_wrap(x, v, l); | ~~~~~~~~~~~~^~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/toms748_solve.hpp:310:48: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 310 | BOOST_MATH_GPU_ENABLED boost::math::pair toms748_solve(F f, const T& ax, const T& bx, const T& fax, const T& fbx, Tol tol, boost::math::uintmax_t& max_iter, const Policy& pol) | ^~~~~~~~~~~~~ In file included from ../subprojects/boost_math/math/include/boost/math/distributions.hpp:18: ../subprojects/boost_math/math/include/boost/math/distributions/binomial.hpp: In instantiation of ‘const std::pair<_FIter, _FIter> boost::math::support(const binomial_distribution&) [with RealType = float; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’: ../subprojects/boost_math/math/include/boost/math/distributions/detail/inv_discrete_quantile.hpp:99:52: required from ‘typename Dist::value_type boost::math::detail::do_inverse_discrete_quantile(const Dist&, const typename Dist::value_type&, bool, typename Dist::value_type, const typename Dist::value_type&, typename Dist::value_type, const Tolerance&, uintmax_t&) [with Dist = boost::math::binomial_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile > >; Tolerance = boost::math::tools::equal_ceil; typename Dist::value_type = float; uintmax_t = long unsigned int]’ 99 | boost::math::tie(min_bound, max_bound) = support(dist); | ~~~~~~~^~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/detail/inv_discrete_quantile.hpp:536:59: required from ‘typename Dist::value_type boost::math::detail::inverse_discrete_quantile(const Dist&, const typename Dist::value_type&, bool, const typename Dist::value_type&, const typename Dist::value_type&, const typename Dist::value_type&, const boost::math::policies::discrete_quantile&, uintmax_t&) [with Dist = boost::math::binomial_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile > >; typename Dist::value_type = float; uintmax_t = long unsigned int]’ 536 | return round_to_ceil(dist, do_inverse_discrete_quantile( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 537 | dist, | ~~~~~ 538 | p, | ~~ 539 | c, | ~~ 540 | ceil(guess), | ~~~~~~~~~~~~ 541 | multiplier, | ~~~~~~~~~~~ 542 | adder, | ~~~~~~ 543 | tools::equal_ceil(), | ~~~~~~~~~~~~~~~~~~~~ 544 | max_iter), p, c); | ~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/binomial.hpp:263:51: required from ‘RealType boost::math::binomial_detail::quantile_imp(const boost::math::binomial_distribution&, const RealType&, const RealType&, bool) [with RealType = float; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >]’ 263 | result = detail::inverse_discrete_quantile( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 264 | dist, | ~~~~~ 265 | comp ? q : p, | ~~~~~~~~~~~~~ 266 | comp, | ~~~~~ 267 | guess, | ~~~~~~ 268 | factor, | ~~~~~~~ 269 | RealType(1), | ~~~~~~~~~~~~ 270 | discrete_quantile_type(), | ~~~~~~~~~~~~~~~~~~~~~~~~~ 271 | max_iter); | ~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/binomial.hpp:657:46: required from ‘RealType boost::math::quantile(const binomial_distribution&, const RealType&) [with RealType = float; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 657 | return binomial_detail::quantile_imp(dist, p, RealType(1-p), false); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1358:33: required from ‘Real binom_ppf_wrap(Real, Real, Real) [with Real = float]’ 1358 | return boost::math::quantile( | ~~~~~~~~~~~~~~~~~~~~~^ 1359 | boost::math::binomial_distribution(n, p), x); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1365:26: required from here 1365 | return binom_ppf_wrap(x, n, p); | ~~~~~~~~~~~~~~^~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/binomial.hpp:431:75: note: parameter passing for argument of type ‘const std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 431 | BOOST_MATH_CUDA_ENABLED const boost::math::pair support(const binomial_distribution& dist) | ^~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/binomial.hpp: In instantiation of ‘const std::pair<_FIter, _FIter> boost::math::support(const binomial_distribution&) [with RealType = double; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’: ../subprojects/boost_math/math/include/boost/math/distributions/detail/inv_discrete_quantile.hpp:99:52: required from ‘typename Dist::value_type boost::math::detail::do_inverse_discrete_quantile(const Dist&, const typename Dist::value_type&, bool, typename Dist::value_type, const typename Dist::value_type&, typename Dist::value_type, const Tolerance&, uintmax_t&) [with Dist = boost::math::binomial_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile > >; Tolerance = boost::math::tools::equal_ceil; typename Dist::value_type = double; uintmax_t = long unsigned int]’ 99 | boost::math::tie(min_bound, max_bound) = support(dist); | ~~~~~~~^~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/detail/inv_discrete_quantile.hpp:536:59: required from ‘typename Dist::value_type boost::math::detail::inverse_discrete_quantile(const Dist&, const typename Dist::value_type&, bool, const typename Dist::value_type&, const typename Dist::value_type&, const typename Dist::value_type&, const boost::math::policies::discrete_quantile&, uintmax_t&) [with Dist = boost::math::binomial_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile > >; typename Dist::value_type = double; uintmax_t = long unsigned int]’ 536 | return round_to_ceil(dist, do_inverse_discrete_quantile( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 537 | dist, | ~~~~~ 538 | p, | ~~ 539 | c, | ~~ 540 | ceil(guess), | ~~~~~~~~~~~~ 541 | multiplier, | ~~~~~~~~~~~ 542 | adder, | ~~~~~~ 543 | tools::equal_ceil(), | ~~~~~~~~~~~~~~~~~~~~ 544 | max_iter), p, c); | ~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/binomial.hpp:263:51: required from ‘RealType boost::math::binomial_detail::quantile_imp(const boost::math::binomial_distribution&, const RealType&, const RealType&, bool) [with RealType = double; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >]’ 263 | result = detail::inverse_discrete_quantile( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 264 | dist, | ~~~~~ 265 | comp ? q : p, | ~~~~~~~~~~~~~ 266 | comp, | ~~~~~ 267 | guess, | ~~~~~~ 268 | factor, | ~~~~~~~ 269 | RealType(1), | ~~~~~~~~~~~~ 270 | discrete_quantile_type(), | ~~~~~~~~~~~~~~~~~~~~~~~~~ 271 | max_iter); | ~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/binomial.hpp:657:46: required from ‘RealType boost::math::quantile(const binomial_distribution&, const RealType&) [with RealType = double; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 657 | return binomial_detail::quantile_imp(dist, p, RealType(1-p), false); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1358:33: required from ‘Real binom_ppf_wrap(Real, Real, Real) [with Real = double]’ 1358 | return boost::math::quantile( | ~~~~~~~~~~~~~~~~~~~~~^ 1359 | boost::math::binomial_distribution(n, p), x); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1371:26: required from here 1371 | return binom_ppf_wrap(x, n, p); | ~~~~~~~~~~~~~~^~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/binomial.hpp:431:75: note: parameter passing for argument of type ‘const std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 431 | BOOST_MATH_CUDA_ENABLED const boost::math::pair support(const binomial_distribution& dist) | ^~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/beta.hpp: In instantiation of ‘boost::math::detail::ibeta_fraction2_t::result_type boost::math::detail::ibeta_fraction2_t::operator()() [with T = float; result_type = std::pair]’: ../subprojects/boost_math/math/include/boost/math/tools/fraction.hpp:134:20: required from ‘typename boost::math::tools::detail::fraction_traits::result_type boost::math::tools::detail::continued_fraction_b_impl(Gen&, const U&, uintmax_t&) [with Gen = boost::math::detail::ibeta_fraction2_t; U = float; typename fraction_traits::result_type = float; uintmax_t = long unsigned int]’ 134 | value_type v = g(); | ~^~ ../subprojects/boost_math/math/include/boost/math/tools/fraction.hpp:184:44: required from ‘typename boost::math::tools::detail::fraction_traits::result_type boost::math::tools::continued_fraction_b(Gen&, const U&) [with Gen = boost::math::detail::ibeta_fraction2_t; U = float; typename detail::fraction_traits::result_type = float]’ 184 | return detail::continued_fraction_b_impl(g, factor, max_terms); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/beta.hpp:847:54: required from ‘T boost::math::detail::ibeta_fraction2(T, T, T, T, const Policy&, bool, T*) [with T = float; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >]’ 847 | T fract = boost::math::tools::continued_fraction_b(f, boost::math::policies::get_epsilon()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/beta.hpp:1499:36: required from ‘T boost::math::detail::ibeta_imp(T, T, T, const Policy&, bool, bool, T*) [with T = float; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >]’ 1499 | fract = ibeta_fraction2(a, b, x, y, pol, normalised, p_derivative); | ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/beta.hpp:1536:20: required from ‘T boost::math::detail::ibeta_imp(T, T, T, const Policy&, bool, bool) [with T = float; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >]’ 1536 | return ibeta_imp(a, b, x, pol, inv, normalised, static_cast(nullptr)); | ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/beta.hpp:1690:93: required from ‘boost::math::tools::promote_args_t boost::math::ibeta(RT1, RT2, RT3, const Policy&) [with RT1 = float; RT2 = float; RT3 = float; Policy = policies::policy, policies::promote_double, policies::max_root_iterations<400> >; tools::promote_args_t = float]’ 1690 | return policies::checked_narrowing_cast(detail::ibeta_imp(static_cast(a), static_cast(b), static_cast(x), forwarding_policy(), false, true), "boost::math::ibeta<%1%>(%1%,%1%,%1%)"); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:117:31: required from ‘Real ibeta_wrap(Real, Real, Real) [with Real = float]’ 117 | y = boost::math::ibeta(a, b, x, SpecialPolicy()); | ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:137:22: required from here 137 | return ibeta_wrap(a, b, x); | ~~~~~~~~~~^~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/beta.hpp:810:39: note: parameter passing for argument of type ‘boost::math::detail::ibeta_fraction2_t::result_type’ {aka ‘std::pair’} when C++17 is enabled changed to match C++14 in GCC 10.1 810 | BOOST_MATH_GPU_ENABLED result_type operator()() | ^~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/beta.hpp: In instantiation of ‘boost::math::detail::ibeta_fraction2_t::result_type boost::math::detail::ibeta_fraction2_t::operator()() [with T = double; result_type = std::pair]’: ../subprojects/boost_math/math/include/boost/math/tools/fraction.hpp:134:20: required from ‘typename boost::math::tools::detail::fraction_traits::result_type boost::math::tools::detail::continued_fraction_b_impl(Gen&, const U&, uintmax_t&) [with Gen = boost::math::detail::ibeta_fraction2_t; U = double; typename fraction_traits::result_type = double; uintmax_t = long unsigned int]’ 134 | value_type v = g(); | ~^~ ../subprojects/boost_math/math/include/boost/math/tools/fraction.hpp:184:44: required from ‘typename boost::math::tools::detail::fraction_traits::result_type boost::math::tools::continued_fraction_b(Gen&, const U&) [with Gen = boost::math::detail::ibeta_fraction2_t; U = double; typename detail::fraction_traits::result_type = double]’ 184 | return detail::continued_fraction_b_impl(g, factor, max_terms); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/beta.hpp:847:54: required from ‘T boost::math::detail::ibeta_fraction2(T, T, T, T, const Policy&, bool, T*) [with T = double; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >]’ 847 | T fract = boost::math::tools::continued_fraction_b(f, boost::math::policies::get_epsilon()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/beta.hpp:1499:36: required from ‘T boost::math::detail::ibeta_imp(T, T, T, const Policy&, bool, bool, T*) [with T = double; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >]’ 1499 | fract = ibeta_fraction2(a, b, x, y, pol, normalised, p_derivative); | ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/beta.hpp:1536:20: required from ‘T boost::math::detail::ibeta_imp(T, T, T, const Policy&, bool, bool) [with T = double; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >]’ 1536 | return ibeta_imp(a, b, x, pol, inv, normalised, static_cast(nullptr)); | ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/beta.hpp:1690:93: required from ‘boost::math::tools::promote_args_t boost::math::ibeta(RT1, RT2, RT3, const Policy&) [with RT1 = double; RT2 = double; RT3 = double; Policy = policies::policy, policies::promote_double, policies::max_root_iterations<400> >; tools::promote_args_t = double]’ 1690 | return policies::checked_narrowing_cast(detail::ibeta_imp(static_cast(a), static_cast(b), static_cast(x), forwarding_policy(), false, true), "boost::math::ibeta<%1%>(%1%,%1%,%1%)"); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:117:31: required from ‘Real ibeta_wrap(Real, Real, Real) [with Real = double]’ 117 | y = boost::math::ibeta(a, b, x, SpecialPolicy()); | ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:143:22: required from here 143 | return ibeta_wrap(a, b, x); | ~~~~~~~~~~^~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/beta.hpp:810:39: note: parameter passing for argument of type ‘boost::math::detail::ibeta_fraction2_t::result_type’ {aka ‘std::pair’} when C++17 is enabled changed to match C++14 in GCC 10.1 810 | BOOST_MATH_GPU_ENABLED result_type operator()() | ^~~~~~~~ In file included from ../subprojects/boost_math/math/include/boost/math/distributions/skew_normal.hpp:17, from ../subprojects/boost_math/math/include/boost/math/distributions.hpp:49: ../subprojects/boost_math/math/include/boost/math/special_functions/owens_t.hpp: In instantiation of ‘std::pair<_FIter, _FIter> boost::math::detail::owens_t_T1_accelerated(T, T, const Policy&) [with T = long double; Policy = boost::math::policies::policy]’: ../subprojects/boost_math/math/include/boost/math/special_functions/owens_t.hpp:874:46: required from ‘RealType boost::math::detail::owens_t_dispatch(RealType, RealType, RealType, const Policy&, const std::integral_constant&) [with RealType = long double; Policy = boost::math::policies::policy]’ 874 | p1 = owens_t_T1_accelerated(h, a, forwarding_policy()); | ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/owens_t.hpp:979:36: required from ‘RealType boost::math::detail::owens_t_dispatch(RealType, RealType, RealType, const Policy&) [with RealType = long double; Policy = boost::math::policies::policy]’ 979 | return owens_t_dispatch(h, a, ah, pol, tag_type()); | ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/owens_t.hpp:1000:38: required from ‘RealType boost::math::detail::owens_t(RealType, RealType, const Policy&) [with RealType = long double; Policy = boost::math::policies::policy]’ 1000 | val = owens_t_dispatch(h, fabs_a, fabs_ah, pol); | ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/owens_t.hpp:1072:86: required from ‘boost::math::tools::promote_args_t boost::math::owens_t(T1, T2, const Policy&) [with T1 = double; T2 = double; Policy = policies::policy; tools::promote_args_t = double]’ 1072 | return policies::checked_narrowing_cast(detail::owens_t(static_cast(h), static_cast(a), pol), "boost::math::owens_t<%1%>(%1%,%1%)"); | ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/owens_t.hpp:1078:24: required from ‘boost::math::tools::promote_args_t boost::math::owens_t(T1, T2) [with T1 = double; T2 = double; tools::promote_args_t = double]’ 1078 | return owens_t(h, a, policies::policy<>()); | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/skew_normal.hpp:219:54: required from ‘RealType boost::math::cdf(const skew_normal_distribution&, const RealType&) [with RealType = double; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 219 | result = cdf(std_normal, transformed_x) - owens_t(transformed_x, shape)*static_cast(2); | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1245:32: required from ‘Real skewnorm_cdf_wrap(Real, Real, Real, Real) [with Real = double]’ 1245 | return boost::math::cdf( | ~~~~~~~~~~~~~~~~^ 1246 | boost::math::skew_normal_distribution(l, sc, sh), x); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:1261:29: required from here 1261 | return skewnorm_cdf_wrap(x, l, sc, sh); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/owens_t.hpp:543:26: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 543 | std::pair owens_t_T1_accelerated(T h, T a, const Policy& pol) | ^~~~~~~~~~~~~~~~~~~~~~ In file included from ../subprojects/boost_math/math/include/boost/math/special_functions/detail/hypergeometric_1F1_recurrence.hpp:17, from ../subprojects/boost_math/math/include/boost/math/special_functions/hypergeometric_1F1.hpp:19, from ../scipy/special/boost_special_functions.h:12: ../subprojects/boost_math/math/include/boost/math/tools/recurrence.hpp: In instantiation of ‘boost::math::tools::detail::function_ratio_from_backwards_recurrence_fraction::result_type boost::math::tools::detail::function_ratio_from_backwards_recurrence_fraction::operator()() [with Recurrence = boost::math::tools::detail::recurrence_reverser, double>; result_type = std::pair]’: ../subprojects/boost_math/math/include/boost/math/tools/fraction.hpp:259:20: required from ‘typename boost::math::tools::detail::fraction_traits::result_type boost::math::tools::detail::continued_fraction_a_impl(Gen&, const U&, uintmax_t&) [with Gen = function_ratio_from_backwards_recurrence_fraction, double> >; U = double; typename fraction_traits::result_type = double; uintmax_t = long unsigned int]’ 259 | value_type v = g(); | ~^~ ../subprojects/boost_math/math/include/boost/math/tools/fraction.hpp:299:44: required from ‘typename boost::math::tools::detail::fraction_traits::result_type boost::math::tools::continued_fraction_a(Gen&, const U&, uintmax_t&) [with Gen = detail::function_ratio_from_backwards_recurrence_fraction, double> >; U = double; typename detail::fraction_traits::result_type = double; uintmax_t = long unsigned int]’ 299 | return detail::continued_fraction_a_impl(g, factor, max_terms); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/recurrence.hpp:127:60: required from ‘T boost::math::tools::function_ratio_from_forwards_recurrence(const Recurrence&, const T&, uintmax_t&) [with Recurrence = boost::math::detail::hypergeometric_1F1_recurrence_b_coefficients; T = double; uintmax_t = long unsigned int]’ 127 | return boost::math::tools::continued_fraction_a(f, factor, max_iter); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/detail/hypergeometric_1F1_small_a_negative_b_by_ratio.hpp:51:79: required from ‘T boost::math::detail::hypergeometric_1F1_small_a_negative_b_by_ratio(const T&, const T&, const T&, const Policy&, long long int&) [with T = double; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >]’ 51 | T ratio = boost::math::tools::function_ratio_from_forwards_recurrence(boost::math::detail::hypergeometric_1F1_recurrence_b_coefficients(a, b, z), boost::math::tools::epsilon(), max_iter); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/hypergeometric_1F1.hpp:397:69: required from ‘T boost::math::detail::hypergeometric_1F1_imp(const T&, const T&, const T&, const Policy&, long long int&) [with T = double; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >]’ 397 | return hypergeometric_1F1_small_a_negative_b_by_ratio(a, b, z, pol, log_scaling); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/hypergeometric_1F1.hpp:625:40: required from ‘T boost::math::detail::hypergeometric_1F1_imp(const T&, const T&, const T&, const Policy&) [with T = double; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >]’ 625 | T result = hypergeometric_1F1_imp(a, b, z, pol, log_scaling); | ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/hypergeometric_1F1.hpp:704:49: required from ‘boost::math::tools::promote_args_t boost::math::hypergeometric_1F1(T1, T2, T3, const Policy&) [with T1 = double; T2 = double; T3 = double; Policy = policies::policy, policies::promote_double, policies::max_root_iterations<400> >; tools::promote_args_t = double]’ 704 | detail::hypergeometric_1F1_imp( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 705 | static_cast(a), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 706 | static_cast(b), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 707 | static_cast(z), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 708 | forwarding_policy()), | ~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:528:44: required from ‘Real hyp1f1_wrap(Real, Real, Real) [with Real = double]’ 528 | y = boost::math::hypergeometric_1F1(a, b, x, SpecialPolicy()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:548:23: required from here 548 | return hyp1f1_wrap(a, b, x); | ~~~~~~~~~~~^~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/recurrence.hpp:42:28: note: parameter passing for argument of type ‘boost::math::tools::detail::function_ratio_from_backwards_recurrence_fraction, double> >::result_type’ {aka ‘std::pair’} when C++17 is enabled changed to match C++14 in GCC 10.1 42 | result_type operator()() | ^~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/gamma.hpp: In instantiation of ‘boost::math::detail::upper_incomplete_gamma_fract::result_type boost::math::detail::upper_incomplete_gamma_fract::operator()() [with T = float; result_type = std::pair]’: ../subprojects/boost_math/math/include/boost/math/tools/fraction.hpp:259:20: required from ‘typename boost::math::tools::detail::fraction_traits::result_type boost::math::tools::detail::continued_fraction_a_impl(Gen&, const U&, uintmax_t&) [with Gen = boost::math::detail::upper_incomplete_gamma_fract; U = float; typename fraction_traits::result_type = float; uintmax_t = long unsigned int]’ 259 | value_type v = g(); | ~^~ ../subprojects/boost_math/math/include/boost/math/tools/fraction.hpp:311:44: required from ‘typename boost::math::tools::detail::fraction_traits::result_type boost::math::tools::continued_fraction_a(Gen&, const U&) [with Gen = boost::math::detail::upper_incomplete_gamma_fract; U = float; typename detail::fraction_traits::result_type = float]’ 311 | return detail::continued_fraction_a_impl(g, factor, max_iter); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/gamma.hpp:380:68: required from ‘T boost::math::detail::upper_gamma_fraction(T, T, T) [with T = float]’ 380 | return 1 / (z - a + 1 + boost::math::tools::continued_fraction_a(f, eps)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/gamma.hpp:1681:44: required from ‘T boost::math::detail::gamma_incomplete_imp(T, T, bool, bool, const Policy&, T*) [with T = float; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy>]’ 1681 | result += log(upper_gamma_fraction(a, x, policies::get_epsilon())); | ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/gamma.hpp:2463:35: required from ‘boost::math::tools::promote_args_t boost::math::gamma_p(RT1, RT2, const Policy&) [with RT1 = float; RT2 = float; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >; tools::promote_args_t = float]’ 2463 | detail::gamma_incomplete_imp(static_cast(a), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2464 | static_cast(z), true, false, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2465 | forwarding_policy(), static_cast(nullptr)), "gamma_p<%1%>(%1%, %1%)"); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/chi_squared.hpp:155:31: required from ‘RealType boost::math::cdf(const chi_squared_distribution&, const RealType&) [with RealType = float; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 155 | return boost::math::gamma_p(degrees_of_freedom / 2, chi_square / 2, Policy()); | ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_chi_squared.hpp:334:43: required from ‘RealType boost::math::detail::non_central_chi_squared_cdf(RealType, RealType, RealType, bool, const Policy&) [with RealType = float; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >]’ 334 | return invert == false ? cdf(boost::math::chi_squared_distribution(k), x) : cdf(complement(boost::math::chi_squared_distribution(k), x)); | ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_chi_squared.hpp:946:52: required from ‘RealType boost::math::cdf(const non_central_chi_squared_distribution&, const RealType&) [with RealType = float; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’ 946 | return detail::non_central_chi_squared_cdf(x, k, l, false, Policy()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:739:32: required from ‘Real ncx2_cdf_wrap(Real, Real, Real) [with Real = float]’ 739 | return boost::math::cdf( | ~~~~~~~~~~~~~~~~^ 740 | boost::math::non_central_chi_squared_distribution(k, l), x); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:749:25: required from here 749 | return ncx2_cdf_wrap(x, k, l); | ~~~~~~~~~~~~~^~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/gamma.hpp:365:39: note: parameter passing for argument of type ‘boost::math::detail::upper_incomplete_gamma_fract::result_type’ {aka ‘std::pair’} when C++17 is enabled changed to match C++14 in GCC 10.1 365 | BOOST_MATH_GPU_ENABLED result_type operator()() | ^~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/gamma.hpp: In instantiation of ‘boost::math::detail::upper_incomplete_gamma_fract::result_type boost::math::detail::upper_incomplete_gamma_fract::operator()() [with T = long double; result_type = std::pair]’: ../subprojects/boost_math/math/include/boost/math/tools/fraction.hpp:259:20: required from ‘typename boost::math::tools::detail::fraction_traits::result_type boost::math::tools::detail::continued_fraction_a_impl(Gen&, const U&, uintmax_t&) [with Gen = boost::math::detail::upper_incomplete_gamma_fract; U = long double; typename fraction_traits::result_type = long double; uintmax_t = long unsigned int]’ 259 | value_type v = g(); | ~^~ ../subprojects/boost_math/math/include/boost/math/tools/fraction.hpp:311:44: required from ‘typename boost::math::tools::detail::fraction_traits::result_type boost::math::tools::continued_fraction_a(Gen&, const U&) [with Gen = boost::math::detail::upper_incomplete_gamma_fract; U = long double; typename detail::fraction_traits::result_type = long double]’ 311 | return detail::continued_fraction_a_impl(g, factor, max_iter); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/gamma.hpp:380:68: required from ‘T boost::math::detail::upper_gamma_fraction(T, T, T) [with T = long double]’ 380 | return 1 / (z - a + 1 + boost::math::tools::continued_fraction_a(f, eps)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/gamma.hpp:1681:44: required from ‘T boost::math::detail::gamma_incomplete_imp(T, T, bool, bool, const Policy&, T*) [with T = long double; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy>]’ 1681 | result += log(upper_gamma_fraction(a, x, policies::get_epsilon())); | ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/gamma.hpp:2432:35: [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] ../subprojects/boost_math/math/include/boost/math/special_functions/beta.hpp:1308:54: required from ‘T boost::math::detail::ibeta_imp(T, T, T, const Policy&, bool, bool, T*) [with T = long double; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy>]’ 1308 | fract = beta_small_b_large_a_series(T(a + 20), b, x, y, fract, prefix, pol, normalised); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/beta.hpp:1536:20: required from ‘T boost::math::detail::ibeta_imp(T, T, T, const Policy&, bool, bool) [with T = long double; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy>]’ 1536 | return ibeta_imp(a, b, x, pol, inv, normalised, static_cast(nullptr)); | ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/beta.hpp:1713:93: required from ‘boost::math::tools::promote_args_t boost::math::ibetac(RT1, RT2, RT3, const Policy&) [with RT1 = double; RT2 = double; RT3 = double; Policy = policies::policy; tools::promote_args_t = double]’ 1713 | return policies::checked_narrowing_cast(detail::ibeta_imp(static_cast(a), static_cast(b), static_cast(x), forwarding_policy(), true, true), "boost::math::ibetac<%1%>(%1%,%1%,%1%)"); | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/beta.hpp:1719:30: required from ‘boost::math::tools::promote_args_t boost::math::ibetac(RT1, RT2, RT3) [with RT1 = double; RT2 = double; RT3 = double; tools::promote_args_t = double]’ 1719 | return boost::math::ibetac(a, b, x, policies::policy<>()); | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:194:32: required from ‘Real ibetac_wrap(Real, Real, Real) [with Real = double]’ 194 | y = boost::math::ibetac(a, b, x); | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~ ../scipy/special/boost_special_functions.h:220:23: required from here 220 | return ibetac_wrap(a, b, x); | ~~~~~~~~~~~^~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/gamma.hpp:365:39: note: parameter passing for argument of type ‘boost::math::detail::upper_incomplete_gamma_fract::result_type’ {aka ‘std::pair’} when C++17 is enabled changed to match C++14 in GCC 10.1 365 | BOOST_MATH_GPU_ENABLED result_type operator()() | ^~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/recurrence.hpp: In instantiation of ‘boost::math::tools::detail::function_ratio_from_backwards_recurrence_fraction::result_type boost::math::tools::detail::function_ratio_from_backwards_recurrence_fraction::operator()() [with Recurrence = boost::math::tools::detail::recurrence_offsetter >; result_type = std::pair]’: ../subprojects/boost_math/math/include/boost/math/tools/fraction.hpp:259:20: required from ‘typename boost::math::tools::detail::fraction_traits::result_type boost::math::tools::detail::continued_fraction_a_impl(Gen&, const U&, uintmax_t&) [with Gen = function_ratio_from_backwards_recurrence_fraction > >; U = double; typename fraction_traits::result_type = double; uintmax_t = long unsigned int]’ 259 | value_type v = g(); | ~^~ ../subprojects/boost_math/math/include/boost/math/tools/fraction.hpp:299:44: required from ‘typename boost::math::tools::detail::fraction_traits::result_type boost::math::tools::continued_fraction_a(Gen&, const U&, uintmax_t&) [with Gen = detail::function_ratio_from_backwards_recurrence_fraction > >; U = double; typename detail::fraction_traits::result_type = double; uintmax_t = long unsigned int]’ 299 | return detail::continued_fraction_a_impl(g, factor, max_terms); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/recurrence.hpp:106:60: required from ‘T boost::math::tools::function_ratio_from_backwards_recurrence(const Recurrence&, const T&, uintmax_t&) [with Recurrence = detail::recurrence_offsetter >; T = double; uintmax_t = long unsigned int]’ 106 | return boost::math::tools::continued_fraction_a(f, factor, max_iter); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/recurrence.hpp:296:95: required from ‘boost::math::tools::backward_recurrence_iterator::backward_recurrence_iterator(const Recurrence&, value_type) [with Recurrence = boost::math::detail::bessel_ik_recurrence; value_type = double]’ 296 | f_n_plus_1 = f_n * boost::math::tools::function_ratio_from_backwards_recurrence(detail::recurrence_offsetter(r, 1), value_type(boost::math::tools::epsilon() * 2), max_iter); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/bessel_iterators.hpp:106:15: required from ‘boost::math::bessel_i_backwards_iterator::bessel_i_backwards_iterator(const T&, const T&, const T&) [with T = double; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >]’ 106 | : it(detail::bessel_ik_recurrence(v, x), I_v) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/detail/hypergeometric_1F1_bessel.hpp:547:51: [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] ../subprojects/boost_math/math/include/boost/math/special_functions/detail/hypergeometric_1F1_bessel.hpp:590:56: required from ‘T boost::math::detail::hypergeometric_1F1_AS_13_3_6(const T&, const T&, const T&, const T&, const Policy&, long long int&) [with T = double; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >]’ 590 | hypergeometric_1F1_AS_13_3_6_series s(a, b, z, b_minus_a, pol); | ^ ../subprojects/boost_math/math/include/boost/math/special_functions/hypergeometric_1F1.hpp:377:68: required from ‘T boost::math::detail::hypergeometric_1F1_imp(const T&, const T&, const T&, const Policy&, long long int&) [with T = double; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >]’ 377 | T r = boost::math::detail::hypergeometric_1F1_AS_13_3_6(b_minus_a, b, T(-z), a, pol, log_scaling); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/hypergeometric_1F1.hpp:625:40: required from ‘T boost::math::detail::hypergeometric_1F1_imp(const T&, const T&, const T&, const Policy&) [with T = double; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >]’ 625 | T result = hypergeometric_1F1_imp(a, b, z, pol, log_scaling); | ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/hypergeometric_1F1.hpp:704:49: required from ‘boost::math::tools::promote_args_t boost::math::hypergeometric_1F1(T1, T2, T3, const Policy&) [with T1 = double; T2 = double; T3 = double; Policy = policies::policy, policies::promote_double, policies::max_root_iterations<400> >; tools::promote_args_t = double]’ 704 | detail::hypergeometric_1F1_imp( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 705 | static_cast(a), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 706 | static_cast(b), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 707 | static_cast(z), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 708 | forwarding_policy()), | ~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:528:44: required from ‘Real hyp1f1_wrap(Real, Real, Real) [with Real = double]’ 528 | y = boost::math::hypergeometric_1F1(a, b, x, SpecialPolicy()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~ ../scipy/special/boost_special_functions.h:548:23: required from here 548 | return hyp1f1_wrap(a, b, x); | ~~~~~~~~~~~^~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/recurrence.hpp:42:28: note: parameter passing for argument of type ‘boost::math::tools::detail::function_ratio_from_backwards_recurrence_fraction > >::result_type’ {aka ‘std::pair’} when C++17 is enabled changed to match C++14 in GCC 10.1 42 | result_type operator()() | ^~~~~~~~ In file included from ../subprojects/boost_math/math/include/boost/math/special_functions/gamma.hpp:19: ../subprojects/boost_math/math/include/boost/math/tools/fraction.hpp: In function ‘typename boost::math::tools::detail::fraction_traits::result_type boost::math::tools::detail::continued_fraction_a_impl(Gen&, const U&, uintmax_t&) [with Gen = boost::math::detail::upper_incomplete_gamma_fract; U = float]’: ../subprojects/boost_math/math/include/boost/math/tools/fraction.hpp:259:15: note: parameter passing for argument of type ‘boost::math::detail::upper_incomplete_gamma_fract::result_type’ {aka ‘std::pair’} when C++17 is enabled changed to match C++14 in GCC 10.1 259 | value_type v = g(); | ^ ../subprojects/boost_math/math/include/boost/math/tools/fraction.hpp: In function ‘typename boost::math::tools::detail::fraction_traits::result_type boost::math::tools::detail::continued_fraction_a_impl(Gen&, const U&, uintmax_t&) [with Gen = boost::math::detail::upper_incomplete_gamma_fract; U = double]’: ../subprojects/boost_math/math/include/boost/math/tools/fraction.hpp:259:15: note: parameter passing for argument of type ‘boost::math::detail::upper_incomplete_gamma_fract::result_type’ {aka ‘std::pair’} when C++17 is enabled changed to match C++14 in GCC 10.1 ../subprojects/boost_math/math/include/boost/math/tools/fraction.hpp: In function ‘typename boost::math::tools::detail::fraction_traits::result_type boost::math::tools::detail::continued_fraction_a_impl(Gen&, const U&, uintmax_t&) [with Gen = boost::math::detail::upper_incomplete_gamma_fract; U = long double]’: ../subprojects/boost_math/math/include/boost/math/tools/fraction.hpp:259:15: note: parameter passing for argument of type ‘boost::math::detail::upper_incomplete_gamma_fract::result_type’ {aka ‘std::pair’} when C++17 is enabled changed to match C++14 in GCC 10.1 In file included from ../scipy/special/boost_special_functions.h:13: ../subprojects/boost_math/math/include/boost/math/special_functions/hypergeometric_pFq.hpp: In function ‘typename boost::math::tools::promote_args::type boost::math::hypergeometric_pFq(const Seq&, const Seq&, const Real&, Real*, const Policy&) [with Seq = std::initializer_list; Real = double; Policy = policies::policy, policies::promote_double, policies::max_root_iterations<400> >]’: ../subprojects/boost_math/math/include/boost/math/special_functions/hypergeometric_pFq.hpp:61:44: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 61 | std::pair r = boost::math::detail::hypergeometric_pFq_checked_series_impl(aj, bj, value_type(z), pol, boost::math::detail::iteration_terminator(boost::math::policies::get_max_series_iterations()), scale); | ^ In file included from ../subprojects/boost_math/math/include/boost/math/distributions/hyperexponential.hpp:639, from ../subprojects/boost_math/math/include/boost/math/distributions.hpp:28: ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp: In function ‘typename Dist::value_type boost::math::detail::generic_quantile(const Dist&, const typename Dist::value_type&, const typename Dist::value_type&, bool, const char*) [with Dist = boost::math::non_central_chi_squared_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy> >]’: ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp:73:33: note: parameter passing for argument of type ‘const std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 73 | ? check_range_result(range(dist).second, forwarding_policy(), function) | ~~~~~^~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp: In function ‘typename Dist::value_type boost::math::detail::generic_quantile(const Dist&, const typename Dist::value_type&, const typename Dist::value_type&, bool, const char*) [with Dist = boost::math::non_central_chi_squared_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy> >]’: ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp:73:33: note: parameter passing for argument of type ‘const std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp: In function ‘RealType boost::math::detail::nc_beta_quantile(const boost::math::non_central_beta_distribution&, const RealType&, bool) [with RealType = float; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >]’: ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:515:55: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 515 | boost::math::pair ir | ^~ ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp: In function ‘RealType boost::math::detail::nc_beta_quantile(const boost::math::non_central_beta_distribution&, const RealType&, bool) [with RealType = double; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >]’: ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:515:55: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp: In function ‘RealType boost::math::detail::nc_beta_quantile(const boost::math::non_central_beta_distribution&, const RealType&, bool) [with RealType = float; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >]’: ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:515:55: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp: In function ‘RealType boost::math::detail::nc_beta_quantile(const boost::math::non_central_beta_distribution&, const RealType&, bool) [with RealType = double; Policy = boost::math::policies::policy, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile >]’: ../subprojects/boost_math/math/include/boost/math/distributions/non_central_beta.hpp:515:55: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp: In function ‘typename Dist::value_type boost::math::detail::generic_quantile(const Dist&, const typename Dist::value_type&, const typename Dist::value_type&, bool, const char*) [with Dist = boost::math::non_central_t_distribution, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> > >]’: ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp:73:33: note: parameter passing for argument of type ‘const std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 73 | ? check_range_result(range(dist).second, forwarding_policy(), function) | ~~~~~^~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp: In function ‘typename Dist::value_type boost::math::detail::generic_quantile(const Dist&, const typename Dist::value_type&, const typename Dist::value_type&, bool, const char*) [with Dist = boost::math::non_central_t_distribution, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> > >]’: ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp:73:33: note: parameter passing for argument of type ‘const std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp: In function ‘typename Dist::value_type boost::math::detail::generic_quantile(const Dist&, const typename Dist::value_type&, const typename Dist::value_type&, bool, const char*) [with Dist = boost::math::non_central_t_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy> >]’: ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp:73:33: note: parameter passing for argument of type ‘const std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp: In function ‘typename Dist::value_type boost::math::detail::generic_quantile(const Dist&, const typename Dist::value_type&, const typename Dist::value_type&, bool, const char*) [with Dist = boost::math::non_central_t_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy, boost::math::policies::default_policy> >]’: ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp:73:33: note: parameter passing for argument of type ‘const std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 ../subprojects/boost_math/math/include/boost/math/special_functions/owens_t.hpp: In function ‘RealType boost::math::detail::owens_t_dispatch(RealType, RealType, RealType, const Policy&, const std::integral_constant&) [with RealType = long double; Policy = boost::math::policies::policy]’: ../subprojects/boost_math/math/include/boost/math/special_functions/owens_t.hpp:874:46: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 874 | p1 = owens_t_T1_accelerated(h, a, forwarding_policy()); | ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/skew_normal.hpp: In function ‘RealType boost::math::quantile(const skew_normal_distribution&, const RealType&) [with RealType = float; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’: ../subprojects/boost_math/math/include/boost/math/distributions/skew_normal.hpp:694:10: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 694 | auto p_result = tools::bracket_and_solve_root(fun, result, scaling_factor, true, tools::eps_tolerance(get_digits), max_iter, Policy()); | ^~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/skew_normal.hpp: In function ‘RealType boost::math::quantile(const skew_normal_distribution&, const RealType&) [with RealType = double; Policy = policies::policy, policies::overflow_error, policies::evaluation_error, policies::promote_float, policies::promote_double, policies::discrete_quantile >]’: ../subprojects/boost_math/math/include/boost/math/distributions/skew_normal.hpp:694:10: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 In file included from ../subprojects/boost_math/math/include/boost/math/distributions/binomial.hpp:88: ../subprojects/boost_math/math/include/boost/math/distributions/detail/inv_discrete_quantile.hpp: In function ‘typename Dist::value_type boost::math::detail::do_inverse_discrete_quantile(const Dist&, const typename Dist::value_type&, bool, typename Dist::value_type, const typename Dist::value_type&, typename Dist::value_type, const Tolerance&, uintmax_t&) [with Dist = boost::math::binomial_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile > >; Tolerance = boost::math::tools::equal_ceil]’: ../subprojects/boost_math/math/include/boost/math/distributions/detail/inv_discrete_quantile.hpp:99:52: note: parameter passing for argument of type ‘const std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 99 | boost::math::tie(min_bound, max_bound) = support(dist); | ~~~~~~~^~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/detail/inv_discrete_quantile.hpp: In function ‘typename Dist::value_type boost::math::detail::do_inverse_discrete_quantile(const Dist&, const typename Dist::value_type&, bool, typename Dist::value_type, const typename Dist::value_type&, typename Dist::value_type, const Tolerance&, uintmax_t&) [with Dist = boost::math::binomial_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile > >; Tolerance = boost::math::tools::equal_ceil]’: ../subprojects/boost_math/math/include/boost/math/distributions/detail/inv_discrete_quantile.hpp:99:52: note: parameter passing for argument of type ‘const std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 ../subprojects/boost_math/math/include/boost/math/distributions/detail/inv_discrete_quantile.hpp: In function ‘typename Dist::value_type boost::math::detail::do_inverse_discrete_quantile(const Dist&, const typename Dist::value_type&, bool, typename Dist::value_type, const typename Dist::value_type&, typename Dist::value_type, const Tolerance&, uintmax_t&) [with Dist = boost::math::negative_binomial_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile > >; Tolerance = boost::math::tools::equal_ceil]’: ../subprojects/boost_math/math/include/boost/math/distributions/detail/inv_discrete_quantile.hpp:99:52: note: parameter passing for argument of type ‘const std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 ../subprojects/boost_math/math/include/boost/math/distributions/detail/inv_discrete_quantile.hpp: In function ‘typename Dist::value_type boost::math::detail::do_inverse_discrete_quantile(const Dist&, const typename Dist::value_type&, bool, typename Dist::value_type, const typename Dist::value_type&, typename Dist::value_type, const Tolerance&, uintmax_t&) [with Dist = boost::math::negative_binomial_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile > >; Tolerance = boost::math::tools::equal_ceil]’: ../subprojects/boost_math/math/include/boost/math/distributions/detail/inv_discrete_quantile.hpp:99:52: note: parameter passing for argument of type ‘const std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp: In function ‘typename Dist::value_type boost::math::detail::generic_quantile(const Dist&, const typename Dist::value_type&, const typename Dist::value_type&, bool, const char*) [with Dist = boost::math::non_central_t_distribution, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> > >]’: ../subprojects/boost_math/math/include/boost/math/distributions/detail/generic_quantile.hpp:73:33: note: parameter passing for argument of type ‘const std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 73 | ? check_range_result(range(dist).second, forwarding_policy(), function) | ~~~~~^~~~~~ ../subprojects/boost_math/math/include/boost/math/tools/fraction.hpp: In function ‘typename boost::math::tools::detail::fraction_traits::result_type boost::math::tools::detail::continued_fraction_a_impl(Gen&, const U&, uintmax_t&) [with Gen = boost::math::detail::upper_incomplete_gamma_fract; U = long double]’: ../subprojects/boost_math/math/include/boost/math/tools/fraction.hpp:259:20: note: parameter passing for argument of type ‘boost::math::detail::upper_incomplete_gamma_fract::result_type’ {aka ‘std::pair’} when C++17 is enabled changed to match C++14 in GCC 10.1 259 | value_type v = g(); | ~^~ In file included from ../subprojects/boost_math/math/include/boost/math/special_functions/detail/hypergeometric_1F1_recurrence.hpp:18: ../subprojects/boost_math/math/include/boost/math/special_functions/detail/hypergeometric_pFq_checked_series.hpp: In function ‘std::pair<_ForwardIterator, _ForwardIterator> boost::math::detail::hypergeometric_pFq_checked_series_impl(const Seq&, const Seq&, const Real&, const Policy&, const Terminal&, long long int&) [with Seq = std::initializer_list; Real = double; Policy = boost::math::policies::policy, boost::math::policies::promote_double, boost::math::policies::max_root_iterations<400> >; Terminal = iteration_terminator]’: ../subprojects/boost_math/math/include/boost/math/special_functions/detail/hypergeometric_pFq_checked_series.hpp:122:28: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 122 | std::pair hypergeometric_pFq_checked_series_impl(const Seq& aj, const Seq& bj, const Real& z, const Policy& pol, const Terminal& termination, long long& log_scale) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/distributions/detail/inv_discrete_quantile.hpp: In function ‘typename Dist::value_type boost::math::detail::do_inverse_discrete_quantile(const Dist&, const typename Dist::value_type&, bool, typename Dist::value_type, const typename Dist::value_type&, typename Dist::value_type, const Tolerance&, uintmax_t&) [with Dist = boost::math::negative_binomial_distribution, boost::math::policies::overflow_error, boost::math::policies::evaluation_error, boost::math::policies::promote_float, boost::math::policies::promote_double, boost::math::policies::discrete_quantile > >; Tolerance = boost::math::tools::equal_ceil]’: ../subprojects/boost_math/math/include/boost/math/distributions/detail/inv_discrete_quantile.hpp:280:63: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 280 | boost::math::pair r = toms748_solve(f, a, b, fa, fb, tol, count, policy_type()); | ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../subprojects/boost_math/math/include/boost/math/special_functions/owens_t.hpp: In function ‘std::pair<_FIter, _FIter> boost::math::detail::owens_t_T1_accelerated(T, T, const Policy&) [with T = long double; Policy = boost::math::policies::policy]’: ../subprojects/boost_math/math/include/boost/math/special_functions/owens_t.hpp:543:26: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 543 | std::pair owens_t_T1_accelerated(T h, T a, const Policy& pol) | ^~~~~~~~~~~~~~~~~~~~~~ [847/1468] Compiling C object scipy/linalg/_fblas.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated_..__fblasmodule.c.o [848/1468] Compiling C object scipy/linalg/_flapack.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated_..__flapackmodule.c.o [849/1468] Compiling C object scipy/linalg/_solve_toeplitz.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__solve_toeplitz.c.o [850/1468] Compiling C object scipy/linalg/_matfuncs_sqrtm_triu.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__matfuncs_sqrtm_triu.c.o [851/1468] Compiling C object scipy/linalg/_decomp_interpolative.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__decomp_interpolative.c.o [852/1468] Compiling C object scipy/linalg/cython_blas.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated_cython_blas.c.o [853/1468] Compiling C object scipy/linalg/_decomp_lu_cython.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__decomp_lu_cython.c.o [854/1468] Compiling C object scipy/linalg/cython_lapack.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated_cython_lapack.c.o [855/1468] Compiling C object scipy/linalg/_matfuncs_expm.cpython-314-powerpc64le-linux-gnu.so.p/_matfuncs_expm.c.o [856/1468] Compiling C object scipy/linalg/_matfuncs_schur_sqrtm.cpython-314-powerpc64le-linux-gnu.so.p/_matfuncs_sqrtm.c.o [857/1468] Compiling C object scipy/linalg/_decomp_update.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__decomp_update.c.o [858/1468] Compiling C++ object scipy/linalg/_linalg_pythran.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__linalg_pythran.cpp.o In file included from /usr/include/xsimd/xsimd.hpp:56, from ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/include/numpy/abs.hpp:9, from ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/include/builtins/abs.hpp:4, from scipy/linalg/_linalg_pythran.cpython-314-powerpc64le-linux-gnu.so.p/_linalg_pythran.cpp:22: /usr/include/xsimd/arch/xsimd_scalar.hpp: In function ‘std::pair xsimd::sincos(float)’: /usr/include/xsimd/arch/xsimd_scalar.hpp:1180:60: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 1180 | XSIMD_INLINE std::pair sincos(float val) noexcept | ^~~~~~~~ /usr/include/xsimd/arch/xsimd_scalar.hpp: In function ‘std::pair xsimd::sincos(double)’: /usr/include/xsimd/arch/xsimd_scalar.hpp:1187:63: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 1187 | XSIMD_INLINE std::pair sincos(double val) noexcept | ^~~~~~~~ [859/1468] Compiling C object scipy/linalg/_cythonized_array_utils.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__cythonized_array_utils.c.o [860/1468] Compiling C object scipy/special/cython_special.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated_cython_special.c.o [861/1468] Compiling C++ object scipy/sparse/sparsetools/_sparsetools.cpython-314-powerpc64le-linux-gnu.so.p/csc.cxx.o [862/1468] Compiling C object scipy/sparse/_csparsetools.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__csparsetools.c.o [863/1468] Compiling C++ object scipy/sparse/sparsetools/_sparsetools.cpython-314-powerpc64le-linux-gnu.so.p/other.cxx.o [864/1468] Compiling C++ object scipy/sparse/sparsetools/_sparsetools.cpython-314-powerpc64le-linux-gnu.so.p/sparsetools.cxx.o [865/1468] Compiling C object scipy/sparse/csgraph/_flow.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__flow.c.o [866/1468] Compiling C object scipy/sparse/csgraph/_matching.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__matching.c.o [867/1468] Compiling C object scipy/sparse/csgraph/_min_spanning_tree.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__min_spanning_tree.c.o [868/1468] Compiling C object scipy/sparse/csgraph/_reordering.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__reordering.c.o [869/1468] Compiling C object scipy/sparse/csgraph/_tools.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__tools.c.o [870/1468] Compiling C object scipy/sparse/csgraph/_traversal.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__traversal.c.o [871/1468] Compiling C++ object scipy/sparse/csgraph/_shortest_path.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__shortest_path.cpp.o [872/1468] Linking static target scipy/sparse/linalg/_propack/liblib__spropack.a [873/1468] Compiling C object scipy/sparse/linalg/_propack/_spropack.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__spropackmodule.c.o [874/1468] Compiling Fortran object scipy/sparse/linalg/_propack/_spropack.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__spropack-f2pywrappers.f.o [875/1468] Linking static target scipy/sparse/linalg/_propack/liblib__dpropack.a [876/1468] Compiling C object scipy/sparse/linalg/_propack/_dpropack.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__dpropackmodule.c.o [877/1468] Compiling Fortran object scipy/sparse/linalg/_propack/_dpropack.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__dpropack-f2pywrappers.f.o [878/1468] Linking static target scipy/sparse/linalg/_propack/liblib__cpropack.a [879/1468] Compiling C object scipy/sparse/linalg/_propack/_cpropack.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__cpropackmodule.c.o [880/1468] Compiling Fortran object scipy/sparse/linalg/_propack/_cpropack.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__cpropack-f2pywrappers.f.o [881/1468] Linking static target scipy/sparse/linalg/_propack/liblib__zpropack.a [882/1468] Compiling C object scipy/sparse/linalg/_propack/_zpropack.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__zpropackmodule.c.o [883/1468] Compiling Fortran object scipy/sparse/linalg/_propack/_zpropack.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__zpropack-f2pywrappers.f.o [884/1468] Linking static target scipy/sparse/linalg/_dsolve/libsuperlu_lib.a [885/1468] Compiling C object scipy/sparse/linalg/_dsolve/_superlu.cpython-314-powerpc64le-linux-gnu.so.p/_superlumodule.c.o [886/1468] Compiling C object scipy/sparse/linalg/_dsolve/_superlu.cpython-314-powerpc64le-linux-gnu.so.p/_superlu_utils.c.o [887/1468] Compiling C object scipy/sparse/linalg/_dsolve/_superlu.cpython-314-powerpc64le-linux-gnu.so.p/_superluobject.c.o [888/1468] Linking static target scipy/sparse/linalg/_eigen/arpack/libarpack_lib.a [889/1468] Compiling C object scipy/sparse/linalg/_eigen/arpack/_arpack.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated_..__arpackmodule.c.o [890/1468] Compiling Fortran object scipy/sparse/linalg/_eigen/arpack/_arpack.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated_..__arpack-f2pywrappers.f.o [891/1468] Compiling C object scipy/stats/_stats.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__stats.c.o [892/1468] Compiling C object scipy/stats/_ansari_swilk_statistics.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__ansari_swilk_statistics.c.o [893/1468] Compiling C object scipy/stats/_sobol.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__sobol.c.o [894/1468] Compiling C++ object scipy/sparse/sparsetools/_sparsetools.cpython-314-powerpc64le-linux-gnu.so.p/csr.cxx.o [895/1468] Compiling C++ object scipy/stats/_qmc_cy.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__qmc_cy.cpp.o [896/1468] Compiling C++ object scipy/stats/_biasedurn.cpython-314-powerpc64le-linux-gnu.so.p/biasedurn_fnchyppr.cpp.o [897/1468] Compiling C++ object scipy/stats/_biasedurn.cpython-314-powerpc64le-linux-gnu.so.p/biasedurn_impls.cpp.o [898/1468] Compiling C++ object scipy/stats/_biasedurn.cpython-314-powerpc64le-linux-gnu.so.p/biasedurn_stoc1.cpp.o [899/1468] Compiling C++ object scipy/stats/_biasedurn.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__biasedurn.cpp.o [900/1468] Compiling C++ object scipy/stats/_biasedurn.cpython-314-powerpc64le-linux-gnu.so.p/biasedurn_stoc3.cpp.o [901/1468] Compiling C object scipy/stats/_biasedurn.cpython-314-powerpc64le-linux-gnu.so.p/libnpyrandom_distributions.c.o [902/1468] Compiling C++ object scipy/stats/_biasedurn.cpython-314-powerpc64le-linux-gnu.so.p/biasedurn_wnchyppr.cpp.o [903/1468] Compiling C++ object scipy/stats/_qmvnt_cy.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__qmvnt_cy.cpp.o [904/1468] Linking static target scipy/stats/_levy_stable/lib_levyst.a [905/1468] Compiling C object scipy/stats/_levy_stable/levyst.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated_levyst.c.o [906/1468] Compiling C++ object scipy/stats/_stats_pythran.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__stats_pythran.cpp.o In file included from /usr/include/xsimd/xsimd.hpp:56, from ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/include/numpy/ceil.hpp:8, from scipy/stats/_stats_pythran.cpython-314-powerpc64le-linux-gnu.so.p/_stats_pythran.cpp:36: /usr/include/xsimd/arch/xsimd_scalar.hpp: In function ‘std::pair xsimd::sincos(float)’: /usr/include/xsimd/arch/xsimd_scalar.hpp:1180:60: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 1180 | XSIMD_INLINE std::pair sincos(float val) noexcept | ^~~~~~~~ /usr/include/xsimd/arch/xsimd_scalar.hpp: In function ‘std::pair xsimd::sincos(double)’: /usr/include/xsimd/arch/xsimd_scalar.hpp:1187:63: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 1187 | XSIMD_INLINE std::pair sincos(double val) noexcept | ^~~~~~~~ In file included from ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/include/types/numpy_op_helper.hpp:4, from ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/include/numpy/bool_.hpp:4, from ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/include/types/ndarray.hpp:19, from ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/ndarray.hpp:4, from ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/tuple.hpp:8, from ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/builtins/bool_.hpp:6, from ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/NoneType.hpp:6, from ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/slice.hpp:5, from ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/core.hpp:47, from scipy/stats/_stats_pythran.cpython-314-powerpc64le-linux-gnu.so.p/_stats_pythran.cpp:1: ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/include/types/numpy_broadcast.hpp: In instantiation of ‘{anonymous}::pythonic::types::broadcast::const_iterator {anonymous}::pythonic::types::broadcast::begin() const [with T = double; B = double; const_iterator = {anonymous}::pythonic::types::const_broadcast_iterator]’: ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/utils/broadcast_copy.hpp:346:32: required from ‘void {anonymous}::pythonic::utils::_broadcast_update::operator()(E&&, const {anonymous}::pythonic::types::broadcast&) [with E = {anonymous}::pythonic::types::numpy_gexpr >&, {anonymous}::pythonic::types::cstride_normalized_slice<1> >&; F0 = double; F1 = double; Op = {anonymous}::pythonic::operator_::functor::imul; long unsigned int N = 1; vector_form = {anonymous}::pythonic::types::novectorize]’ 346 | auto value = *other.begin(); | ~~~~~~~~~~~^~ ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/utils/broadcast_copy.hpp:512:58: required from ‘void {anonymous}::pythonic::utils::broadcast_update_dispatcher::operator()(E&, const F&) [with Op = {anonymous}::pythonic::operator_::functor::imul; E = {anonymous}::pythonic::types::numpy_gexpr >&, {anonymous}::pythonic::types::cstride_normalized_slice<1> >&; F = {anonymous}::pythonic::types::broadcast; long unsigned int N = 1; long unsigned int D = 0]’ 512 | _broadcast_update{}(self, other); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~ ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/utils/broadcast_copy.hpp:534:59: required from ‘E& {anonymous}::pythonic::utils::broadcast_update(E&, const F&) [with Op = {anonymous}::pythonic::operator_::functor::imul; E = {anonymous}::pythonic::types::numpy_gexpr >&, {anonymous}::pythonic::types::cstride_normalized_slice<1> >&; F = {anonymous}::pythonic::types::broadcast; long unsigned int N = 1; int D = 0; bool vector_form = true]’ 534 | broadcast_update_dispatcher{}(self, other); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~ ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/numpy_gexpr.hpp:556:20: required from ‘typename std::enable_if<(! {anonymous}::pythonic::types::may_overlap_gexpr::value), {anonymous}::pythonic::types::numpy_gexpr&>::type {anonymous}::pythonic::types::numpy_gexpr::update_(const E&) [with Op = {anonymous}::pythonic::operator_::functor::imul; E = double; Arg = const {anonymous}::pythonic::types::ndarray >&; S = {{anonymous}::pythonic::types::cstride_normalized_slice<1>}; typename std::enable_if<(! {anonymous}::pythonic::types::may_overlap_gexpr::value), {anonymous}::pythonic::types::numpy_gexpr&>::type = {anonymous}::pythonic::types::numpy_gexpr >&, {anonymous}::pythonic::types::cstride_normalized_slice<1> >&]’ 549 | return utils::broadcast_update < Op, numpy_gexpr &, BExpr, value, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 550 | value - (std::is_scalar::value + utils::dim_of::value), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 551 | is_vectorizable && | ~~~~~~~~~~~~~~~~~~ 552 | types::is_vectorizable::type>::type>::value && | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 554 | std::is_same::type>::type>::value > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 556 | (*this, bexpr); | ^~~~~~~~~~~~~~ ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/numpy_gexpr.hpp:623:55: required from ‘{anonymous}::pythonic::types::numpy_gexpr& {anonymous}::pythonic::types::numpy_gexpr::operator*=(const E&) [with E = double; Arg = const {anonymous}::pythonic::types::ndarray >&; S = {{anonymous}::pythonic::types::cstride_normalized_slice<1>}]’ 623 | return update_(expr); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~ scipy/stats/_stats_pythran.cpython-314-powerpc64le-linux-gnu.so.p/_stats_pythran.cpp:590:135: required from ‘typename {anonymous}::__pythran__stats_pythran::_poisson_binom_pmf::type::result_type {anonymous}::__pythran__stats_pythran::_poisson_binom_pmf::operator()(argument_type0) const [with argument_type0 = {anonymous}::pythonic::types::ndarray >; typename type::result_type = {anonymous}::pythonic::types::ndarray >]’ 590 | pythonic::types::as_const(pmf)[pythonic::types::contiguous_slice(pythonic::builtins::None,pythonic::operator_::add(i, 1L))] *= pythonic::operator_::sub(1L, pythonic::types::as_const(p).fast(i)); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ scipy/stats/_stats_pythran.cpython-314-powerpc64le-linux-gnu.so.p/_stats_pythran.cpp:1141:90: required from here 1141 | auto res = __pythran__stats_pythran::_poisson_binom_pmf()(p); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~ ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/include/types/numpy_broadcast.hpp:328:20: note: parameter passing for argument of type ‘{anonymous}::pythonic::types::broadcast::const_iterator’ {aka ‘{anonymous}::pythonic::types::const_broadcast_iterator’} when C++17 is enabled changed to match C++14 in GCC 10.1 328 | const_iterator begin() const | ^~~~~ ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/include/types/numpy_broadcast.hpp: In instantiation of ‘{anonymous}::pythonic::types::broadcast::const_iterator {anonymous}::pythonic::types::broadcast::begin() const [with T = float; B = double; const_iterator = {anonymous}::pythonic::types::const_broadcast_iterator]’: ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/numpy_expr.hpp:51:19: required from ‘{anonymous}::pythonic::types::numpy_expr::const_iterator {anonymous}::pythonic::types::numpy_expr::_begin({anonymous}::pythonic::utils::index_sequence) const [with long unsigned int ...I = {0, 1}; Op = {anonymous}::pythonic::operator_::functor::mul; Args = {{anonymous}::pythonic::types::broadcast, {anonymous}::pythonic::types::ndarray >&}; const_iterator = {anonymous}::pythonic::types::numpy_expr_iterator<{anonymous}::pythonic::operator_::functor::mul, {anonymous}::pythonic::types::pshape, {anonymous}::pythonic::types::const_broadcast_iterator, const float*>; {anonymous}::pythonic::utils::index_sequence = {anonymous}::pythonic::utils::integer_sequence]’ 50 | const_cast::type const &>(std::get(args)) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 51 | .begin()...}; | ~~~~~~^~ ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/numpy_expr.hpp:58:18: required from ‘{anonymous}::pythonic::types::numpy_expr::const_iterator {anonymous}::pythonic::types::numpy_expr::begin() const [with Op = {anonymous}::pythonic::operator_::functor::mul; Args = {{anonymous}::pythonic::types::broadcast, {anonymous}::pythonic::types::ndarray >&}; const_iterator = {anonymous}::pythonic::types::numpy_expr_iterator<{anonymous}::pythonic::operator_::functor::mul, {anonymous}::pythonic::types::pshape, {anonymous}::pythonic::types::const_broadcast_iterator, const float*>]’ 58 | return _begin(utils::make_index_sequence{}); | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/numpy_expr.hpp:51:19: required from ‘{anonymous}::pythonic::types::numpy_expr::const_iterator {anonymous}::pythonic::types::numpy_expr::_begin({anonymous}::pythonic::utils::index_sequence) const [with long unsigned int ...I = {0, 1}; Op = {anonymous}::pythonic::operator_::functor::sub; Args = {{anonymous}::pythonic::types::ndarray >&, {anonymous}::pythonic::types::numpy_expr<{anonymous}::pythonic::operator_::functor::mul, {anonymous}::pythonic::types::broadcast, {anonymous}::pythonic::types::ndarray >&>}; const_iterator = {anonymous}::pythonic::types::numpy_expr_iterator<{anonymous}::pythonic::operator_::functor::sub, {anonymous}::pythonic::types::pshape, const float*, {anonymous}::pythonic::types::numpy_expr_iterator<{anonymous}::pythonic::operator_::functor::mul, {anonymous}::pythonic::types::pshape, {anonymous}::pythonic::types::const_broadcast_iterator, const float*> >; {anonymous}::pythonic::utils::index_sequence = {anonymous}::pythonic::utils::integer_sequence]’ 50 | const_cast::type const &>(std::get(args)) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 51 | .begin()...}; | ~~~~~~^~ ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/numpy_expr.hpp:58:18: required from ‘{anonymous}::pythonic::types::numpy_expr::const_iterator {anonymous}::pythonic::types::numpy_expr::begin() const [with Op = {anonymous}::pythonic::operator_::functor::sub; Args = {{anonymous}::pythonic::types::ndarray >&, {anonymous}::pythonic::types::numpy_expr<{anonymous}::pythonic::operator_::functor::mul, {anonymous}::pythonic::types::broadcast, {anonymous}::pythonic::types::ndarray >&>}; const_iterator = {anonymous}::pythonic::types::numpy_expr_iterator<{anonymous}::pythonic::operator_::functor::sub, {anonymous}::pythonic::types::pshape, const float*, {anonymous}::pythonic::types::numpy_expr_iterator<{anonymous}::pythonic::operator_::functor::mul, {anonymous}::pythonic::types::pshape, {anonymous}::pythonic::types::const_broadcast_iterator, const float*> >]’ 58 | return _begin(utils::make_index_sequence{}); | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/utils/broadcast_copy.hpp:132:28: required from ‘void {anonymous}::pythonic::utils::_broadcast_copy::operator()(E&&, const F&, Indices ...) [with E = {anonymous}::pythonic::types::ndarray >&; F = {anonymous}::pythonic::types::numpy_expr<{anonymous}::pythonic::operator_::functor::sub, {anonymous}::pythonic::types::ndarray >&, {anonymous}::pythonic::types::numpy_expr<{anonymous}::pythonic::operator_::functor::mul, {anonymous}::pythonic::types::broadcast, {anonymous}::pythonic::types::ndarray >&> >; Indices = {}; long unsigned int N = 1; vectorizer = {anonymous}::pythonic::types::novectorize]’ 132 | std::copy(other.begin(), other.end(), self.begin()); | ~~~~~~~~~~~^~ ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/utils/broadcast_copy.hpp:231:52: [ skipping 3 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/ndarray.hpp:473:77: required from ‘void {anonymous}::pythonic::types::ndarray::initialize_from_expr(const E&) [with E = {anonymous}::pythonic::types::numpy_expr<{anonymous}::pythonic::operator_::functor::sub, {anonymous}::pythonic::types::ndarray >&, {anonymous}::pythonic::types::numpy_expr<{anonymous}::pythonic::operator_::functor::mul, {anonymous}::pythonic::types::broadcast, {anonymous}::pythonic::types::ndarray >&> >; T = float; pS = {anonymous}::pythonic::types::pshape]’ 471 | utils::broadcast_copy::value>( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 474 | *this, expr); | ~~~~~~~~~~~~ ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/ndarray.hpp:483:25: required from ‘{anonymous}::pythonic::types::ndarray::ndarray(const {anonymous}::pythonic::types::numpy_expr&) [with Op = {anonymous}::pythonic::operator_::functor::sub; Args = {{anonymous}::pythonic::types::ndarray >&, {anonymous}::pythonic::types::numpy_expr<{anonymous}::pythonic::operator_::functor::mul, {anonymous}::pythonic::types::broadcast, {anonymous}::pythonic::types::ndarray >&>}; T = float; pS = {anonymous}::pythonic::types::pshape]’ 483 | initialize_from_expr(expr); | ~~~~~~~~~~~~~~~~~~~~^~~~~~ ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/numpy/median.hpp:119:3: required from ‘typename std::enable_if<((! {anonymous}::pythonic::types::is_ndarray::value) && {anonymous}::pythonic::types::is_numexpr_arg::value), decltype ({anonymous}::pythonic::numpy::median({anonymous}::pythonic::types::ndarray{expr}, (forward)(::pythonic::numpy::median::others)...))>::type {anonymous}::pythonic::numpy::median(const E&, Types&& ...) [with E = {anonymous}::pythonic::types::numpy_expr<{anonymous}::pythonic::operator_::functor::sub, {anonymous}::pythonic::types::ndarray >&, {anonymous}::pythonic::types::numpy_expr<{anonymous}::pythonic::operator_::functor::mul, {anonymous}::pythonic::types::broadcast, {anonymous}::pythonic::types::ndarray >&> >; Types = {}; typename std::enable_if<((! {anonymous}::pythonic::types::is_ndarray::value) && {anonymous}::pythonic::types::is_numexpr_arg::value), decltype ({anonymous}::pythonic::numpy::median({anonymous}::pythonic::types::ndarray{expr}, (forward)(::pythonic::numpy::median::others)...))>::type = double; decltype ({anonymous}::pythonic::numpy::median({anonymous}::pythonic::types::ndarray{expr}, (forward)(::pythonic::numpy::median::others)...)) = double; typename E::dtype = float; typename E::shape_t = {anonymous}::pythonic::types::pshape]’ 28 | return fname(types::ndarray{expr}, \ ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/include/numpy/median.hpp:32:3: required from ‘decltype ({anonymous}::pythonic::numpy::median((forward)(::pythonic::numpy::functor::median::operator()::types)...)) {anonymous}::pythonic::numpy::functor::median::operator()(Types&& ...) const [with Types = {{anonymous}::pythonic::types::numpy_expr<{anonymous}::pythonic::operator_::functor::sub, {anonymous}::pythonic::types::ndarray >&, {anonymous}::pythonic::types::numpy_expr<{anonymous}::pythonic::operator_::functor::mul, {anonymous}::pythonic::types::broadcast, {anonymous}::pythonic::types::ndarray >&> >}; decltype ({anonymous}::pythonic::numpy::median((forward)(::pythonic::numpy::functor::median::operator()::types)...)) = double]’ 17 | return f(std::forward(types)...); \ scipy/stats/_stats_pythran.cpython-314-powerpc64le-linux-gnu.so.p/_stats_pythran.cpp:691:54: required from ‘typename {anonymous}::__pythran__stats_pythran::siegelslopes::type::result_type {anonymous}::__pythran__stats_pythran::siegelslopes::operator()(argument_type0, argument_type1, argument_type2) const [with argument_type0 = {anonymous}::pythonic::types::ndarray >; argument_type1 = {anonymous}::pythonic::types::ndarray >; argument_type2 = {anonymous}::pythonic::types::str; typename type::result_type = {anonymous}::pythonic::types::array_base]’ 691 | medinter = pythonic::numpy::functor::median{}(pythonic::operator_::sub(y, pythonic::operator_::mul(medslope, x))); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ scipy/stats/_stats_pythran.cpython-314-powerpc64le-linux-gnu.so.p/_stats_pythran.cpp:1173:84: required from here 1173 | auto res = __pythran__stats_pythran::siegelslopes()(y, x, method); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~ ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/include/types/numpy_broadcast.hpp:328:20: note: parameter passing for argument of type ‘{anonymous}::pythonic::types::broadcast::const_iterator’ {aka ‘{anonymous}::pythonic::types::const_broadcast_iterator’} when C++17 is enabled changed to match C++14 in GCC 10.1 328 | const_iterator begin() const | ^~~~~ In file included from ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/ndarray.hpp:38: ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/numpy_expr.hpp: In member function ‘{anonymous}::pythonic::types::numpy_expr::const_iterator {anonymous}::pythonic::types::numpy_expr::_begin({anonymous}::pythonic::utils::index_sequence) const [with long unsigned int ...I = {0, 1}; Op = {anonymous}::pythonic::operator_::functor::mul; Args = {{anonymous}::pythonic::types::broadcast, {anonymous}::pythonic::types::ndarray >&}]’: ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/numpy_expr.hpp:51:24: note: parameter passing for argument of type ‘{anonymous}::pythonic::types::broadcast::const_iterator’ {aka ‘{anonymous}::pythonic::types::const_broadcast_iterator’} when C++17 is enabled changed to match C++14 in GCC 10.1 51 | .begin()...}; | ^ ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/numpy_expr.hpp: In member function ‘{anonymous}::pythonic::types::numpy_expr::const_iterator {anonymous}::pythonic::types::numpy_expr::_begin({anonymous}::pythonic::utils::index_sequence) const [with long unsigned int ...I = {0, 1}; Op = {anonymous}::pythonic::operator_::functor::mul; Args = {{anonymous}::pythonic::types::broadcast, {anonymous}::pythonic::types::ndarray >&}]’: ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/numpy_expr.hpp:51:24: note: parameter passing for argument of type ‘{anonymous}::pythonic::types::broadcast::const_iterator’ {aka ‘{anonymous}::pythonic::types::const_broadcast_iterator’} when C++17 is enabled changed to match C++14 in GCC 10.1 ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/numpy_expr.hpp: In member function ‘{anonymous}::pythonic::types::numpy_expr::const_iterator {anonymous}::pythonic::types::numpy_expr::_begin({anonymous}::pythonic::utils::index_sequence) const [with long unsigned int ...I = {0, 1}; Op = {anonymous}::pythonic::operator_::functor::mul; Args = {{anonymous}::pythonic::types::numpy_gexpr >&, {anonymous}::pythonic::types::cstride_normalized_slice<1> >, {anonymous}::pythonic::types::broadcast}]’: ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/numpy_expr.hpp:51:24: note: parameter passing for argument of type ‘{anonymous}::pythonic::types::broadcast::const_iterator’ {aka ‘{anonymous}::pythonic::types::const_broadcast_iterator’} when C++17 is enabled changed to match C++14 in GCC 10.1 [907/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distr_cemp.c.o [908/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distr_condi.c.o [909/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distr_cont.c.o [910/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distr_corder.c.o [911/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distr_cvec.c.o [912/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distr_cvemp.c.o [913/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distr_cxtrans.c.o [914/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distr_discr.c.o [915/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distr_distr.c.o [916/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distr_distr_info.c.o [917/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distr_matr.c.o [918/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_F.c.o [919/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_beta.c.o [920/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_beta_gen.c.o [921/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_burr.c.o [922/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_cauchy.c.o [923/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_chi.c.o [924/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_chi_gen.c.o [925/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_chisquare.c.o [926/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_exponential.c.o [927/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_exponential_gen.c.o [928/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_extremeI.c.o [929/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_extremeII.c.o [930/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_gamma.c.o [931/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_gamma_gen.c.o [932/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_ghyp.c.o [933/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_gig.c.o [934/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_gig2.c.o [935/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_gig_gen.c.o [936/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_hyperbolic.c.o [937/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_ig.c.o [938/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_laplace.c.o [939/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_logistic.c.o [940/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_lognormal.c.o [941/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_lomax.c.o [942/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_meixner.c.o [943/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_normal.c.o [944/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_normal_gen.c.o [945/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_pareto.c.o [946/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_powerexponential.c.o [947/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_powerexponential_gen.c.o [948/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_rayleigh.c.o [949/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_slash.c.o [950/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_slash_gen.c.o [951/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_student.c.o [952/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_student_gen.c.o [953/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_triangular.c.o [954/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_uniform.c.o [955/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_vg.c.o [956/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_c_weibull.c.o [957/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_d_binomial.c.o [958/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_d_binomial_gen.c.o [959/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_d_geometric.c.o [960/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_d_hypergeometric.c.o [961/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_d_hypergeometric_gen.c.o [962/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_d_logarithmic.c.o [963/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_d_logarithmic_gen.c.o [964/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_d_negativebinomial.c.o [965/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_d_poisson.c.o [966/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_d_poisson_gen.c.o [967/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_d_zipf.c.o [968/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated_unuran_wrapper.c.o [969/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_m_correlation.c.o [970/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_d_zipf_gen.c.o [971/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_vc_copula.c.o [972/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_vc_multiexponential.c.o [973/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_vc_multicauchy.c.o [974/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_vc_multinormal_gen.c.o [975/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_vc_multinormal.c.o [976/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_distributions_vc_multistudent.c.o [977/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_arou.c.o [978/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_ars.c.o [979/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_auto.c.o [980/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_cext.c.o [981/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_cstd.c.o [982/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_dari.c.o [983/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_dau.c.o [984/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_dext.c.o [985/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_dgt.c.o [986/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_dsrou.c.o [987/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_dss.c.o [988/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_dstd.c.o [989/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_empk.c.o [990/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_empl.c.o [991/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_gibbs.c.o [992/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_hist.c.o [993/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_hinv.c.o [994/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_hrb.c.o [995/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_hrd.c.o [996/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_hitro.c.o [997/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_hri.c.o [998/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_itdr.c.o [999/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_mcorr.c.o [1000/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_mixt.c.o [1001/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_mvstd.c.o [1002/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_ninv.c.o [1003/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_mvtdr.c.o [1004/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_norta.c.o [1005/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_nrou.c.o [1006/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_srou.c.o [1007/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_ssr.c.o [1008/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_pinv.c.o [1009/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_tabl.c.o [1010/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_unif.c.o [1011/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_utdr.c.o [1012/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_vempk.c.o [1013/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_vnrou.c.o [1014/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_x_gen.c.o [1015/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_methods_tdr.c.o [1016/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_parser_parser.c.o [1017/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_parser_functparser.c.o [1018/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_specfunct_bessel_asympt.c.o [1019/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_specfunct_cephes_gamma.c.o [1020/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_specfunct_cephes_igam.c.o [1021/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_specfunct_cephes_incbet.c.o [1022/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_specfunct_cephes_ndtr.c.o [1023/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_specfunct_cephes_ndtri.c.o [1024/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_specfunct_cephes_polevl.c.o [1025/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_specfunct_cgamma.c.o [1026/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_specfunct_hypot.c.o [1027/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_tests_chi2test.c.o [1028/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_tests_correlation.c.o [1029/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_tests_countpdf.c.o [1030/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_tests_counturn.c.o [1031/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_tests_inverror.c.o [1032/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_tests_moments.c.o [1033/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_tests_printsample.c.o [1034/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_parser_stringparser.c.o [1035/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_tests_quantiles.c.o [1036/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_tests_tests.c.o [1037/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_urng_urng.c.o [1038/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_urng_urng_default.c.o [1039/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_tests_timing.c.o [1040/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_urng_urng_set.c.o [1041/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_urng_urng_unuran.c.o [1042/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_utils_debug.c.o [1043/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_utils_error.c.o [1044/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_utils_fmax.c.o [1045/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_utils_hooke.c.o [1046/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_utils_lobatto.c.o [1047/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_utils_eigensystem.c.o [1048/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_utils_matrix.c.o [1049/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_utils_mrou_rectangle.c.o [1050/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_utils_slist.c.o [1051/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_utils_stream.c.o [1052/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_utils_umalloc.c.o [1053/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_utils_string.c.o [1054/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_utils_umath.c.o [1055/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_utils_unur_fp.c.o [1056/1468] Compiling C object scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/.._..__lib_unuran_unuran_src_utils_vector.c.o [1057/1468] Compiling C object scipy/stats/_rcont/rcont.cpython-314-powerpc64le-linux-gnu.so.p/_rcont.c.o [1058/1468] Compiling C object scipy/stats/_rcont/rcont.cpython-314-powerpc64le-linux-gnu.so.p/.._libnpyrandom_logfactorial.c.o [1059/1468] Compiling C object scipy/stats/_rcont/rcont.cpython-314-powerpc64le-linux-gnu.so.p/.._libnpyrandom_distributions.c.o [1060/1468] Compiling C object scipy/stats/_rcont/rcont.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated_rcont.c.o [1061/1468] Compiling C object scipy/io/_test_fortran.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__test_fortranmodule.c.o [1062/1468] Compiling Fortran object scipy/io/_test_fortran.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__test_fortran-f2pywrappers.f.o [1063/1468] Compiling Fortran object scipy/io/_test_fortran.cpython-314-powerpc64le-linux-gnu.so.p/_test_fortran.f.o [1064/1468] Compiling C object scipy/io/matlab/_streams.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__streams.c.o [1065/1468] Compiling C object scipy/io/matlab/_mio_utils.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__mio_utils.c.o [1066/1468] Compiling C object scipy/io/matlab/_mio5_utils.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__mio5_utils.c.o [1067/1468] Compiling C++ object scipy/sparse/sparsetools/_sparsetools.cpython-314-powerpc64le-linux-gnu.so.p/bsr.cxx.o [1068/1468] Compiling C++ object scipy/io/_fast_matrix_market/_fmm_core.cpython-314-powerpc64le-linux-gnu.so.p/src__fmm_core.cpp.o [1069/1468] Compiling C++ object scipy/io/_fast_matrix_market/_fmm_core.cpython-314-powerpc64le-linux-gnu.so.p/src__fmm_core_read_array.cpp.o [1070/1468] Compiling C++ object scipy/io/_fast_matrix_market/_fmm_core.cpython-314-powerpc64le-linux-gnu.so.p/src__fmm_core_read_coo.cpp.o [1071/1468] Compiling C++ object scipy/io/_fast_matrix_market/_fmm_core.cpython-314-powerpc64le-linux-gnu.so.p/src__fmm_core_write_array.cpp.o [1072/1468] Compiling C++ object scipy/fft/_pocketfft/pypocketfft.cpython-314-powerpc64le-linux-gnu.so.p/pypocketfft.cxx.o [1073/1468] Compiling C object scipy/io/_fast_matrix_market/_fmm_core.cpython-314-powerpc64le-linux-gnu.so.p/fast_matrix_market_dependencies_ryu_ryu_f2s.c.o [1074/1468] Compiling C object scipy/io/_fast_matrix_market/_fmm_core.cpython-314-powerpc64le-linux-gnu.so.p/fast_matrix_market_dependencies_ryu_ryu_d2s.c.o [1075/1468] Compiling C object scipy/io/_fast_matrix_market/_fmm_core.cpython-314-powerpc64le-linux-gnu.so.p/fast_matrix_market_dependencies_ryu_ryu_d2fixed.c.o [1076/1468] Compiling C object scipy/optimize/_direct.cpython-314-powerpc64le-linux-gnu.so.p/_direct_direct_wrap.c.o [1077/1468] Compiling C object scipy/optimize/_direct.cpython-314-powerpc64le-linux-gnu.so.p/_direct_DIRect.c.o [1078/1468] Compiling C object scipy/optimize/_direct.cpython-314-powerpc64le-linux-gnu.so.p/_direct_DIRserial.c.o [1079/1468] Compiling C object scipy/optimize/_direct.cpython-314-powerpc64le-linux-gnu.so.p/_direct_DIRsubrout.c.o [1080/1468] Compiling C object scipy/optimize/_direct.cpython-314-powerpc64le-linux-gnu.so.p/_directmodule.c.o [1081/1468] Compiling C++ object scipy/io/_fast_matrix_market/_fmm_core.cpython-314-powerpc64le-linux-gnu.so.p/src__fmm_core_write_coo_32.cpp.o [1082/1468] Linking static target scipy/optimize/librectangular_lsap.a [1083/1468] Compiling C object scipy/optimize/_lsap.cpython-314-powerpc64le-linux-gnu.so.p/_lsap.c.o [1084/1468] Linking static target scipy/optimize/librootfind.a [1085/1468] Compiling C object scipy/optimize/_zeros.cpython-314-powerpc64le-linux-gnu.so.p/zeros.c.o [1086/1468] Compiling C object scipy/optimize/_lbfgsb.cpython-314-powerpc64le-linux-gnu.so.p/__lbfgsb.c.o [1087/1468] Compiling C object scipy/optimize/_minpack.cpython-314-powerpc64le-linux-gnu.so.p/__minpack.c.o [1088/1468] Compiling C object scipy/optimize/_moduleTNC.cpython-314-powerpc64le-linux-gnu.so.p/tnc_tnc.c.o [1089/1468] Compiling C object scipy/optimize/_moduleTNC.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__moduleTNC.c.o [1090/1468] Compiling C++ object scipy/optimize/_group_columns.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__group_columns.cpp.o [1091/1468] Compiling C++ object scipy/optimize/_pava_pybind.cpython-314-powerpc64le-linux-gnu.so.p/_pava_pava_pybind.cpp.o [1092/1468] Compiling C object scipy/optimize/_slsqplib.cpython-314-powerpc64le-linux-gnu.so.p/__slsqp.c.o [1093/1468] Compiling C object scipy/optimize/_slsqplib.cpython-314-powerpc64le-linux-gnu.so.p/__nnls.c.o [1094/1468] Compiling C object scipy/optimize/_bglu_dense.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__bglu_dense.c.o [1095/1468] Compiling C object scipy/optimize/_lsq/givens_elimination.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated_givens_elimination.c.o [1096/1468] Compiling C object scipy/optimize/_trlib/_trlib.cpython-314-powerpc64le-linux-gnu.so.p/trlib_krylov.c.o [1097/1468] Compiling C object scipy/optimize/_trlib/_trlib.cpython-314-powerpc64le-linux-gnu.so.p/trlib_eigen_inverse.c.o [1098/1468] Compiling C++ object scipy/io/_fast_matrix_market/_fmm_core.cpython-314-powerpc64le-linux-gnu.so.p/src__fmm_core_write_coo_64.cpp.o [1099/1468] Compiling C object scipy/optimize/_trlib/_trlib.cpython-314-powerpc64le-linux-gnu.so.p/trlib_leftmost.c.o [1100/1468] Compiling C object scipy/optimize/_trlib/_trlib.cpython-314-powerpc64le-linux-gnu.so.p/trlib_quadratic_zero.c.o [1101/1468] Compiling C object scipy/optimize/_trlib/_trlib.cpython-314-powerpc64le-linux-gnu.so.p/trlib_tri_factor.c.o [1102/1468] Compiling C object scipy/optimize/_trlib/_trlib.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__trlib.c.o [1103/1468] Compiling C object scipy/optimize/cython_optimize/_zeros.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__zeros.c.o [1104/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/io_Filereader.cpp.o [1105/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/io_FilereaderEms.cpp.o [1106/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/.._extern_filereaderlp_reader.cpp.o [1107/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/io_FilereaderMps.cpp.o [1108/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/interfaces_highs_c_api.cpp.o [1109/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/io_FilereaderLp.cpp.o [1110/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/io_HMPSIO.cpp.o [1111/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/io_HighsIO.cpp.o [1112/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/io_LoadOptions.cpp.o [1113/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/io_HMpsFF.cpp.o [1114/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/lp_data_HighsCallback.cpp.o [1115/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_IpxWrapper.cpp.o [1116/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/lp_data_HighsDebug.cpp.o [1117/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/lp_data_HighsDeprecated.cpp.o [1118/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/lp_data_HighsInfo.cpp.o [1119/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/lp_data_HighsIis.cpp.o [1120/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/lp_data_HighsInfoDebug.cpp.o [1121/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/lp_data_HighsLp.cpp.o [1122/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/lp_data_HighsInterface.cpp.o [1123/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/lp_data_Highs.cpp.o [1124/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/lp_data_HighsLpUtils.cpp.o [1125/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/lp_data_HighsOptions.cpp.o [1126/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/lp_data_HighsModelUtils.cpp.o [1127/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/lp_data_HighsRanging.cpp.o [1128/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/lp_data_HighsSolution.cpp.o [1129/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/lp_data_HighsStatus.cpp.o [1130/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/lp_data_HighsSolutionDebug.cpp.o [1131/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/lp_data_HighsSolve.cpp.o [1132/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsConflictPool.cpp.o [1133/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsCutPool.cpp.o [1134/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsCutGeneration.cpp.o [1135/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsDebugSol.cpp.o [1136/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsDynamicRowMatrix.cpp.o [1137/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsGFkSolve.cpp.o [1138/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsCliqueTable.cpp.o [1139/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsDomain.cpp.o [1140/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsLpAggregator.cpp.o [1141/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsImplications.cpp.o [1142/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsMipAnalysis.cpp.o [1143/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsLpRelaxation.cpp.o [1144/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsMipSolver.cpp.o [1145/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsNodeQueue.cpp.o [1146/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsModkSeparator.cpp.o [1147/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsMipSolverData.cpp.o [1148/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsObjectiveFunction.cpp.o [1149/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsPathSeparator.cpp.o [1150/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsPseudocost.cpp.o [1151/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsRedcostFixing.cpp.o [1152/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsSeparation.cpp.o [1153/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsPrimalHeuristics.cpp.o [1154/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsSeparator.cpp.o [1155/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsSearch.cpp.o In file included from /usr/include/c++/15/bits/stl_algobase.h:64, from /usr/include/c++/15/deque:64, from /usr/include/c++/15/queue:68, from ../subprojects/highs/src/mip/HighsSearch.h:15, from ../subprojects/highs/src/mip/HighsSearch.cpp:11: /usr/include/c++/15/bits/stl_pair.h: In instantiation of ‘constexpr std::pair::type>::__type, typename std::__strip_reference_wrapper::type>::__type> std::make_pair(_T1&&, _T2&&) [with _T1 = double&; _T2 = double; typename __strip_reference_wrapper::type>::__type = double; typename decay<_Tp>::type = double; typename __strip_reference_wrapper::type>::__type = double; typename decay<_Tp2>::type = double]’: ../subprojects/highs/src/mip/HighsSearch.cpp:535:24: required from here 535 | std::make_pair(downscore[candidate], | ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ 536 | pseudocost.getAvgInferencesDown(col)) >= | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/15/bits/stl_pair.h:1164:5: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 1164 | make_pair(_T1&& __x, _T2&& __y) | ^~~~~~~~~ [1156/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsTransformedLp.cpp.o [1157/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/model_HighsHessian.cpp.o [1158/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/model_HighsModel.cpp.o [1159/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/mip_HighsTableauSeparator.cpp.o [1160/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/model_HighsHessianUtils.cpp.o [1161/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/parallel_HighsTaskExecutor.cpp.o [1162/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/pdlp_CupdlpWrapper.cpp.o [1163/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/presolve_HPresolveAnalysis.cpp.o [1164/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/presolve_HighsPostsolveStack.cpp.o [1165/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/presolve_ICrash.cpp.o [1166/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/presolve_ICrashUtil.cpp.o [1167/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/presolve_ICrashX.cpp.o [1168/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/presolve_HighsSymmetry.cpp.o [1169/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/presolve_PresolveComponent.cpp.o [1170/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/qpsolver_a_asm.cpp.o [1171/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/qpsolver_a_quass.cpp.o [1172/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/qpsolver_perturbation.cpp.o [1173/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/qpsolver_basis.cpp.o [1174/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/qpsolver_ratiotest.cpp.o [1175/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/qpsolver_scaling.cpp.o [1176/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/presolve_HPresolve.cpp.o [1177/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/qpsolver_quass.cpp.o [1178/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/simplex_HEkkControl.cpp.o [1179/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/simplex_HEkkDebug.cpp.o [1180/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/simplex_HEkkDual.cpp.o [1181/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/simplex_HEkk.cpp.o [1182/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/simplex_HEkkDualMulti.cpp.o [1183/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/simplex_HEkkDualRHS.cpp.o [1184/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/simplex_HEkkInterface.cpp.o [1185/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/simplex_HEkkDualRow.cpp.o [1186/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/simplex_HSimplexDebug.cpp.o [1187/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/simplex_HSimplex.cpp.o [1188/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/simplex_HSimplexNlaDebug.cpp.o [1189/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/simplex_HSimplexNla.cpp.o [1190/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/simplex_HEkkPrimal.cpp.o [1191/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/simplex_HSimplexNlaFreeze.cpp.o [1192/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/simplex_HSimplexReport.cpp.o [1193/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/simplex_HSimplexNlaProductForm.cpp.o [1194/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/test_KktCh2.cpp.o [1195/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/test_DevKkt.cpp.o [1196/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/util_HFactorDebug.cpp.o [1197/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/simplex_HighsSimplexAnalysis.cpp.o [1198/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/util_HFactorExtend.cpp.o [1199/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/util_HFactorRefactor.cpp.o [1200/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/util_HSet.cpp.o [1201/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/util_HFactorUtils.cpp.o [1202/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/util_HVectorBase.cpp.o [1203/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/util_HighsHash.cpp.o [1204/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/util_HighsLinearSumBounds.cpp.o [1205/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/util_HighsMatrixPic.cpp.o [1206/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/util_HFactor.cpp.o [1207/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/util_HighsSort.cpp.o [1208/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/util_HighsMatrixUtils.cpp.o [1209/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/util_stringutil.cpp.o [1210/1468] Compiling C object subprojects/highs/src/libhighs.a.p/pdlp_cupdlp_cupdlp_cs.c.o [1211/1468] Compiling C object subprojects/highs/src/libhighs.a.p/pdlp_cupdlp_cupdlp_linalg.c.o [1212/1468] Compiling C object subprojects/highs/src/libhighs.a.p/pdlp_cupdlp_cupdlp_proj.c.o [1213/1468] Compiling C object subprojects/highs/src/libhighs.a.p/pdlp_cupdlp_cupdlp_restart.c.o [1214/1468] Compiling C object subprojects/highs/src/libhighs.a.p/pdlp_cupdlp_cupdlp_scaling_cuda.c.o [1215/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/util_HighsUtils.cpp.o [1216/1468] Compiling C object subprojects/highs/src/libhighs.a.p/pdlp_cupdlp_cupdlp_step.c.o [1217/1468] Compiling C object subprojects/highs/src/libhighs.a.p/pdlp_cupdlp_cupdlp_solver.c.o [1218/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_basiclu_factorize.c.o [1219/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_basiclu_get_factors.c.o [1220/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_basiclu_initialize.c.o [1221/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_basiclu_object.c.o [1222/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/util_HighsSparseMatrix.cpp.o [1223/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_basiclu_solve_dense.c.o [1224/1468] Compiling C object subprojects/highs/src/libhighs.a.p/pdlp_cupdlp_cupdlp_utils.c.o [1225/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_basiclu_solve_for_update.c.o [1226/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_basiclu_solve_sparse.c.o [1227/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_lu_condest.c.o [1228/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_basiclu_update.c.o [1229/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_lu_dfs.c.o [1230/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_lu_build_factors.c.o [1231/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_lu_factorize_bump.c.o [1232/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_lu_garbage_perm.c.o [1233/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_lu_file.c.o [1234/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_lu_initialize.c.o [1235/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_lu_markowitz.c.o [1236/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_lu_matrix_norm.c.o [1237/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_lu_internal.c.o [1238/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_lu_residual_test.c.o [1239/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_lu_setup_bump.c.o [1240/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_lu_singletons.c.o [1241/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_lu_solve_dense.c.o [1242/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_lu_solve_for_update.c.o [1243/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_lu_solve_symbolic.c.o [1244/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_lu_solve_sparse.c.o [1245/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_lu_solve_triangular.c.o [1246/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_lu_pivot.c.o [1247/1468] Compiling C object subprojects/highs/src/libhighs.a.p/ipm_basiclu_lu_update.c.o [1248/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_basiclu_kernel.cc.o [1249/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_basiclu_wrapper.cc.o [1250/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_conjugate_residuals.cc.o [1251/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_control.cc.o [1252/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_basis.cc.o [1253/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_diagonal_precond.cc.o [1254/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_crossover.cc.o [1255/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_forrest_tomlin.cc.o [1256/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_indexed_vector.cc.o [1257/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_guess_basis.cc.o [1258/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_ipx_c.cc.o [1259/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_info.cc.o [1260/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_kkt_solver.cc.o [1261/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_ipm.cc.o [1262/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_iterate.cc.o [1263/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_kkt_solver_diag.cc.o [1264/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_linear_operator.cc.o [1265/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_kkt_solver_basis.cc.o [1266/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_lu_factorization.cc.o [1267/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_lu_update.cc.o [1268/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_lp_solver.cc.o [1269/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_maxvolume.cc.o [1270/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_normal_matrix.cc.o [1271/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_sparse_utils.cc.o [1272/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_sparse_matrix.cc.o [1273/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_splitted_normal_matrix.cc.o [1274/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_model.cc.o [1275/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_timer.cc.o [1276/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_starting_basis.cc.o [1277/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_symbolic_invert.cc.o [1278/1468] Compiling C++ object subprojects/highs/src/libhighs.a.p/ipm_ipx_utils.cc.o [1279/1468] Linking static target scipy/optimize/_highspy/libhighs.a [1280/1468] Compiling C++ object scipy/optimize/_highspy/_highs_options.cpython-314-powerpc64le-linux-gnu.so.p/highs_options.cpp.o [1281/1468] Compiling C object scipy/spatial/_qhull.cpython-314-powerpc64le-linux-gnu.so.p/qhull_misc.c.o [1282/1468] Compiling C object scipy/spatial/_qhull.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__qhull.c.o [1283/1468] Compiling C++ object scipy/spatial/_ckdtree.cpython-314-powerpc64le-linux-gnu.so.p/ckdtree_src_build.cxx.o [1284/1468] Compiling C++ object scipy/spatial/_ckdtree.cpython-314-powerpc64le-linux-gnu.so.p/ckdtree_src_count_neighbors.cxx.o [1285/1468] Compiling C++ object scipy/spatial/_ckdtree.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__ckdtree.cpp.o [1286/1468] Compiling C++ object scipy/spatial/_ckdtree.cpython-314-powerpc64le-linux-gnu.so.p/ckdtree_src_query_ball_point.cxx.o [1287/1468] Compiling C++ object scipy/spatial/_ckdtree.cpython-314-powerpc64le-linux-gnu.so.p/ckdtree_src_query.cxx.o [1288/1468] Compiling C++ object scipy/spatial/_ckdtree.cpython-314-powerpc64le-linux-gnu.so.p/ckdtree_src_query_ball_tree.cxx.o [1289/1468] Compiling C++ object scipy/spatial/_ckdtree.cpython-314-powerpc64le-linux-gnu.so.p/ckdtree_src_query_pairs.cxx.o [1290/1468] Compiling C++ object scipy/spatial/_ckdtree.cpython-314-powerpc64le-linux-gnu.so.p/ckdtree_src_sparse_distances.cxx.o [1291/1468] Compiling C object scipy/spatial/_distance_wrap.cpython-314-powerpc64le-linux-gnu.so.p/src_distance_wrap.c.o [1292/1468] Compiling C object scipy/spatial/_voronoi.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__voronoi.c.o [1293/1468] Compiling C object scipy/spatial/_hausdorff.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__hausdorff.c.o [1294/1468] Compiling C++ object scipy/spatial/_distance_pybind.cpython-314-powerpc64le-linux-gnu.so.p/src_distance_pybind.cpp.o [1295/1468] Compiling C object scipy/spatial/transform/_rotation.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__rotation.c.o [1296/1468] Compiling C object scipy/spatial/transform/_rigid_transform.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__rigid_transform.c.o [1297/1468] Compiling C object scipy/cluster/_hierarchy.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__hierarchy.c.o [1298/1468] Compiling C object scipy/cluster/_vq.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__vq.c.o [1299/1468] Compiling C object scipy/cluster/_optimal_leaf_ordering.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__optimal_leaf_ordering.c.o [1300/1468] Linking static target scipy/integrate/libmach_lib.a [1301/1468] Linking static target scipy/integrate/liblsoda_lib.a [1302/1468] Linking static target scipy/integrate/libvode_lib.a [1303/1468] Linking static target scipy/integrate/libdop_lib.a [1304/1468] Compiling C object scipy/fftpack/convolve.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated_convolve.c.o [1305/1468] Compiling C object scipy/integrate/_quadpack.cpython-314-powerpc64le-linux-gnu.so.p/__quadpack.c.o [1306/1468] Compiling C object scipy/integrate/_odepack.cpython-314-powerpc64le-linux-gnu.so.p/_odepackmodule.c.o [1307/1468] Compiling Fortran object scipy/integrate/_vode.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__vode-f2pywrappers.f.o [1308/1468] Compiling C object scipy/integrate/_lsoda.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__lsodamodule.c.o [1309/1468] Compiling Fortran object scipy/integrate/_lsoda.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__lsoda-f2pywrappers.f.o [1310/1468] Compiling C object scipy/integrate/_vode.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__vodemodule.c.o [1311/1468] Compiling Fortran object scipy/integrate/_dop.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__dop-f2pywrappers.f.o [1312/1468] Compiling C object scipy/integrate/_test_multivariate.cpython-314-powerpc64le-linux-gnu.so.p/tests__test_multivariate.c.o [1313/1468] Compiling C object scipy/integrate/_dop.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__dopmodule.c.o [1314/1468] Compiling Fortran object scipy/integrate/_test_odeint_banded.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__test_odeint_banded-f2pywrappers.f.o [1315/1468] Compiling Fortran object scipy/integrate/_test_odeint_banded.cpython-314-powerpc64le-linux-gnu.so.p/tests_banded5x5.f.o [1316/1468] Compiling C object scipy/integrate/_test_odeint_banded.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__test_odeint_bandedmodule.c.o [1317/1468] Compiling C++ object scipy/signal/_sigtools.cpython-314-powerpc64le-linux-gnu.so.p/_firfilter.cc.o [1318/1468] Compiling C++ object scipy/signal/_sigtools.cpython-314-powerpc64le-linux-gnu.so.p/_sigtoolsmodule.cc.o [1319/1468] Compiling C++ object scipy/signal/_sigtools.cpython-314-powerpc64le-linux-gnu.so.p/_medianfilter.cc.o [1320/1468] Compiling C++ object scipy/signal/_sigtools.cpython-314-powerpc64le-linux-gnu.so.p/_lfilter.cc.o [1321/1468] Compiling C++ object scipy/signal/_sigtools.cpython-314-powerpc64le-linux-gnu.so.p/_correlate_nd.cc.o [1322/1468] Compiling C++ object scipy/signal/_max_len_seq_inner.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__max_len_seq_inner.cpp.o [1323/1468] Compiling C object scipy/signal/_peak_finding_utils.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__peak_finding_utils.c.o [1324/1468] Compiling C object scipy/signal/_sosfilt.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__sosfilt.c.o [1325/1468] Compiling C++ object scipy/signal/_spline.cpython-314-powerpc64le-linux-gnu.so.p/_splinemodule.cc.o [1326/1468] Linking static target scipy/interpolate/libfitpack_lib.a [1327/1468] Compiling C object scipy/signal/_upfirdn_apply.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__upfirdn_apply.c.o [1328/1468] Compiling C object scipy/interpolate/_interpnd.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__interpnd.c.o [1329/1468] Compiling C object scipy/interpolate/_ppoly.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__ppoly.c.o [1330/1468] Linking static target scipy/interpolate/lib__fitpack.a [1331/1468] Compiling C object scipy/interpolate/_rgi_cython.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__rgi_cython.c.o [1332/1468] Compiling C object scipy/interpolate/_fitpack.cpython-314-powerpc64le-linux-gnu.so.p/src__fitpackmodule.c.o [1333/1468] Compiling C++ object scipy/interpolate/_dierckx.cpython-314-powerpc64le-linux-gnu.so.p/src__dierckxmodule.cc.o [1334/1468] Compiling Fortran object scipy/interpolate/_dfitpack.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__dfitpack-f2pywrappers.f.o [1335/1468] Compiling C object scipy/interpolate/_dfitpack.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__dfitpackmodule.c.o [1336/1468] Compiling C object scipy/ndimage/_nd_image.cpython-314-powerpc64le-linux-gnu.so.p/src_nd_image.c.o [1337/1468] Compiling C object scipy/ndimage/_nd_image.cpython-314-powerpc64le-linux-gnu.so.p/src_ni_filters.c.o [1338/1468] Compiling C object scipy/ndimage/_nd_image.cpython-314-powerpc64le-linux-gnu.so.p/src_ni_fourier.c.o [1339/1468] Compiling C object scipy/ndimage/_nd_image.cpython-314-powerpc64le-linux-gnu.so.p/src_ni_interpolation.c.o [1340/1468] Compiling C object scipy/ndimage/_nd_image.cpython-314-powerpc64le-linux-gnu.so.p/src_ni_measure.c.o [1341/1468] Compiling C object scipy/ndimage/_nd_image.cpython-314-powerpc64le-linux-gnu.so.p/src_ni_morphology.c.o [1342/1468] Compiling C object scipy/ndimage/_nd_image.cpython-314-powerpc64le-linux-gnu.so.p/src_ni_splines.c.o [1343/1468] Compiling C object scipy/ndimage/_nd_image.cpython-314-powerpc64le-linux-gnu.so.p/src_ni_support.c.o [1344/1468] Compiling C object scipy/ndimage/_ni_label.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__ni_label.c.o [1345/1468] Compiling C++ object scipy/ndimage/_rank_filter_1d.cpython-314-powerpc64le-linux-gnu.so.p/src__rank_filter_1d.cpp.o [1346/1468] Compiling C object scipy/ndimage/_ctest.cpython-314-powerpc64le-linux-gnu.so.p/src__ctest.c.o [1347/1468] Compiling C object scipy/ndimage/_cytest.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__cytest.c.o [1348/1468] Linking static target scipy/odr/libodrpack.a [1349/1468] Compiling C object scipy/odr/__odrpack.cpython-314-powerpc64le-linux-gnu.so.p/__odrpack.c.o [1350/1468] Compiling C++ object scipy/interpolate/_rbfinterp_pythran.cpython-314-powerpc64le-linux-gnu.so.p/meson-generated__rbfinterp_pythran.cpp.o In file included from /usr/include/xsimd/xsimd.hpp:56, from ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/include/numpy/exp.hpp:8, from scipy/interpolate/_rbfinterp_pythran.cpython-314-powerpc64le-linux-gnu.so.p/_rbfinterp_pythran.cpp:27: /usr/include/xsimd/arch/xsimd_scalar.hpp: In function ‘std::pair xsimd::sincos(float)’: /usr/include/xsimd/arch/xsimd_scalar.hpp:1180:60: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 1180 | XSIMD_INLINE std::pair sincos(float val) noexcept | ^~~~~~~~ /usr/include/xsimd/arch/xsimd_scalar.hpp: In function ‘std::pair xsimd::sincos(double)’: /usr/include/xsimd/arch/xsimd_scalar.hpp:1187:63: note: parameter passing for argument of type ‘std::pair’ when C++17 is enabled changed to match C++14 in GCC 10.1 1187 | XSIMD_INLINE std::pair sincos(double val) noexcept | ^~~~~~~~ In file included from ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/include/types/numpy_op_helper.hpp:4, from ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/include/numpy/bool_.hpp:4, from ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/include/types/ndarray.hpp:19, from ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/ndarray.hpp:4, from ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/tuple.hpp:8, from ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/builtins/bool_.hpp:6, from ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/NoneType.hpp:6, from ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/slice.hpp:5, from ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/core.hpp:47, from scipy/interpolate/_rbfinterp_pythran.cpython-314-powerpc64le-linux-gnu.so.p/_rbfinterp_pythran.cpp:1: ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/include/types/numpy_broadcast.hpp: In instantiation of ‘{anonymous}::pythonic::types::broadcast::const_iterator {anonymous}::pythonic::types::broadcast::begin() const [with T = double; B = double; const_iterator = {anonymous}::pythonic::types::const_broadcast_iterator]’: ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/numpy_expr.hpp:51:19: required from ‘{anonymous}::pythonic::types::numpy_expr::const_iterator {anonymous}::pythonic::types::numpy_expr::_begin({anonymous}::pythonic::utils::index_sequence) const [with long unsigned int ...I = {0, 1}; Op = {anonymous}::pythonic::operator_::functor::mul; Args = {{anonymous}::pythonic::types::ndarray >&, {anonymous}::pythonic::types::broadcast}; const_iterator = {anonymous}::pythonic::types::numpy_expr_iterator<{anonymous}::pythonic::operator_::functor::mul, {anonymous}::pythonic::types::pshape, {anonymous}::pythonic::types::const_nditerator<{anonymous}::pythonic::types::ndarray > >, {anonymous}::pythonic::types::const_broadcast_iterator >; {anonymous}::pythonic::utils::index_sequence = {anonymous}::pythonic::utils::integer_sequence]’ 50 | const_cast::type const &>(std::get(args)) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 51 | .begin()...}; | ~~~~~~^~ ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/numpy_expr.hpp:58:18: required from ‘{anonymous}::pythonic::types::numpy_expr::const_iterator {anonymous}::pythonic::types::numpy_expr::begin() const [with Op = {anonymous}::pythonic::operator_::functor::mul; Args = {{anonymous}::pythonic::types::ndarray >&, {anonymous}::pythonic::types::broadcast}; const_iterator = {anonymous}::pythonic::types::numpy_expr_iterator<{anonymous}::pythonic::operator_::functor::mul, {anonymous}::pythonic::types::pshape, {anonymous}::pythonic::types::const_nditerator<{anonymous}::pythonic::types::ndarray > >, {anonymous}::pythonic::types::const_broadcast_iterator >]’ 58 | return _begin(utils::make_index_sequence{}); | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/utils/broadcast_copy.hpp:132:28: required from ‘void {anonymous}::pythonic::utils::_broadcast_copy::operator()(E&&, const F&, Indices ...) [with E = {anonymous}::pythonic::types::ndarray >&; F = {anonymous}::pythonic::types::numpy_expr<{anonymous}::pythonic::operator_::functor::mul, {anonymous}::pythonic::types::ndarray >&, {anonymous}::pythonic::types::broadcast >; Indices = {}; long unsigned int N = 2; vectorizer = {anonymous}::pythonic::types::novectorize]’ 132 | std::copy(other.begin(), other.end(), self.begin()); | ~~~~~~~~~~~^~ ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/utils/broadcast_copy.hpp:231:52: required from ‘void {anonymous}::pythonic::utils::broadcast_copy_dispatcher::operator()(E&, const F&) [with E = {anonymous}::pythonic::types::ndarray >&; F = {anonymous}::pythonic::types::numpy_expr<{anonymous}::pythonic::operator_::functor::mul, {anonymous}::pythonic::types::ndarray >&, {anonymous}::pythonic::types::broadcast >; long unsigned int N = 2; long unsigned int D = 0]’ 231 | _broadcast_copy{}(self, other); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~ ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/utils/broadcast_copy.hpp:258:65: required from ‘E& {anonymous}::pythonic::utils::broadcast_copy_helper(E&, const F&, std::integral_constant, std::integral_constant) [with E = {anonymous}::pythonic::types::ndarray >&; F = {anonymous}::pythonic::types::numpy_expr<{anonymous}::pythonic::operator_::functor::mul, {anonymous}::pythonic::types::ndarray >&, {anonymous}::pythonic::types::broadcast >; long unsigned int N = 2; int D = 0; bool vector_form = true]’ 258 | broadcast_copy_dispatcher{}(self, other); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~ ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/utils/broadcast_copy.hpp:300:58: required from ‘E& {anonymous}::pythonic::utils::broadcast_copy(E&, const F&) [with E = {anonymous}::pythonic::types::ndarray >&; F = {anonymous}::pythonic::types::numpy_expr<{anonymous}::pythonic::operator_::functor::mul, {anonymous}::pythonic::types::ndarray >&, {anonymous}::pythonic::types::broadcast >; long unsigned int N = 2; int D = 0; bool vector_form = true]’ 300 | return broadcast_copy_helper( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 301 | self, other, std::integral_constant= 0)>(), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 302 | std::integral_constant < bool, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 303 | std::decay::type::is_flat | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 304 | &&is_flat::type>::value > {}); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/ndarray.hpp:473:77: required from ‘void {anonymous}::pythonic::types::ndarray::initialize_from_expr(const E&) [with E = {anonymous}::pythonic::types::numpy_expr<{anonymous}::pythonic::operator_::functor::mul, {anonymous}::pythonic::types::ndarray >&, {anonymous}::pythonic::types::broadcast >; T = double; pS = {anonymous}::pythonic::types::pshape]’ 471 | utils::broadcast_copy::value>( | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 474 | *this, expr); | ~~~~~~~~~~~~ ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/types/ndarray.hpp:483:25: required from ‘{anonymous}::pythonic::types::ndarray::ndarray(const {anonymous}::pythonic::types::numpy_expr&) [with Op = {anonymous}::pythonic::operator_::functor::mul; Args = {{anonymous}::pythonic::types::ndarray >&, {anonymous}::pythonic::types::broadcast}; T = double; pS = {anonymous}::pythonic::types::pshape]’ 483 | initialize_from_expr(expr); | ~~~~~~~~~~~~~~~~~~~~^~~~~~ scipy/interpolate/_rbfinterp_pythran.cpython-314-powerpc64le-linux-gnu.so.p/_rbfinterp_pythran.cpp:1042:131: required from ‘typename {anonymous}::__pythran__rbfinterp_pythran::_build_evaluation_coefficients::type::result_type {anonymous}::__pythran__rbfinterp_pythran::_build_evaluation_coefficients::operator()(argument_type0, argument_type1, argument_type2, argument_type3, argument_type4, argument_type5, argument_type6) const [with argument_type0 = {anonymous}::pythonic::types::ndarray >; argument_type1 = {anonymous}::pythonic::types::ndarray >; argument_type2 = {anonymous}::pythonic::types::str; argument_type3 = double; argument_type4 = {anonymous}::pythonic::types::ndarray >; argument_type5 = {anonymous}::pythonic::types::ndarray >; argument_type6 = {anonymous}::pythonic::types::ndarray >; typename type::result_type = {anonymous}::pythonic::types::ndarray >]’ 1042 | typename pythonic::assignable_noescape::type yeps = pythonic::operator_::mul(y, epsilon); | ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~ scipy/interpolate/_rbfinterp_pythran.cpython-314-powerpc64le-linux-gnu.so.p/_rbfinterp_pythran.cpp:1191:106: required from here 1191 | auto res = __pythran__rbfinterp_pythran::_build_evaluation_coefficients()(x, y, kernel, epsilon, powers, shift, scale); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../../../../../../usr/lib/python3.14/site-packages/pythran/pythonic/include/types/numpy_broadcast.hpp:328:20: note: parameter passing for argument of type ‘{anonymous}::pythonic::types::broadcast::const_iterator’ {aka ‘{anonymous}::pythonic::types::const_broadcast_iterator’} when C++17 is enabled changed to match C++14 in GCC 10.1 328 | const_iterator begin() const | ^~~~~ [1351/1468] Linking target scipy/_lib/_test_ccallback.cpython-314-powerpc64le-linux-gnu.so [1352/1468] Linking target scipy/_lib/_fpumode.cpython-314-powerpc64le-linux-gnu.so [1353/1468] Linking target scipy/_lib/_test_deprecation_call.cpython-314-powerpc64le-linux-gnu.so [1354/1468] Linking target scipy/_lib/_ccallback_c.cpython-314-powerpc64le-linux-gnu.so [1355/1468] Linking target scipy/_lib/_test_deprecation_def.cpython-314-powerpc64le-linux-gnu.so [1356/1468] Linking target scipy/_lib/messagestream.cpython-314-powerpc64le-linux-gnu.so [1357/1468] Linking target scipy/_lib/_uarray/_uarray.cpython-314-powerpc64le-linux-gnu.so [1358/1468] Linking target scipy/special/_gufuncs.cpython-314-powerpc64le-linux-gnu.so [1359/1468] Linking target scipy/special/_specfun.cpython-314-powerpc64le-linux-gnu.so [1360/1468] Linking target scipy/special/_special_ufuncs.cpython-314-powerpc64le-linux-gnu.so [1361/1468] Linking target scipy/special/_ufuncs.cpython-314-powerpc64le-linux-gnu.so [1362/1468] Linking target scipy/special/_ellip_harm_2.cpython-314-powerpc64le-linux-gnu.so [1363/1468] Linking target scipy/special/_ufuncs_cxx.cpython-314-powerpc64le-linux-gnu.so [1364/1468] Linking target scipy/special/_comb.cpython-314-powerpc64le-linux-gnu.so [1365/1468] Linking target scipy/special/_test_internal.cpython-314-powerpc64le-linux-gnu.so [1366/1468] Linking target scipy/special/cython_special.cpython-314-powerpc64le-linux-gnu.so [1367/1468] Generating scipy/special/_data_gsl with a custom command [1368/1468] Generating scipy/special/_data_local with a custom command [1369/1468] Linking target scipy/linalg/_fblas.cpython-314-powerpc64le-linux-gnu.so [1370/1468] Generating scipy/special/_data_boost with a custom command [1371/1468] Linking target scipy/linalg/_flapack.cpython-314-powerpc64le-linux-gnu.so [1372/1468] Linking target scipy/linalg/_solve_toeplitz.cpython-314-powerpc64le-linux-gnu.so [1373/1468] Linking target scipy/linalg/_matfuncs_sqrtm_triu.cpython-314-powerpc64le-linux-gnu.so [1374/1468] Linking target scipy/linalg/_decomp_interpolative.cpython-314-powerpc64le-linux-gnu.so [1375/1468] Linking target scipy/linalg/cython_blas.cpython-314-powerpc64le-linux-gnu.so [1376/1468] Linking target scipy/linalg/_decomp_lu_cython.cpython-314-powerpc64le-linux-gnu.so [1377/1468] Linking target scipy/linalg/cython_lapack.cpython-314-powerpc64le-linux-gnu.so [1378/1468] Linking target scipy/linalg/_decomp_update.cpython-314-powerpc64le-linux-gnu.so [1379/1468] Linking target scipy/linalg/_matfuncs_schur_sqrtm.cpython-314-powerpc64le-linux-gnu.so [1380/1468] Linking target scipy/linalg/_matfuncs_expm.cpython-314-powerpc64le-linux-gnu.so [1381/1468] Linking target scipy/linalg/_cythonized_array_utils.cpython-314-powerpc64le-linux-gnu.so [1382/1468] Linking target scipy/linalg/_linalg_pythran.cpython-314-powerpc64le-linux-gnu.so [1383/1468] Linking target scipy/sparse/_csparsetools.cpython-314-powerpc64le-linux-gnu.so [1384/1468] Linking target scipy/sparse/csgraph/_flow.cpython-314-powerpc64le-linux-gnu.so [1385/1468] Linking target scipy/sparse/csgraph/_matching.cpython-314-powerpc64le-linux-gnu.so [1386/1468] Linking target scipy/sparse/csgraph/_min_spanning_tree.cpython-314-powerpc64le-linux-gnu.so [1387/1468] Linking target scipy/sparse/csgraph/_reordering.cpython-314-powerpc64le-linux-gnu.so [1388/1468] Linking target scipy/sparse/csgraph/_tools.cpython-314-powerpc64le-linux-gnu.so [1389/1468] Linking target scipy/sparse/csgraph/_traversal.cpython-314-powerpc64le-linux-gnu.so [1390/1468] Linking target scipy/sparse/csgraph/_shortest_path.cpython-314-powerpc64le-linux-gnu.so [1391/1468] Linking target scipy/sparse/linalg/_propack/_spropack.cpython-314-powerpc64le-linux-gnu.so [1392/1468] Linking target scipy/sparse/linalg/_propack/_dpropack.cpython-314-powerpc64le-linux-gnu.so [1393/1468] Compiling C++ object scipy/optimize/_highspy/_core.cpython-314-powerpc64le-linux-gnu.so.p/.._.._.._subprojects_highs_src_highs_bindings.cpp.o [1394/1468] Linking target scipy/sparse/linalg/_propack/_cpropack.cpython-314-powerpc64le-linux-gnu.so [1395/1468] Linking target scipy/sparse/linalg/_propack/_zpropack.cpython-314-powerpc64le-linux-gnu.so [1396/1468] Linking target scipy/sparse/linalg/_dsolve/_superlu.cpython-314-powerpc64le-linux-gnu.so [1397/1468] Linking target scipy/sparse/linalg/_eigen/arpack/_arpack.cpython-314-powerpc64le-linux-gnu.so [1398/1468] Linking target scipy/stats/_ansari_swilk_statistics.cpython-314-powerpc64le-linux-gnu.so [1399/1468] Linking target scipy/stats/_sobol.cpython-314-powerpc64le-linux-gnu.so [1400/1468] Linking target scipy/stats/_stats.cpython-314-powerpc64le-linux-gnu.so [1401/1468] Linking target scipy/stats/_qmc_cy.cpython-314-powerpc64le-linux-gnu.so [1402/1468] Linking target scipy/stats/_biasedurn.cpython-314-powerpc64le-linux-gnu.so [1403/1468] Linking target scipy/stats/_qmvnt_cy.cpython-314-powerpc64le-linux-gnu.so [1404/1468] Linking target scipy/stats/_levy_stable/levyst.cpython-314-powerpc64le-linux-gnu.so [1405/1468] Linking target scipy/sparse/sparsetools/_sparsetools.cpython-314-powerpc64le-linux-gnu.so [1406/1468] Linking target scipy/stats/_stats_pythran.cpython-314-powerpc64le-linux-gnu.so [1407/1468] Linking target scipy/stats/_rcont/rcont.cpython-314-powerpc64le-linux-gnu.so [1408/1468] Linking target scipy/io/_test_fortran.cpython-314-powerpc64le-linux-gnu.so [1409/1468] Linking target scipy/io/matlab/_streams.cpython-314-powerpc64le-linux-gnu.so [1410/1468] Linking target scipy/io/matlab/_mio_utils.cpython-314-powerpc64le-linux-gnu.so [1411/1468] Linking target scipy/io/matlab/_mio5_utils.cpython-314-powerpc64le-linux-gnu.so [1412/1468] Linking target scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so [1413/1468] Linking target scipy/fft/_pocketfft/pypocketfft.cpython-314-powerpc64le-linux-gnu.so [1414/1468] Linking target scipy/optimize/_direct.cpython-314-powerpc64le-linux-gnu.so [1415/1468] Linking target scipy/optimize/_minpack.cpython-314-powerpc64le-linux-gnu.so [1416/1468] Linking target scipy/optimize/_zeros.cpython-314-powerpc64le-linux-gnu.so [1417/1468] Linking target scipy/optimize/_lsap.cpython-314-powerpc64le-linux-gnu.so [1418/1468] Linking target scipy/optimize/_lbfgsb.cpython-314-powerpc64le-linux-gnu.so [1419/1468] Linking target scipy/optimize/_moduleTNC.cpython-314-powerpc64le-linux-gnu.so [1420/1468] Linking target scipy/optimize/_group_columns.cpython-314-powerpc64le-linux-gnu.so [1421/1468] Linking target scipy/optimize/_bglu_dense.cpython-314-powerpc64le-linux-gnu.so [1422/1468] Linking target scipy/optimize/_pava_pybind.cpython-314-powerpc64le-linux-gnu.so [1423/1468] Linking target scipy/optimize/_lsq/givens_elimination.cpython-314-powerpc64le-linux-gnu.so [1424/1468] Linking target scipy/optimize/_slsqplib.cpython-314-powerpc64le-linux-gnu.so [1425/1468] Linking target scipy/optimize/_trlib/_trlib.cpython-314-powerpc64le-linux-gnu.so [1426/1468] Linking target scipy/optimize/cython_optimize/_zeros.cpython-314-powerpc64le-linux-gnu.so [1427/1468] Linking static target subprojects/highs/src/libhighs.a [1428/1468] Linking target scipy/optimize/_highspy/_highs_options.cpython-314-powerpc64le-linux-gnu.so [1429/1468] Linking target scipy/io/_fast_matrix_market/_fmm_core.cpython-314-powerpc64le-linux-gnu.so [1430/1468] Linking target scipy/spatial/_ckdtree.cpython-314-powerpc64le-linux-gnu.so [1431/1468] Linking target scipy/spatial/_distance_wrap.cpython-314-powerpc64le-linux-gnu.so [1432/1468] Linking target scipy/spatial/_qhull.cpython-314-powerpc64le-linux-gnu.so [1433/1468] Linking target scipy/spatial/_voronoi.cpython-314-powerpc64le-linux-gnu.so [1434/1468] Linking target scipy/spatial/_distance_pybind.cpython-314-powerpc64le-linux-gnu.so [1435/1468] Linking target scipy/spatial/_hausdorff.cpython-314-powerpc64le-linux-gnu.so [1436/1468] Linking target scipy/spatial/transform/_rigid_transform.cpython-314-powerpc64le-linux-gnu.so [1437/1468] Linking target scipy/cluster/_hierarchy.cpython-314-powerpc64le-linux-gnu.so [1438/1468] Linking target scipy/cluster/_optimal_leaf_ordering.cpython-314-powerpc64le-linux-gnu.so [1439/1468] Linking target scipy/spatial/transform/_rotation.cpython-314-powerpc64le-linux-gnu.so [1440/1468] Linking target scipy/cluster/_vq.cpython-314-powerpc64le-linux-gnu.so [1441/1468] Linking target scipy/fftpack/convolve.cpython-314-powerpc64le-linux-gnu.so [1442/1468] Linking target scipy/integrate/_quadpack.cpython-314-powerpc64le-linux-gnu.so [1443/1468] Linking target scipy/integrate/_odepack.cpython-314-powerpc64le-linux-gnu.so [1444/1468] Linking target scipy/integrate/_lsoda.cpython-314-powerpc64le-linux-gnu.so [1445/1468] Linking target scipy/integrate/_dop.cpython-314-powerpc64le-linux-gnu.so [1446/1468] Linking target scipy/integrate/_test_multivariate.cpython-314-powerpc64le-linux-gnu.so [1447/1468] Linking target scipy/integrate/_vode.cpython-314-powerpc64le-linux-gnu.so [1448/1468] Linking target scipy/integrate/_test_odeint_banded.cpython-314-powerpc64le-linux-gnu.so [1449/1468] Linking target scipy/signal/_sigtools.cpython-314-powerpc64le-linux-gnu.so [1450/1468] Linking target scipy/signal/_max_len_seq_inner.cpython-314-powerpc64le-linux-gnu.so [1451/1468] Linking target scipy/signal/_peak_finding_utils.cpython-314-powerpc64le-linux-gnu.so [1452/1468] Linking target scipy/signal/_upfirdn_apply.cpython-314-powerpc64le-linux-gnu.so [1453/1468] Linking target scipy/signal/_sosfilt.cpython-314-powerpc64le-linux-gnu.so [1454/1468] Linking target scipy/signal/_spline.cpython-314-powerpc64le-linux-gnu.so [1455/1468] Linking target scipy/interpolate/_interpnd.cpython-314-powerpc64le-linux-gnu.so [1456/1468] Linking target scipy/interpolate/_ppoly.cpython-314-powerpc64le-linux-gnu.so [1457/1468] Linking target scipy/interpolate/_rgi_cython.cpython-314-powerpc64le-linux-gnu.so [1458/1468] Linking target scipy/interpolate/_fitpack.cpython-314-powerpc64le-linux-gnu.so [1459/1468] Linking target scipy/interpolate/_dierckx.cpython-314-powerpc64le-linux-gnu.so [1460/1468] Linking target scipy/interpolate/_rbfinterp_pythran.cpython-314-powerpc64le-linux-gnu.so [1461/1468] Linking target scipy/interpolate/_dfitpack.cpython-314-powerpc64le-linux-gnu.so [1462/1468] Linking target scipy/ndimage/_ni_label.cpython-314-powerpc64le-linux-gnu.so [1463/1468] Linking target scipy/ndimage/_nd_image.cpython-314-powerpc64le-linux-gnu.so [1464/1468] Linking target scipy/ndimage/_ctest.cpython-314-powerpc64le-linux-gnu.so [1465/1468] Linking target scipy/ndimage/_rank_filter_1d.cpython-314-powerpc64le-linux-gnu.so [1466/1468] Linking target scipy/ndimage/_cytest.cpython-314-powerpc64le-linux-gnu.so [1467/1468] Linking target scipy/odr/__odrpack.cpython-314-powerpc64le-linux-gnu.so [1468/1468] Linking target scipy/optimize/_highspy/_core.cpython-314-powerpc64le-linux-gnu.so [1/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/_cyutility.cpython-314-powerpc64le-linux-gnu.so [2/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/_lib/_ccallback_c.cpython-314-powerpc64le-linux-gnu.so [3/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/_lib/_test_ccallback.cpython-314-powerpc64le-linux-gnu.so [4/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/_lib/_fpumode.cpython-314-powerpc64le-linux-gnu.so [5/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/_lib/_test_deprecation_call.cpython-314-powerpc64le-linux-gnu.so [6/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/_lib/_test_deprecation_def.cpython-314-powerpc64le-linux-gnu.so [7/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/_lib/messagestream.cpython-314-powerpc64le-linux-gnu.so [8/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/_lib/_uarray/_uarray.cpython-314-powerpc64le-linux-gnu.so [9/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/special/_special_ufuncs.cpython-314-powerpc64le-linux-gnu.so [10/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/special/_gufuncs.cpython-314-powerpc64le-linux-gnu.so [11/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/special/_specfun.cpython-314-powerpc64le-linux-gnu.so [12/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/special/_ufuncs.pyx [13/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/special/_ufuncs_defs.h [14/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/special/_ufuncs_cxx.pyx [15/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/special/_ufuncs_cxx.pxd [16/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/special/_ufuncs_cxx_defs.h [17/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/special/_ufuncs.cpython-314-powerpc64le-linux-gnu.so [18/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/special/_ufuncs_cxx.cpython-314-powerpc64le-linux-gnu.so [19/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/special/_ellip_harm_2.cpython-314-powerpc64le-linux-gnu.so [20/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/special/cython_special.cpython-314-powerpc64le-linux-gnu.so [21/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/special/_comb.cpython-314-powerpc64le-linux-gnu.so [22/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/special/_test_internal.cpython-314-powerpc64le-linux-gnu.so [23/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/special/boost.npz [24/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/special/gsl.npz [25/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/special/local.npz [26/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/linalg/cython_blas.pyx [27/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/linalg/cython_lapack.pyx [28/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/linalg/cython_blas.pxd [29/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/linalg/cython_lapack.pxd [30/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/linalg/_blas_subroutines.h [31/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/linalg/_lapack_subroutines.h [32/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/linalg/_fblas.cpython-314-powerpc64le-linux-gnu.so [33/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/linalg/_flapack.cpython-314-powerpc64le-linux-gnu.so [34/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/linalg/_decomp_interpolative.cpython-314-powerpc64le-linux-gnu.so [35/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/linalg/_solve_toeplitz.cpython-314-powerpc64le-linux-gnu.so [36/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/linalg/_matfuncs_sqrtm_triu.cpython-314-powerpc64le-linux-gnu.so [37/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/linalg/cython_blas.cpython-314-powerpc64le-linux-gnu.so [38/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/linalg/cython_lapack.cpython-314-powerpc64le-linux-gnu.so [39/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/linalg/_decomp_lu_cython.cpython-314-powerpc64le-linux-gnu.so [40/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/linalg/_decomp_update.cpython-314-powerpc64le-linux-gnu.so [41/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/linalg/_matfuncs_expm.cpython-314-powerpc64le-linux-gnu.so [42/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/linalg/_matfuncs_schur_sqrtm.cpython-314-powerpc64le-linux-gnu.so [43/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/linalg/_cythonized_array_utils.cpython-314-powerpc64le-linux-gnu.so [44/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/linalg/_linalg_pythran.cpython-314-powerpc64le-linux-gnu.so [45/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/sparse/_csparsetools.cpython-314-powerpc64le-linux-gnu.so [46/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/sparse/sparsetools/_sparsetools.cpython-314-powerpc64le-linux-gnu.so [47/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/sparse/csgraph/_flow.cpython-314-powerpc64le-linux-gnu.so [48/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/sparse/csgraph/_matching.cpython-314-powerpc64le-linux-gnu.so [49/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/sparse/csgraph/_min_spanning_tree.cpython-314-powerpc64le-linux-gnu.so [50/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/sparse/csgraph/_reordering.cpython-314-powerpc64le-linux-gnu.so [51/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/sparse/csgraph/_tools.cpython-314-powerpc64le-linux-gnu.so [52/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/sparse/csgraph/_traversal.cpython-314-powerpc64le-linux-gnu.so [53/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/sparse/csgraph/_shortest_path.cpython-314-powerpc64le-linux-gnu.so [54/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/sparse/linalg/_propack/_spropack.cpython-314-powerpc64le-linux-gnu.so [55/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/sparse/linalg/_propack/_dpropack.cpython-314-powerpc64le-linux-gnu.so [56/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/sparse/linalg/_propack/_cpropack.cpython-314-powerpc64le-linux-gnu.so [57/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/sparse/linalg/_propack/_zpropack.cpython-314-powerpc64le-linux-gnu.so [58/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/sparse/linalg/_dsolve/_superlu.cpython-314-powerpc64le-linux-gnu.so [59/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/sparse/linalg/_eigen/arpack/_arpack.cpython-314-powerpc64le-linux-gnu.so [60/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/stats/_stats.cpython-314-powerpc64le-linux-gnu.so [61/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/stats/_ansari_swilk_statistics.cpython-314-powerpc64le-linux-gnu.so [62/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/stats/_sobol.cpython-314-powerpc64le-linux-gnu.so [63/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/stats/_qmc_cy.cpython-314-powerpc64le-linux-gnu.so [64/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/stats/_biasedurn.cpython-314-powerpc64le-linux-gnu.so [65/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/stats/_stats_pythran.cpython-314-powerpc64le-linux-gnu.so [66/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/stats/_qmvnt_cy.cpython-314-powerpc64le-linux-gnu.so [67/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/stats/_levy_stable/levyst.cpython-314-powerpc64le-linux-gnu.so [68/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so [69/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/stats/_rcont/rcont.cpython-314-powerpc64le-linux-gnu.so [70/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/fft/_pocketfft/pypocketfft.cpython-314-powerpc64le-linux-gnu.so [71/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/io/_test_fortran.cpython-314-powerpc64le-linux-gnu.so [72/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/io/matlab/_streams.cpython-314-powerpc64le-linux-gnu.so [73/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/io/matlab/_mio_utils.cpython-314-powerpc64le-linux-gnu.so [74/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/io/matlab/_mio5_utils.cpython-314-powerpc64le-linux-gnu.so [75/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/io/_fast_matrix_market/_fmm_core.cpython-314-powerpc64le-linux-gnu.so [76/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/optimize/_direct.cpython-314-powerpc64le-linux-gnu.so [77/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/optimize/_minpack.cpython-314-powerpc64le-linux-gnu.so [78/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/optimize/_lsap.cpython-314-powerpc64le-linux-gnu.so [79/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/optimize/_zeros.cpython-314-powerpc64le-linux-gnu.so [80/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/optimize/_lbfgsb.cpython-314-powerpc64le-linux-gnu.so [81/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/optimize/_moduleTNC.cpython-314-powerpc64le-linux-gnu.so [82/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/optimize/_pava_pybind.cpython-314-powerpc64le-linux-gnu.so [83/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/optimize/_group_columns.cpython-314-powerpc64le-linux-gnu.so [84/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/optimize/_bglu_dense.cpython-314-powerpc64le-linux-gnu.so [85/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/optimize/_slsqplib.cpython-314-powerpc64le-linux-gnu.so [86/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/optimize/_lsq/givens_elimination.cpython-314-powerpc64le-linux-gnu.so [87/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/optimize/_trlib/_trlib.cpython-314-powerpc64le-linux-gnu.so [88/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/optimize/cython_optimize/_zeros.cpython-314-powerpc64le-linux-gnu.so [89/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/optimize/_highspy/_core.cpython-314-powerpc64le-linux-gnu.so [90/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/optimize/_highspy/_highs_options.cpython-314-powerpc64le-linux-gnu.so [91/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/spatial/_qhull.cpython-314-powerpc64le-linux-gnu.so [92/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/spatial/_ckdtree.cpython-314-powerpc64le-linux-gnu.so [93/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/spatial/_distance_wrap.cpython-314-powerpc64le-linux-gnu.so [94/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/spatial/_distance_pybind.cpython-314-powerpc64le-linux-gnu.so [95/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/spatial/_voronoi.cpython-314-powerpc64le-linux-gnu.so [96/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/spatial/_hausdorff.cpython-314-powerpc64le-linux-gnu.so [97/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/spatial/transform/_rotation.cpython-314-powerpc64le-linux-gnu.so [98/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/spatial/transform/_rigid_transform.cpython-314-powerpc64le-linux-gnu.so [99/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/cluster/_hierarchy.cpython-314-powerpc64le-linux-gnu.so [100/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/cluster/_optimal_leaf_ordering.cpython-314-powerpc64le-linux-gnu.so [101/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/cluster/_vq.cpython-314-powerpc64le-linux-gnu.so [102/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/fftpack/convolve.cpython-314-powerpc64le-linux-gnu.so [103/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/integrate/_quadpack.cpython-314-powerpc64le-linux-gnu.so [104/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/integrate/_odepack.cpython-314-powerpc64le-linux-gnu.so [105/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/integrate/_vode.cpython-314-powerpc64le-linux-gnu.so [106/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/integrate/_lsoda.cpython-314-powerpc64le-linux-gnu.so [107/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/integrate/_dop.cpython-314-powerpc64le-linux-gnu.so [108/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/integrate/_test_multivariate.cpython-314-powerpc64le-linux-gnu.so [109/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/integrate/_test_odeint_banded.cpython-314-powerpc64le-linux-gnu.so [110/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/signal/_sigtools.cpython-314-powerpc64le-linux-gnu.so [111/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/signal/_max_len_seq_inner.cpython-314-powerpc64le-linux-gnu.so [112/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/signal/_peak_finding_utils.cpython-314-powerpc64le-linux-gnu.so [113/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/signal/_sosfilt.cpython-314-powerpc64le-linux-gnu.so [114/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/signal/_upfirdn_apply.cpython-314-powerpc64le-linux-gnu.so [115/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/signal/_spline.cpython-314-powerpc64le-linux-gnu.so [116/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/interpolate/_interpnd.cpython-314-powerpc64le-linux-gnu.so [117/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/interpolate/_ppoly.cpython-314-powerpc64le-linux-gnu.so [118/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/interpolate/_rgi_cython.cpython-314-powerpc64le-linux-gnu.so [119/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/interpolate/_dierckx.cpython-314-powerpc64le-linux-gnu.so [120/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/interpolate/_fitpack.cpython-314-powerpc64le-linux-gnu.so [121/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/interpolate/_dfitpack.cpython-314-powerpc64le-linux-gnu.so [122/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/interpolate/_rbfinterp_pythran.cpython-314-powerpc64le-linux-gnu.so [123/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/ndimage/_nd_image.cpython-314-powerpc64le-linux-gnu.so [124/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/ndimage/_ni_label.cpython-314-powerpc64le-linux-gnu.so [125/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/ndimage/_rank_filter_1d.cpython-314-powerpc64le-linux-gnu.so [126/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/ndimage/_ctest.cpython-314-powerpc64le-linux-gnu.so [127/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/ndimage/_cytest.cpython-314-powerpc64le-linux-gnu.so [128/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/odr/__odrpack.cpython-314-powerpc64le-linux-gnu.so [129/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/version.py [130/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/__init__.py [131/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_distributor_init.py [132/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/conftest.py [133/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/__init__.py [134/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/_array_api.py [135/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/_array_api_compat_vendor.py [136/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/_array_api_no_0d.py [137/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/_bunch.py [138/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/_ccallback.py [139/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/_disjoint_set.py [140/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/_docscrape.py [141/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/_elementwise_iterative_method.py [142/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/_gcutils.py [143/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/_pep440.py [144/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/_sparse.py [145/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/_testutils.py [146/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/_threadsafety.py [147/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/_tmpdirs.py [148/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/_util.py [149/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/decorator.py [150/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/deprecation.py [151/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/doccer.py [152/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/uarray.py [153/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/__init__.py [154/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/_internal.py [155/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/common/__init__.py [156/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/common/_aliases.py [157/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/common/_fft.py [158/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/common/_helpers.py [159/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/common/_linalg.py [160/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/common/_typing.py [161/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/cupy/__init__.py [162/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/cupy/_aliases.py [163/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/cupy/_info.py [164/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/cupy/_typing.py [165/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/cupy/fft.py [166/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/cupy/linalg.py [167/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/dask/__init__.py [168/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/dask/array/__init__.py [169/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/dask/array/_aliases.py [170/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/dask/array/_info.py [171/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/dask/array/fft.py [172/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/dask/array/linalg.py [173/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/numpy/__init__.py [174/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/numpy/_aliases.py [175/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/numpy/_info.py [176/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/numpy/_typing.py [177/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/numpy/fft.py [178/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/numpy/linalg.py [179/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/torch/__init__.py [180/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/torch/_aliases.py [181/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/torch/_info.py [182/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/torch/_typing.py [183/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/torch/fft.py [184/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_compat/array_api_compat/torch/linalg.py [185/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_extra/src/array_api_extra/_lib/_utils/__init__.py [186/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_extra/src/array_api_extra/_lib/_utils/_compat.py [187/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_extra/src/array_api_extra/_lib/_utils/_compat.pyi [188/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_extra/src/array_api_extra/_lib/_utils/_helpers.py [189/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_extra/src/array_api_extra/_lib/_utils/_typing.py [190/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_extra/src/array_api_extra/_lib/_utils/_typing.pyi [191/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_extra/src/array_api_extra/_lib/__init__.py [192/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_extra/src/array_api_extra/_lib/_at.py [193/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_extra/src/array_api_extra/_lib/_backends.py [194/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_extra/src/array_api_extra/_lib/_funcs.py [195/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_extra/src/array_api_extra/_lib/_lazy.py [196/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_extra/src/array_api_extra/_lib/_testing.py [197/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_extra/src/array_api_extra/__init__.py [198/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_extra/src/array_api_extra/_delegation.py [199/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/array_api_extra/src/array_api_extra/testing.py [200/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/cobyqa/cobyqa/__init__.py [201/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/cobyqa/cobyqa/framework.py [202/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/cobyqa/cobyqa/main.py [203/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/cobyqa/cobyqa/models.py [204/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/cobyqa/cobyqa/problem.py [205/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/cobyqa/cobyqa/settings.py [206/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/cobyqa/cobyqa/subsolvers/__init__.py [207/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/cobyqa/cobyqa/subsolvers/geometry.py [208/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/cobyqa/cobyqa/subsolvers/optim.py [209/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/cobyqa/cobyqa/utils/__init__.py [210/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/cobyqa/cobyqa/utils/exceptions.py [211/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/cobyqa/cobyqa/utils/math.py [212/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/cobyqa/cobyqa/utils/versions.py [213/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/__init__.py [214/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/common/__init__.py [215/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/common/_bounds.py [216/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/common/_linear_constraints.py [217/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/common/_nonlinear_constraints.py [218/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/common/_project.py [219/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/common/checkbreak.py [220/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/common/consts.py [221/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/common/evaluate.py [222/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/common/history.py [223/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/common/infos.py [224/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/common/linalg.py [225/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/common/message.py [226/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/common/powalg.py [227/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/common/preproc.py [228/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/common/present.py [229/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/common/ratio.py [230/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/common/redrho.py [231/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/common/selectx.py [232/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/cobyla/__init__.py [233/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/cobyla/cobyla.py [234/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/cobyla/cobylb.py [235/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/cobyla/geometry.py [236/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/cobyla/initialize.py [237/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/cobyla/trustregion.py [238/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/pyprima/pyprima/src/pyprima/cobyla/update.py [239/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/_uarray/__init__.py [240/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/_uarray/_backend.py [241/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/_uarray/LICENSE [242/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/tests/__init__.py [243/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/tests/test__gcutils.py [244/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/tests/test__pep440.py [245/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/tests/test__testutils.py [246/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/tests/test__threadsafety.py [247/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/tests/test__util.py [248/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/tests/test_bunch.py [249/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/tests/test_ccallback.py [250/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/tests/test_config.py [251/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/tests/test_deprecation.py [252/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/tests/test_doccer.py [253/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/tests/test_import_cycles.py [254/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/tests/test_public_api.py [255/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/tests/test_scipy_version.py [256/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/tests/test_tmpdirs.py [257/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/tests/test_warnings.py [258/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/_lib/tests/test_array_api.py [259/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_test_internal.pyi [260/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/__init__.py [261/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/__init__.pxd [262/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_add_newdocs.py [263/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_basic.py [264/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_ellip_harm.py [265/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_input_validation.py [266/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_lambertw.py [267/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_logsumexp.py [268/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_mptestutils.py [269/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_multiufuncs.py [270/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_orthogonal.py [271/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_orthogonal.pyi [272/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_sf_error.py [273/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_spfun_stats.py [274/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_spherical_bessel.py [275/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_support_alternative_backends.py [276/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_testutils.py [277/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_ufuncs.pyi [278/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/add_newdocs.py [279/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/basic.py [280/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/cython_special.pxd [281/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/cython_special.pyi [282/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/orthogonal.py [283/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/sf_error.py [284/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/specfun.py [285/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/spfun_stats.py [286/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/__init__.py [287/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_basic.py [288/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_bdtr.py [289/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_boxcox.py [290/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_cdflib.py [291/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_cdft_asymptotic.py [292/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_cephes_intp_cast.py [293/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_cosine_distr.py [294/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_cython_special.py [295/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_data.py [296/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_dd.py [297/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_digamma.py [298/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_ellip_harm.py [299/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_erfinv.py [300/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_exponential_integrals.py [301/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_extending.py [302/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_faddeeva.py [303/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_gamma.py [304/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_gammainc.py [305/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_hyp2f1.py [306/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_hypergeometric.py [307/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_iv_ratio.py [308/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_kolmogorov.py [309/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_lambertw.py [310/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_legendre.py [311/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_log1mexp.py [312/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_loggamma.py [313/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_logit.py [314/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_logsumexp.py [315/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_mpmath.py [316/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_nan_inputs.py [317/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_ndtr.py [318/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_ndtri_exp.py [319/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_orthogonal.py [320/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_orthogonal_eval.py [321/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_owens_t.py [322/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_pcf.py [323/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_pdtr.py [324/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_powm1.py [325/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_precompute_expn_asy.py [326/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_precompute_gammainc.py [327/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_precompute_utils.py [328/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_round.py [329/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_sf_error.py [330/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_sici.py [331/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_specfun.py [332/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_spence.py [333/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_spfun_stats.py [334/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_sph_harm.py [335/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_spherical_bessel.py [336/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_support_alternative_backends.py [337/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_trig.py [338/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_ufunc_signatures.py [339/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_wright_bessel.py [340/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_wrightomega.py [341/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_zeta.py [342/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/test_boost_ufuncs.py [343/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/data/__init__.py [344/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/_cython_examples/extending.pyx [345/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/tests/_cython_examples/meson.build [346/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_precompute/__init__.py [347/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_precompute/cosine_cdf.py [348/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_precompute/expn_asy.py [349/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_precompute/gammainc_asy.py [350/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_precompute/gammainc_data.py [351/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_precompute/hyp2f1_data.py [352/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_precompute/lambertw.py [353/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_precompute/loggamma.py [354/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_precompute/struve_convergence.py [355/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_precompute/utils.py [356/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_precompute/wright_bessel.py [357/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_precompute/wright_bessel_data.py [358/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_precompute/wrightomega.py [359/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/special/_precompute/zetac.py [360/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/__init__.py [361/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/__init__.pxd [362/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_basic.py [363/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_cythonized_array_utils.pxd [364/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_cythonized_array_utils.pyi [365/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_decomp.py [366/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_decomp_cholesky.py [367/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_decomp_cossin.py [368/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_decomp_ldl.py [369/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_decomp_lu.py [370/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_decomp_lu_cython.pyi [371/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_decomp_polar.py [372/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_decomp_qr.py [373/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_decomp_qz.py [374/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_decomp_schur.py [375/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_decomp_svd.py [376/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_expm_frechet.py [377/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_matfuncs.py [378/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_matfuncs_expm.pyi [379/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_matfuncs_inv_ssq.py [380/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_matfuncs_sqrtm.py [381/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_misc.py [382/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_procrustes.py [383/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_sketches.py [384/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_solvers.py [385/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_special_matrices.py [386/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/_testutils.py [387/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/basic.py [388/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/blas.py [389/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/decomp.py [390/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/decomp_cholesky.py [391/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/decomp_lu.py [392/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/decomp_qr.py [393/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/decomp_schur.py [394/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/decomp_svd.py [395/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/interpolative.py [396/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/lapack.py [397/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/matfuncs.py [398/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/misc.py [399/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/special_matrices.py [400/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/__init__.py [401/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/test_basic.py [402/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/test_batch.py [403/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/test_blas.py [404/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/test_cython_blas.py [405/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/test_cython_lapack.py [406/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/test_cythonized_array_utils.py [407/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/test_decomp.py [408/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/test_decomp_cholesky.py [409/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/test_decomp_cossin.py [410/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/test_decomp_ldl.py [411/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/test_decomp_lu.py [412/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/test_decomp_polar.py [413/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/test_decomp_update.py [414/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/test_extending.py [415/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/test_fblas.py [416/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/test_interpolative.py [417/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/test_lapack.py [418/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/test_matfuncs.py [419/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/test_matmul_toeplitz.py [420/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/test_procrustes.py [421/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/test_sketches.py [422/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/test_solve_toeplitz.py [423/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/test_solvers.py [424/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/test_special_matrices.py [425/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/_cython_examples/extending.pyx [426/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/_cython_examples/meson.build [427/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/data/carex_15_data.npz [428/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/data/carex_18_data.npz [429/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/data/carex_19_data.npz [430/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/data/carex_20_data.npz [431/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/data/carex_6_data.npz [432/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/linalg/tests/data/gendare_20170120_data.npz [433/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/__init__.py [434/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/_base.py [435/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/_bsr.py [436/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/_compressed.py [437/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/_construct.py [438/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/_coo.py [439/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/_csc.py [440/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/_csr.py [441/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/_data.py [442/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/_dia.py [443/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/_dok.py [444/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/_extract.py [445/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/_index.py [446/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/_lil.py [447/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/_matrix_io.py [448/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/_matrix.py [449/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/_spfuncs.py [450/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/_sputils.py [451/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/base.py [452/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/bsr.py [453/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/compressed.py [454/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/construct.py [455/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/coo.py [456/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/csc.py [457/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/csr.py [458/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/data.py [459/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/dia.py [460/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/dok.py [461/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/extract.py [462/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/lil.py [463/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/sparsetools.py [464/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/spfuncs.py [465/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/sputils.py [466/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/csgraph/__init__.py [467/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/csgraph/_laplacian.py [468/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/csgraph/_validation.py [469/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/csgraph/tests/__init__.py [470/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/csgraph/tests/test_connected_components.py [471/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/csgraph/tests/test_conversions.py [472/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/csgraph/tests/test_flow.py [473/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/csgraph/tests/test_graph_laplacian.py [474/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/csgraph/tests/test_matching.py [475/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/csgraph/tests/test_pydata_sparse.py [476/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/csgraph/tests/test_reordering.py [477/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/csgraph/tests/test_shortest_path.py [478/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/csgraph/tests/test_spanning_tree.py [479/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/csgraph/tests/test_traversal.py [480/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/__init__.py [481/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_expm_multiply.py [482/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_interface.py [483/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_matfuncs.py [484/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_norm.py [485/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_onenormest.py [486/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_svdp.py [487/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_special_sparse_arrays.py [488/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/dsolve.py [489/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/eigen.py [490/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/interface.py [491/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/isolve.py [492/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/matfuncs.py [493/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_isolve/__init__.py [494/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_isolve/_gcrotmk.py [495/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_isolve/iterative.py [496/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_isolve/lgmres.py [497/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_isolve/lsmr.py [498/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_isolve/lsqr.py [499/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_isolve/minres.py [500/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_isolve/tfqmr.py [501/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_isolve/utils.py [502/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_isolve/tests/__init__.py [503/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_isolve/tests/test_gcrotmk.py [504/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_isolve/tests/test_iterative.py [505/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_isolve/tests/test_lgmres.py [506/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_isolve/tests/test_lsmr.py [507/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_isolve/tests/test_lsqr.py [508/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_isolve/tests/test_minres.py [509/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_isolve/tests/test_utils.py [510/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_dsolve/__init__.py [511/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_dsolve/_add_newdocs.py [512/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_dsolve/linsolve.py [513/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_dsolve/tests/__init__.py [514/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_dsolve/tests/test_linsolve.py [515/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_eigen/__init__.py [516/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_eigen/_svds.py [517/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_eigen/_svds_doc.py [518/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_eigen/arpack/__init__.py [519/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_eigen/arpack/arpack.py [520/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_eigen/arpack/ARPACK/COPYING [521/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_eigen/arpack/tests/__init__.py [522/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_eigen/arpack/tests/test_arpack.py [523/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_eigen/lobpcg/__init__.py [524/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_eigen/lobpcg/lobpcg.py [525/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_eigen/lobpcg/tests/__init__.py [526/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py [527/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_eigen/tests/__init__.py [528/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/_eigen/tests/test_svds.py [529/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/tests/__init__.py [530/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/tests/propack_test_data.npz [531/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/tests/test_expm_multiply.py [532/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/tests/test_interface.py [533/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/tests/test_matfuncs.py [534/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/tests/test_norm.py [535/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/tests/test_onenormest.py [536/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/tests/test_propack.py [537/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/tests/test_pydata_sparse.py [538/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/linalg/tests/test_special_sparse_arrays.py [539/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/tests/__init__.py [540/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/tests/test_arithmetic1d.py [541/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/tests/test_array_api.py [542/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/tests/test_base.py [543/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/tests/test_coo.py [544/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/tests/test_common1d.py [545/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/tests/test_construct.py [546/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/tests/test_csc.py [547/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/tests/test_csr.py [548/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/tests/test_dok.py [549/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/tests/test_extract.py [550/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/tests/test_indexing1d.py [551/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/tests/test_matrix_io.py [552/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/tests/test_minmax1d.py [553/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/tests/test_sparsetools.py [554/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/tests/test_spfuncs.py [555/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/tests/test_sputils.py [556/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/tests/data/csc_py2.npz [557/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/sparse/tests/data/csc_py3.npz [558/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_sobol_direction_numbers.npz [559/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/__init__.py [560/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_axis_nan_policy.py [561/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_binned_statistic.py [562/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_binomtest.py [563/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_bws_test.py [564/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_censored_data.py [565/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_common.py [566/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_constants.py [567/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_continued_fraction.py [568/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_continuous_distns.py [569/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_correlation.py [570/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_covariance.py [571/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_crosstab.py [572/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_discrete_distns.py [573/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_distn_infrastructure.py [574/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_distribution_infrastructure.py [575/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_distr_params.py [576/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_entropy.py [577/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_finite_differences.py [578/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_fit.py [579/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_hypotests.py [580/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_kde.py [581/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_ksstats.py [582/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_mannwhitneyu.py [583/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_mgc.py [584/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_morestats.py [585/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_mstats_basic.py [586/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_mstats_extras.py [587/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_multicomp.py [588/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_multivariate.py [589/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_new_distributions.py [590/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_odds_ratio.py [591/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_page_trend_test.py [592/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_probability_distribution.py [593/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_qmc.py [594/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_qmvnt.py [595/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_quantile.py [596/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_relative_risk.py [597/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_resampling.py [598/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_result_classes.py [599/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_sampling.py [600/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_sensitivity_analysis.py [601/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_stats_mstats_common.py [602/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_stats_py.py [603/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_survival.py [604/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_tukeylambda_stats.py [605/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_variation.py [606/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_warnings_errors.py [607/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_wilcoxon.py [608/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/biasedurn.py [609/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/contingency.py [610/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/distributions.py [611/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/kde.py [612/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/morestats.py [613/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/mstats.py [614/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/mstats_basic.py [615/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/mstats_extras.py [616/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/mvn.py [617/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/qmc.py [618/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/sampling.py [619/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/stats.py [620/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_biasedurn.pxd [621/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_stats.pxd [622/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_qmc_cy.pyi [623/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_sobol.pyi [624/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_levy_stable/__init__.py [625/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_unuran/__init__.py [626/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_unuran/unuran_wrapper.pyi [627/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/_rcont/__init__.py [628/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/__init__.py [629/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/common_tests.py [630/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_axis_nan_policy.py [631/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_binned_statistic.py [632/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_censored_data.py [633/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_contingency.py [634/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_continued_fraction.py [635/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_continuous.py [636/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_continuous_basic.py [637/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_continuous_fit_censored.py [638/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_correlation.py [639/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_crosstab.py [640/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_discrete_basic.py [641/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_discrete_distns.py [642/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_distributions.py [643/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_entropy.py [644/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_fast_gen_inversion.py [645/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_fit.py [646/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_hypotests.py [647/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_kdeoth.py [648/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_marray.py [649/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_mgc.py [650/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_morestats.py [651/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_mstats_basic.py [652/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_mstats_extras.py [653/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_multicomp.py [654/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_multivariate.py [655/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_odds_ratio.py [656/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_qmc.py [657/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_quantile.py [658/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_rank.py [659/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_relative_risk.py [660/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_resampling.py [661/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_sampling.py [662/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_sensitivity_analysis.py [663/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_stats.py [664/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_survival.py [665/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_tukeylambda_stats.py [666/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/test_variation.py [667/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/data/_mvt.py [668/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/data/fisher_exact_results_from_r.py [669/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/data/jf_skew_t_gamlss_pdf_data.npy [670/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/data/rel_breitwigner_pdf_sample_data_ROOT.npy [671/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/data/studentized_range_mpmath_ref.json [672/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/data/levy_stable/stable-loc-scale-sample-data.npy [673/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/data/levy_stable/stable-Z1-cdf-sample-data.npy [674/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/data/levy_stable/stable-Z1-pdf-sample-data.npy [675/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/data/nist_anova/AtmWtAg.dat [676/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/data/nist_anova/SiRstv.dat [677/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/data/nist_anova/SmLs01.dat [678/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/data/nist_anova/SmLs02.dat [679/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/data/nist_anova/SmLs03.dat [680/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/data/nist_anova/SmLs04.dat [681/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/data/nist_anova/SmLs05.dat [682/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/data/nist_anova/SmLs06.dat [683/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/data/nist_anova/SmLs07.dat [684/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/data/nist_anova/SmLs08.dat [685/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/data/nist_anova/SmLs09.dat [686/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/stats/tests/data/nist_linregress/Norris.dat [687/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/__init__.py [688/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/_backend.py [689/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/_basic.py [690/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/_basic_backend.py [691/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/_debug_backends.py [692/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/_fftlog.py [693/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/_fftlog_backend.py [694/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/_helper.py [695/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/_realtransforms.py [696/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/_realtransforms_backend.py [697/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/_pocketfft/__init__.py [698/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/_pocketfft/basic.py [699/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/_pocketfft/helper.py [700/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/_pocketfft/LICENSE.md [701/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/_pocketfft/realtransforms.py [702/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/_pocketfft/tests/__init__.py [703/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/_pocketfft/tests/test_basic.py [704/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/_pocketfft/tests/test_real_transforms.py [705/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/tests/__init__.py [706/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/tests/test_backend.py [707/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/tests/test_basic.py [708/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/tests/test_helper.py [709/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/tests/mock_backend.py [710/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/tests/test_fftlog.py [711/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/tests/test_multithreading.py [712/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fft/tests/test_real_transforms.py [713/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/__init__.py [714/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/_fortran.py [715/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/_idl.py [716/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/_mmio.py [717/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/_netcdf.py [718/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/harwell_boeing.py [719/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/idl.py [720/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/mmio.py [721/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/netcdf.py [722/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/wavfile.py [723/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/__init__.py [724/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/test_fortran.py [725/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/test_idl.py [726/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/test_mmio.py [727/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/test_netcdf.py [728/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/test_paths.py [729/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/test_wavfile.py [730/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/Transparent Busy.ani [731/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/array_float32_1d.sav [732/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/array_float32_2d.sav [733/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/array_float32_3d.sav [734/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/array_float32_4d.sav [735/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/array_float32_5d.sav [736/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/array_float32_6d.sav [737/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/array_float32_7d.sav [738/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/array_float32_8d.sav [739/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/array_float32_pointer_1d.sav [740/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/array_float32_pointer_2d.sav [741/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/array_float32_pointer_3d.sav [742/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/array_float32_pointer_4d.sav [743/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/array_float32_pointer_5d.sav [744/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/array_float32_pointer_6d.sav [745/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/array_float32_pointer_7d.sav [746/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/array_float32_pointer_8d.sav [747/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/example_1.nc [748/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/example_2.nc [749/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/example_3_maskedvals.nc [750/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/fortran-3x3d-2i.dat [751/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/fortran-mixed.dat [752/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/fortran-sf8-11x1x10.dat [753/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/fortran-sf8-15x10x22.dat [754/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/fortran-sf8-1x1x1.dat [755/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/fortran-sf8-1x1x5.dat [756/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/fortran-sf8-1x1x7.dat [757/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/fortran-sf8-1x3x5.dat [758/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/fortran-si4-11x1x10.dat [759/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/fortran-si4-15x10x22.dat [760/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/fortran-si4-1x1x1.dat [761/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/fortran-si4-1x1x5.dat [762/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/fortran-si4-1x1x7.dat [763/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/fortran-si4-1x3x5.dat [764/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/invalid_pointer.sav [765/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/null_pointer.sav [766/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/scalar_byte.sav [767/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/scalar_byte_descr.sav [768/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/scalar_complex32.sav [769/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/scalar_complex64.sav [770/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/scalar_float32.sav [771/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/scalar_float64.sav [772/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/scalar_heap_pointer.sav [773/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/scalar_int16.sav [774/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/scalar_int32.sav [775/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/scalar_int64.sav [776/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/scalar_string.sav [777/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/scalar_uint16.sav [778/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/scalar_uint32.sav [779/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/scalar_uint64.sav [780/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/struct_arrays.sav [781/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/struct_arrays_byte_idl80.sav [782/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/struct_arrays_replicated.sav [783/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/struct_arrays_replicated_3d.sav [784/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/struct_inherit.sav [785/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/struct_pointer_arrays.sav [786/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/struct_pointer_arrays_replicated.sav [787/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/struct_pointer_arrays_replicated_3d.sav [788/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/struct_pointers.sav [789/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/struct_pointers_replicated.sav [790/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/struct_pointers_replicated_3d.sav [791/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/struct_scalars.sav [792/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/struct_scalars_replicated.sav [793/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/struct_scalars_replicated_3d.sav [794/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/test-44100Hz-2ch-32bit-float-be.wav [795/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/test-44100Hz-2ch-32bit-float-le.wav [796/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/test-44100Hz-be-1ch-4bytes.wav [797/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/test-44100Hz-le-1ch-4bytes-early-eof-no-data.wav [798/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/test-44100Hz-le-1ch-4bytes-early-eof.wav [799/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/test-44100Hz-le-1ch-4bytes-incomplete-chunk.wav [800/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/test-44100Hz-le-1ch-4bytes-rf64.wav [801/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/test-44100Hz-le-1ch-4bytes.wav [802/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/test-48000Hz-2ch-64bit-float-le-wavex.wav [803/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/test-8000Hz-be-3ch-5S-24bit.wav [804/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/test-1234Hz-le-1ch-10S-20bit-extra.wav [805/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/test-8000Hz-le-1ch-1byte-ulaw.wav [806/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/test-8000Hz-le-2ch-1byteu.wav [807/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/test-8000Hz-le-3ch-5S-24bit-inconsistent.wav [808/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/test-8000Hz-le-3ch-5S-24bit-rf64.wav [809/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/test-8000Hz-le-3ch-5S-24bit.wav [810/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/test-8000Hz-le-3ch-5S-36bit.wav [811/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/test-8000Hz-le-3ch-5S-45bit.wav [812/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/test-8000Hz-le-3ch-5S-53bit.wav [813/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/test-8000Hz-le-3ch-5S-64bit.wav [814/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/test-8000Hz-le-4ch-9S-12bit.wav [815/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/test-8000Hz-le-5ch-9S-5bit.wav [816/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/tests/data/various_compressed.sav [817/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/__init__.py [818/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/_byteordercodes.py [819/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/_mio.py [820/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/_mio4.py [821/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/_mio5.py [822/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/_mio5_params.py [823/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/_miobase.py [824/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/byteordercodes.py [825/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/mio.py [826/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/mio4.py [827/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/mio5.py [828/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/mio5_params.py [829/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/mio5_utils.py [830/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/mio_utils.py [831/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/miobase.py [832/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/streams.py [833/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/__init__.py [834/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/test_byteordercodes.py [835/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/test_mio.py [836/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/test_mio5_utils.py [837/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/test_mio_funcs.py [838/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/test_mio_utils.py [839/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/test_miobase.py [840/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/test_pathological.py [841/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/test_streams.py [842/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/bad_miuint32.mat [843/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/bad_miutf8_array_name.mat [844/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/big_endian.mat [845/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/broken_utf8.mat [846/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/corrupted_zlib_checksum.mat [847/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/corrupted_zlib_data.mat [848/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/japanese_utf8.txt [849/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/little_endian.mat [850/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/logical_sparse.mat [851/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/malformed1.mat [852/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/miuint32_for_miint32.mat [853/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/miutf8_array_name.mat [854/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/nasty_duplicate_fieldnames.mat [855/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/one_by_zero_char.mat [856/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/parabola.mat [857/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/single_empty_string.mat [858/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/some_functions.mat [859/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/sqr.mat [860/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/test3dmatrix_6.1_SOL2.mat [861/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/test3dmatrix_6.5.1_GLNX86.mat [862/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/test3dmatrix_7.1_GLNX86.mat [863/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/test3dmatrix_7.4_GLNX86.mat [864/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/test_empty_struct.mat [865/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/test_mat4_le_floats.mat [866/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/test_skip_variable.mat [867/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testbool_8_WIN64.mat [868/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testcell_6.1_SOL2.mat [869/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testcell_6.5.1_GLNX86.mat [870/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testcell_7.1_GLNX86.mat [871/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testcell_7.4_GLNX86.mat [872/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testcellnest_6.1_SOL2.mat [873/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testcellnest_6.5.1_GLNX86.mat [874/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testcellnest_7.1_GLNX86.mat [875/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testcellnest_7.4_GLNX86.mat [876/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testcomplex_4.2c_SOL2.mat [877/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testcomplex_6.1_SOL2.mat [878/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testcomplex_6.5.1_GLNX86.mat [879/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testcomplex_7.1_GLNX86.mat [880/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testcomplex_7.4_GLNX86.mat [881/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testdouble_4.2c_SOL2.mat [882/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testdouble_6.1_SOL2.mat [883/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testdouble_6.5.1_GLNX86.mat [884/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testdouble_7.1_GLNX86.mat [885/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testdouble_7.4_GLNX86.mat [886/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testemptycell_5.3_SOL2.mat [887/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testemptycell_6.5.1_GLNX86.mat [888/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testemptycell_7.1_GLNX86.mat [889/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testemptycell_7.4_GLNX86.mat [890/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testfunc_7.4_GLNX86.mat [891/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testhdf5_7.4_GLNX86.mat [892/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testmatrix_4.2c_SOL2.mat [893/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testmatrix_6.1_SOL2.mat [894/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testmatrix_6.5.1_GLNX86.mat [895/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testmatrix_7.1_GLNX86.mat [896/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testmatrix_7.4_GLNX86.mat [897/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testminus_4.2c_SOL2.mat [898/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testminus_6.1_SOL2.mat [899/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testminus_6.5.1_GLNX86.mat [900/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testminus_7.1_GLNX86.mat [901/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testminus_7.4_GLNX86.mat [902/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testmulti_4.2c_SOL2.mat [903/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testmulti_7.1_GLNX86.mat [904/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testmulti_7.4_GLNX86.mat [905/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testobject_6.1_SOL2.mat [906/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testobject_6.5.1_GLNX86.mat [907/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testobject_7.1_GLNX86.mat [908/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testobject_7.4_GLNX86.mat [909/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testonechar_4.2c_SOL2.mat [910/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testonechar_6.1_SOL2.mat [911/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testonechar_6.5.1_GLNX86.mat [912/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testonechar_7.1_GLNX86.mat [913/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testonechar_7.4_GLNX86.mat [914/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testscalarcell_7.4_GLNX86.mat [915/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testsimplecell.mat [916/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testsparse_4.2c_SOL2.mat [917/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testsparse_6.1_SOL2.mat [918/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testsparse_6.5.1_GLNX86.mat [919/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testsparse_7.1_GLNX86.mat [920/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testsparse_7.4_GLNX86.mat [921/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testsparsecomplex_4.2c_SOL2.mat [922/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testsparsecomplex_6.1_SOL2.mat [923/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testsparsecomplex_6.5.1_GLNX86.mat [924/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testsparsecomplex_7.1_GLNX86.mat [925/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testsparsecomplex_7.4_GLNX86.mat [926/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testsparsefloat_7.4_GLNX86.mat [927/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/teststring_4.2c_SOL2.mat [928/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/teststring_6.1_SOL2.mat [929/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/teststring_6.5.1_GLNX86.mat [930/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/teststring_7.1_GLNX86.mat [931/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/teststring_7.4_GLNX86.mat [932/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/teststringarray_4.2c_SOL2.mat [933/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/teststringarray_6.1_SOL2.mat [934/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/teststringarray_6.5.1_GLNX86.mat [935/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/teststringarray_7.1_GLNX86.mat [936/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/teststringarray_7.4_GLNX86.mat [937/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/teststruct_6.1_SOL2.mat [938/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/teststruct_6.5.1_GLNX86.mat [939/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/teststruct_7.1_GLNX86.mat [940/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/teststruct_7.4_GLNX86.mat [941/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/teststructarr_6.1_SOL2.mat [942/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/teststructarr_6.5.1_GLNX86.mat [943/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/teststructarr_7.1_GLNX86.mat [944/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/teststructarr_7.4_GLNX86.mat [945/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/teststructnest_6.1_SOL2.mat [946/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/teststructnest_6.5.1_GLNX86.mat [947/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/teststructnest_7.1_GLNX86.mat [948/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/teststructnest_7.4_GLNX86.mat [949/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testunicode_7.1_GLNX86.mat [950/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testunicode_7.4_GLNX86.mat [951/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/testvec_4_GLNX86.mat [952/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/matlab/tests/data/debigged_m4.mat [953/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/arff/__init__.py [954/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/arff/_arffread.py [955/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/arff/arffread.py [956/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/arff/tests/__init__.py [957/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/arff/tests/test_arffread.py [958/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/arff/tests/data/iris.arff [959/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/arff/tests/data/missing.arff [960/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/arff/tests/data/nodata.arff [961/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/arff/tests/data/quoted_nominal.arff [962/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/arff/tests/data/quoted_nominal_spaces.arff [963/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/arff/tests/data/test1.arff [964/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/arff/tests/data/test10.arff [965/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/arff/tests/data/test11.arff [966/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/arff/tests/data/test2.arff [967/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/arff/tests/data/test3.arff [968/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/arff/tests/data/test4.arff [969/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/arff/tests/data/test5.arff [970/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/arff/tests/data/test6.arff [971/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/arff/tests/data/test7.arff [972/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/arff/tests/data/test8.arff [973/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/arff/tests/data/test9.arff [974/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/_harwell_boeing/__init__.py [975/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/_harwell_boeing/_fortran_format_parser.py [976/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/_harwell_boeing/hb.py [977/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/_harwell_boeing/tests/__init__.py [978/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/_harwell_boeing/tests/test_fortran_format.py [979/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/_harwell_boeing/tests/test_hb.py [980/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/io/_fast_matrix_market/__init__.py [981/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_lsq/__init__.py [982/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_lsq/bvls.py [983/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_lsq/common.py [984/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_lsq/dogbox.py [985/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_lsq/least_squares.py [986/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_lsq/lsq_linear.py [987/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_lsq/trf.py [988/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_lsq/trf_linear.py [989/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_trlib/__init__.py [990/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_trustregion_constr/tests/__init__.py [991/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_trustregion_constr/tests/test_canonical_constraint.py [992/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_trustregion_constr/tests/test_projections.py [993/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_trustregion_constr/tests/test_qp_subproblem.py [994/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_trustregion_constr/tests/test_report.py [995/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_trustregion_constr/tests/test_nested_minimize.py [996/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_trustregion_constr/__init__.py [997/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_trustregion_constr/canonical_constraint.py [998/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_trustregion_constr/equality_constrained_sqp.py [999/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_trustregion_constr/minimize_trustregion_constr.py [1000/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_trustregion_constr/projections.py [1001/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_trustregion_constr/qp_subproblem.py [1002/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_trustregion_constr/report.py [1003/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_trustregion_constr/tr_interior_point.py [1004/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/cython_optimize/__init__.py [1005/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/cython_optimize/_zeros.pxd [1006/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/cython_optimize/c_zeros.pxd [1007/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_shgo_lib/__init__.py [1008/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_shgo_lib/_complex.py [1009/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_shgo_lib/_vertex.py [1010/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_highspy/__init__.py [1011/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_highspy/_highs_wrapper.py [1012/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/__init__.py [1013/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test__basinhopping.py [1014/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test__differential_evolution.py [1015/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test__dual_annealing.py [1016/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test__linprog_clean_inputs.py [1017/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test__numdiff.py [1018/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test__remove_redundancy.py [1019/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test__root.py [1020/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test__shgo.py [1021/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test__spectral.py [1022/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_bracket.py [1023/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_chandrupatla.py [1024/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_cobyla.py [1025/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_cobyqa.py [1026/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_constraint_conversion.py [1027/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_constraints.py [1028/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_cython_optimize.py [1029/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_differentiable_functions.py [1030/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_direct.py [1031/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_extending.py [1032/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_hessian_update_strategy.py [1033/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_isotonic_regression.py [1034/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_lbfgsb_hessinv.py [1035/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_lbfgsb_setulb.py [1036/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_least_squares.py [1037/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_linear_assignment.py [1038/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_linesearch.py [1039/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_linprog.py [1040/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_lsq_common.py [1041/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_lsq_linear.py [1042/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_milp.py [1043/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_minimize_constrained.py [1044/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_minpack.py [1045/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_nnls.py [1046/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_nonlin.py [1047/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_optimize.py [1048/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_quadratic_assignment.py [1049/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_regression.py [1050/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_slsqp.py [1051/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_tnc.py [1052/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_trustregion.py [1053/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_trustregion_exact.py [1054/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_trustregion_krylov.py [1055/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/test_zeros.py [1056/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/_cython_examples/extending.pyx [1057/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tests/_cython_examples/meson.build [1058/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/__init__.py [1059/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/__init__.pxd [1060/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_basinhopping.py [1061/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_bracket.py [1062/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_chandrupatla.py [1063/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_cobyla_py.py [1064/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_cobyqa_py.py [1065/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_constraints.py [1066/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_differentiable_functions.py [1067/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_differentialevolution.py [1068/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_direct_py.py [1069/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_dcsrch.py [1070/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_dual_annealing.py [1071/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_elementwise.py [1072/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_hessian_update_strategy.py [1073/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_isotonic.py [1074/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_lbfgsb_py.py [1075/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_linesearch.py [1076/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_linprog.py [1077/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_linprog_doc.py [1078/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_linprog_highs.py [1079/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_linprog_ip.py [1080/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_linprog_rs.py [1081/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_linprog_simplex.py [1082/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_linprog_util.py [1083/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_milp.py [1084/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_minimize.py [1085/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_minpack_py.py [1086/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_nnls.py [1087/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_nonlin.py [1088/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_numdiff.py [1089/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_optimize.py [1090/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_qap.py [1091/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_remove_redundancy.py [1092/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_root.py [1093/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_root_scalar.py [1094/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_shgo.py [1095/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_slsqp_py.py [1096/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_spectral.py [1097/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_tnc.py [1098/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_trustregion.py [1099/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_trustregion_dogleg.py [1100/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_trustregion_exact.py [1101/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_trustregion_krylov.py [1102/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_trustregion_ncg.py [1103/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_tstutils.py [1104/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/_zeros_py.py [1105/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/cobyla.py [1106/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/cython_optimize.pxd [1107/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/elementwise.py [1108/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/lbfgsb.py [1109/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/linesearch.py [1110/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/minpack.py [1111/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/minpack2.py [1112/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/moduleTNC.py [1113/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/nonlin.py [1114/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/optimize.py [1115/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/slsqp.py [1116/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/tnc.py [1117/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/optimize/zeros.py [1118/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/COPYING_QHULL.txt [1119/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/_qhull.pyi [1120/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/_voronoi.pyi [1121/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/distance.pyi [1122/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/__init__.py [1123/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/_geometric_slerp.py [1124/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/_kdtree.py [1125/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/_plotutils.py [1126/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/_procrustes.py [1127/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/_spherical_voronoi.py [1128/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/ckdtree.py [1129/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/distance.py [1130/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/kdtree.py [1131/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/qhull.py [1132/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/__init__.py [1133/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/test__plotutils.py [1134/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/test__procrustes.py [1135/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/test_distance.py [1136/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/test_hausdorff.py [1137/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/test_kdtree.py [1138/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/test_qhull.py [1139/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/test_slerp.py [1140/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/test_spherical_voronoi.py [1141/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/cdist-X1.txt [1142/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/cdist-X2.txt [1143/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/degenerate_pointset.npz [1144/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/iris.txt [1145/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/pdist-boolean-inp.txt [1146/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/pdist-chebyshev-ml-iris.txt [1147/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/pdist-chebyshev-ml.txt [1148/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/pdist-cityblock-ml-iris.txt [1149/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/pdist-cityblock-ml.txt [1150/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/pdist-correlation-ml-iris.txt [1151/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/pdist-correlation-ml.txt [1152/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/pdist-cosine-ml-iris.txt [1153/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/pdist-cosine-ml.txt [1154/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/pdist-double-inp.txt [1155/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/pdist-euclidean-ml-iris.txt [1156/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/pdist-euclidean-ml.txt [1157/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/pdist-hamming-ml.txt [1158/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/pdist-jaccard-ml.txt [1159/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/pdist-jensenshannon-ml-iris.txt [1160/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/pdist-jensenshannon-ml.txt [1161/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/pdist-minkowski-3.2-ml-iris.txt [1162/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/pdist-minkowski-3.2-ml.txt [1163/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/pdist-minkowski-5.8-ml-iris.txt [1164/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/pdist-seuclidean-ml-iris.txt [1165/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/pdist-seuclidean-ml.txt [1166/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/pdist-spearman-ml.txt [1167/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/random-bool-data.txt [1168/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/random-double-data.txt [1169/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/random-int-data.txt [1170/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/random-uint-data.txt [1171/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/tests/data/selfdual-4d-polytope.txt [1172/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/transform/__init__.py [1173/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/transform/_rotation_groups.py [1174/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/transform/_rotation_spline.py [1175/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/transform/rotation.py [1176/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/transform/tests/__init__.py [1177/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/transform/tests/test_rigid_transform.py [1178/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/transform/tests/test_rotation.py [1179/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/transform/tests/test_rotation_groups.py [1180/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/spatial/transform/tests/test_rotation_spline.py [1181/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/cluster/__init__.py [1182/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/cluster/hierarchy.py [1183/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/cluster/vq.py [1184/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/cluster/tests/__init__.py [1185/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/cluster/tests/hierarchy_test_data.py [1186/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/cluster/tests/test_disjoint_set.py [1187/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/cluster/tests/test_hierarchy.py [1188/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/cluster/tests/test_vq.py [1189/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/constants/__init__.py [1190/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/constants/_codata.py [1191/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/constants/_constants.py [1192/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/constants/codata.py [1193/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/constants/constants.py [1194/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/constants/tests/__init__.py [1195/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/constants/tests/test_codata.py [1196/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/constants/tests/test_constants.py [1197/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fftpack/__init__.py [1198/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fftpack/_basic.py [1199/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fftpack/_helper.py [1200/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fftpack/_pseudo_diffs.py [1201/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fftpack/_realtransforms.py [1202/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fftpack/basic.py [1203/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fftpack/helper.py [1204/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fftpack/pseudo_diffs.py [1205/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fftpack/realtransforms.py [1206/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fftpack/tests/__init__.py [1207/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fftpack/tests/test_basic.py [1208/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fftpack/tests/test_helper.py [1209/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fftpack/tests/test_import.py [1210/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fftpack/tests/test_pseudo_diffs.py [1211/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fftpack/tests/test_real_transforms.py [1212/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fftpack/tests/fftw_double_ref.npz [1213/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fftpack/tests/fftw_longdouble_ref.npz [1214/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fftpack/tests/fftw_single_ref.npz [1215/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/fftpack/tests/test.npz [1216/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_ivp/__init__.py [1217/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_ivp/base.py [1218/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_ivp/bdf.py [1219/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_ivp/common.py [1220/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_ivp/dop853_coefficients.py [1221/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_ivp/ivp.py [1222/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_ivp/lsoda.py [1223/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_ivp/radau.py [1224/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_ivp/rk.py [1225/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_ivp/tests/__init__.py [1226/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_ivp/tests/test_ivp.py [1227/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_ivp/tests/test_rk.py [1228/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_rules/__init__.py [1229/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_rules/_base.py [1230/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_rules/_gauss_kronrod.py [1231/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_rules/_gauss_legendre.py [1232/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_rules/_genz_malik.py [1233/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/tests/__init__.py [1234/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/tests/test__quad_vec.py [1235/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/tests/test_banded_ode_solvers.py [1236/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/tests/test_bvp.py [1237/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/tests/test_integrate.py [1238/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/tests/test_odeint_jac.py [1239/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/tests/test_quadpack.py [1240/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/tests/test_quadrature.py [1241/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/tests/test_tanhsinh.py [1242/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/tests/test_cubature.py [1243/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/__init__.py [1244/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_bvp.py [1245/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_lebedev.py [1246/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_ode.py [1247/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_quad_vec.py [1248/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_quadrature.py [1249/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_odepack_py.py [1250/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_quadpack_py.py [1251/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_tanhsinh.py [1252/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/_cubature.py [1253/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/dop.py [1254/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/lsoda.py [1255/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/odepack.py [1256/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/quadpack.py [1257/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/integrate/vode.py [1258/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/differentiate/__init__.py [1259/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/differentiate/_differentiate.py [1260/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/differentiate/tests/__init__.py [1261/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/differentiate/tests/test_differentiate.py [1262/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/__init__.py [1263/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/_support_alternative_backends.py [1264/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/_signal_api.py [1265/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/_delegators.py [1266/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/_arraytools.py [1267/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/_spline_filters.py [1268/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/_czt.py [1269/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/_filter_design.py [1270/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/_fir_filter_design.py [1271/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/_lti_conversion.py [1272/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/_ltisys.py [1273/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/_max_len_seq.py [1274/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/_peak_finding.py [1275/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/_polyutils.py [1276/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/_savitzky_golay.py [1277/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/_short_time_fft.py [1278/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/_signaltools.py [1279/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/_spectral_py.py [1280/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/_spline.pyi [1281/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/_upfirdn.py [1282/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/_waveforms.py [1283/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/_wavelets.py [1284/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/bsplines.py [1285/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/filter_design.py [1286/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/fir_filter_design.py [1287/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/lti_conversion.py [1288/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/ltisys.py [1289/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/signaltools.py [1290/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/spectral.py [1291/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/spline.py [1292/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/waveforms.py [1293/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/wavelets.py [1294/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/windows/__init__.py [1295/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/windows/_windows.py [1296/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/windows/windows.py [1297/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/tests/__init__.py [1298/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/tests/_scipy_spectral_test_shim.py [1299/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/tests/mpsig.py [1300/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/tests/test_array_tools.py [1301/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/tests/test_bsplines.py [1302/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/tests/test_splines.py [1303/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/tests/test_cont2discrete.py [1304/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/tests/test_czt.py [1305/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/tests/test_dltisys.py [1306/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/tests/test_filter_design.py [1307/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/tests/test_fir_filter_design.py [1308/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/tests/test_ltisys.py [1309/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/tests/test_max_len_seq.py [1310/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/tests/test_peak_finding.py [1311/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/tests/test_result_type.py [1312/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/tests/test_savitzky_golay.py [1313/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/tests/test_short_time_fft.py [1314/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/tests/test_signaltools.py [1315/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/tests/test_spectral.py [1316/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/tests/test_upfirdn.py [1317/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/tests/test_waveforms.py [1318/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/tests/test_wavelets.py [1319/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/signal/tests/test_windows.py [1320/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/__init__.py [1321/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/_bsplines.py [1322/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/_bary_rational.py [1323/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/_cubic.py [1324/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/_fitpack_impl.py [1325/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/_fitpack_py.py [1326/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/_fitpack2.py [1327/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/_fitpack_repro.py [1328/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/_interpolate.py [1329/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/_ndgriddata.py [1330/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/_pade.py [1331/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/_polyint.py [1332/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/_rbf.py [1333/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/_rbfinterp.py [1334/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/_rgi.py [1335/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/_ndbspline.py [1336/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/dfitpack.py [1337/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/fitpack.py [1338/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/fitpack2.py [1339/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/interpolate.py [1340/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/ndgriddata.py [1341/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/interpnd.py [1342/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/polyint.py [1343/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/rbf.py [1344/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/tests/__init__.py [1345/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/tests/test_bary_rational.py [1346/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/tests/test_bsplines.py [1347/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/tests/test_fitpack.py [1348/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/tests/test_fitpack2.py [1349/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/tests/test_gil.py [1350/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/tests/test_interpnd.py [1351/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/tests/test_interpolate.py [1352/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/tests/test_ndgriddata.py [1353/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/tests/test_pade.py [1354/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/tests/test_polyint.py [1355/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/tests/test_rbf.py [1356/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/tests/test_rbfinterp.py [1357/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/tests/test_rgi.py [1358/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/tests/data/bug-1310.npz [1359/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/tests/data/estimate_gradients_hang.npy [1360/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/interpolate/tests/data/gcvspl.npz [1361/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/__init__.py [1362/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/_ndimage_api.py [1363/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/_delegators.py [1364/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/_support_alternative_backends.py [1365/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/_filters.py [1366/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/_fourier.py [1367/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/_interpolation.py [1368/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/_measurements.py [1369/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/_morphology.py [1370/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/_ni_docstrings.py [1371/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/_ni_support.py [1372/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/filters.py [1373/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/fourier.py [1374/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/interpolation.py [1375/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/measurements.py [1376/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/morphology.py [1377/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/tests/__init__.py [1378/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/tests/dots.png [1379/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/tests/test_c_api.py [1380/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/tests/test_datatypes.py [1381/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/tests/test_filters.py [1382/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/tests/test_fourier.py [1383/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/tests/test_interpolation.py [1384/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/tests/test_measurements.py [1385/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/tests/test_morphology.py [1386/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/tests/test_ni_support.py [1387/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/tests/test_splines.py [1388/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/tests/data/label_inputs.txt [1389/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/tests/data/label_results.txt [1390/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/ndimage/tests/data/label_strels.txt [1391/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/odr/__init__.py [1392/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/odr/_add_newdocs.py [1393/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/odr/_models.py [1394/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/odr/_odrpack.py [1395/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/odr/models.py [1396/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/odr/odrpack.py [1397/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/odr/tests/__init__.py [1398/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/odr/tests/test_odr.py [1399/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/datasets/__init__.py [1400/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/datasets/_fetchers.py [1401/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/datasets/_registry.py [1402/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/datasets/_download_all.py [1403/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/datasets/_utils.py [1404/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/datasets/tests/__init__.py [1405/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/datasets/tests/test_data.py [1406/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/misc/__init__.py [1407/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/misc/common.py [1408/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/scipy/misc/doccer.py [1409/1409] /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2/.mesonpy-w59wa2wy/scipy/__config__.py Preparing metadata (pyproject.toml): finished with status 'done' Building wheels for collected packages: scipy Building wheel for scipy (pyproject.toml): started Running command Building wheel for scipy (pyproject.toml) Building wheel for scipy (pyproject.toml): finished with status 'done' Created wheel for scipy: filename=scipy-1.16.2-cp314-cp314-linux_ppc64le.whl size=138970216 sha256=cf176c1ad77bf9df97a7c11f0096da82cc7f5a137e69c4380df8c55e7d58faba Stored in directory: /builddir/.cache/pip/wheels/6a/ed/9b/478dffa9ff3863d5e54ccaa0da0de4087f47f2467469a646f9 Successfully built scipy + RPM_EC=0 ++ jobs -p + exit 0 Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.KyAPe0 + umask 022 + cd /builddir/build/BUILD/scipy-1.16.2-build + '[' /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT '!=' / ']' + rm -rf /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT ++ dirname /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT + mkdir -p /builddir/build/BUILD/scipy-1.16.2-build + mkdir /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT + CFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection ' + export CFLAGS + CXXFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection ' + export CXXFLAGS + FFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib64/gfortran/modules ' + export FFLAGS + FCFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib64/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Clink-arg=-specs=/usr/lib/rpm/redhat/redhat-package-notes --cap-lints=warn' + export RUSTFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib64: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + cd scipy-1.16.2 ++ ls /builddir/build/BUILD/scipy-1.16.2-build/pyproject-wheeldir/scipy-1.16.2-cp314-cp314-linux_ppc64le.whl ++ sed -E 's/([^-]+)-([^-]+)-.+\.whl/\1==\2/' ++ xargs basename --multiple + specifier=scipy==1.16.2 + '[' -z scipy==1.16.2 ']' + TMPDIR=/builddir/build/BUILD/scipy-1.16.2-build/.pyproject-builddir + /usr/bin/python3 -m pip install --root /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT --prefix /usr --no-deps --disable-pip-version-check --progress-bar off --verbose --ignore-installed --no-warn-script-location --no-index --no-cache-dir --find-links /builddir/build/BUILD/scipy-1.16.2-build/pyproject-wheeldir scipy==1.16.2 Using pip 25.3 from /usr/lib/python3.14/site-packages/pip (python 3.14) Looking in links: /builddir/build/BUILD/scipy-1.16.2-build/pyproject-wheeldir Processing /builddir/build/BUILD/scipy-1.16.2-build/pyproject-wheeldir/scipy-1.16.2-cp314-cp314-linux_ppc64le.whl Installing collected packages: scipy Successfully installed scipy-1.16.2 + '[' -d /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/bin ']' + rm -f /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2-2.fc44.ppc64le-pyproject-ghost-distinfo + site_dirs=() + '[' -d /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib/python3.14/site-packages ']' + '[' /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages '!=' /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib/python3.14/site-packages ']' + '[' -d /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages ']' + site_dirs+=("/usr/lib64/python3.14/site-packages") + for site_dir in ${site_dirs[@]} + for distinfo in /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT$site_dir/*.dist-info + echo '%ghost %dir /usr/lib64/python3.14/site-packages/scipy-1.16.2.dist-info' + sed -i s/pip/rpm/ /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy-1.16.2.dist-info/INSTALLER + PYTHONPATH=/usr/lib/rpm/redhat + /usr/bin/python3 -B /usr/lib/rpm/redhat/pyproject_preprocess_record.py --buildroot /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT --record /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy-1.16.2.dist-info/RECORD --output /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2-2.fc44.ppc64le-pyproject-record + rm -fv /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy-1.16.2.dist-info/RECORD removed '/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy-1.16.2.dist-info/RECORD' removed '/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy-1.16.2.dist-info/REQUESTED' + rm -fv /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy-1.16.2.dist-info/REQUESTED ++ wc -l /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2-2.fc44.ppc64le-pyproject-ghost-distinfo ++ cut -f1 '-d ' + lines=1 + '[' 1 -ne 1 ']' + RPM_FILES_ESCAPE=4.19 + /usr/bin/python3 /usr/lib/rpm/redhat/pyproject_save_files.py --output-files /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2-2.fc44.ppc64le-pyproject-files --output-modules /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2-2.fc44.ppc64le-pyproject-modules --buildroot /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT --sitelib /usr/lib/python3.14/site-packages --sitearch /usr/lib64/python3.14/site-packages --python-version 3.14 --pyproject-record /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2-2.fc44.ppc64le-pyproject-record --prefix /usr scipy + '[' -z sP ']' + shebang_flags=-kasP + /usr/bin/python3 -B /usr/lib/rpm/redhat/pathfix.py -pni /usr/bin/python3 -kasP /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/_uarray') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/_uarray/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/common') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/common/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/cupy') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/cupy/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/dask') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/dask/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/dask/array') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/dask/array/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/numpy') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/numpy/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/torch') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/torch/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/_utils') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/_utils/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/subsolvers') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/subsolvers/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/utils') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/utils/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/cobyla') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/cobyla/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/cluster') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/cluster/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/cluster/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/cluster/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/constants') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/constants/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/constants/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/constants/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/datasets') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/datasets/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/datasets/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/datasets/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/differentiate') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/differentiate/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/differentiate/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/differentiate/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_pocketfft') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_pocketfft/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_pocketfft/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_pocketfft/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_rules') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_rules/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/data') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_fast_matrix_market') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_fast_matrix_market/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_harwell_boeing') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_harwell_boeing/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_harwell_boeing/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_harwell_boeing/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/arff') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/arff/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/arff/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/arff/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/arff/tests/data') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/tests/data') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/tests/data') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/_cython_examples') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/data') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/misc') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/misc/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/data') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/odr') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/odr/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/odr/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/odr/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_highspy') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_highspy/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_lsq') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_lsq/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_shgo_lib') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_shgo_lib/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trlib') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trlib/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/cython_optimize') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/cython_optimize/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/_cython_examples') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/windows') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/windows/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_dsolve') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_dsolve/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_dsolve/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_dsolve/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/arpack') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/arpack/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/arpack/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/arpack/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/lobpcg') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/lobpcg/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/lobpcg/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/lobpcg/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_propack') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/data') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/qhull_src') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/data') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/_cython_examples') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/data') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/data/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats') /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/__config__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_distributor_init.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/conftest.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/version.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/_array_api.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/_array_api_compat_vendor.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/_array_api_no_0d.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/_bunch.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/_ccallback.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/_disjoint_set.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/_docscrape.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/_elementwise_iterative_method.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/_gcutils.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/_pep440.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/_sparse.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/_testutils.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/_threadsafety.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/_tmpdirs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/_util.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/decorator.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/deprecation.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/doccer.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/uarray.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/_uarray/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/_uarray/_backend.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/_internal.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/common/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/common/_aliases.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/common/_fft.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/common/_helpers.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/common/_linalg.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/common/_typing.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/cupy/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/cupy/_aliases.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/cupy/_info.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/cupy/_typing.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/cupy/fft.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/cupy/linalg.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/dask/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/dask/array/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/dask/array/_aliases.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/dask/array/_info.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/dask/array/fft.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/dask/array/linalg.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/numpy/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/numpy/_aliases.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/numpy/_info.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/numpy/_typing.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/numpy/fft.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/numpy/linalg.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/torch/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/torch/_aliases.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/torch/_info.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/torch/_typing.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/torch/fft.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/torch/linalg.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_delegation.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/testing.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/_at.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/_backends.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/_funcs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/_lazy.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/_testing.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/_utils/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/_utils/_compat.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/_utils/_helpers.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/_utils/_typing.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/framework.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/main.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/models.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/problem.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/settings.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/subsolvers/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/subsolvers/geometry.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/subsolvers/optim.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/utils/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/utils/exceptions.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/utils/math.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/utils/versions.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/cobyla/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/cobyla/cobyla.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/cobyla/cobylb.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/cobyla/geometry.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/cobyla/initialize.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/cobyla/trustregion.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/cobyla/update.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/_bounds.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/_linear_constraints.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/_nonlinear_constraints.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/_project.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/checkbreak.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/consts.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/evaluate.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/history.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/infos.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/linalg.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/message.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/powalg.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/preproc.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/present.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/ratio.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/redrho.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/selectx.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/test__gcutils.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/test__pep440.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/test__testutils.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/test__threadsafety.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/test__util.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/test_array_api.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/test_bunch.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/test_ccallback.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/test_config.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/test_deprecation.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/test_doccer.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/test_import_cycles.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/test_public_api.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/test_scipy_version.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/test_tmpdirs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/test_warnings.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/cluster/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/cluster/hierarchy.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/cluster/vq.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/cluster/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/cluster/tests/hierarchy_test_data.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/cluster/tests/test_disjoint_set.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/cluster/tests/test_hierarchy.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/cluster/tests/test_vq.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/constants/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/constants/_codata.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/constants/_constants.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/constants/codata.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/constants/constants.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/constants/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/constants/tests/test_codata.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/constants/tests/test_constants.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/datasets/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/datasets/_download_all.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/datasets/_fetchers.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/datasets/_registry.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/datasets/_utils.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/datasets/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/datasets/tests/test_data.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/differentiate/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/differentiate/_differentiate.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/differentiate/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/differentiate/tests/test_differentiate.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_backend.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_basic.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_basic_backend.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_debug_backends.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_fftlog.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_fftlog_backend.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_helper.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_realtransforms.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_realtransforms_backend.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_pocketfft/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_pocketfft/basic.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_pocketfft/helper.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_pocketfft/realtransforms.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_pocketfft/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_pocketfft/tests/test_basic.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_pocketfft/tests/test_real_transforms.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/tests/mock_backend.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/tests/test_backend.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/tests/test_basic.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/tests/test_fftlog.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/tests/test_helper.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/tests/test_multithreading.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/tests/test_real_transforms.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/_basic.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/_helper.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/_pseudo_diffs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/_realtransforms.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/basic.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/helper.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/pseudo_diffs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/realtransforms.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/tests/test_basic.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/tests/test_helper.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/tests/test_import.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/tests/test_pseudo_diffs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/tests/test_real_transforms.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_bvp.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_cubature.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_lebedev.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ode.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_odepack_py.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_quad_vec.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_quadpack_py.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_quadrature.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_tanhsinh.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/dop.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/lsoda.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/odepack.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/quadpack.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/vode.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/base.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/bdf.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/common.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/dop853_coefficients.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/ivp.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/lsoda.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/radau.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/rk.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/tests/test_ivp.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/tests/test_rk.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_rules/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_rules/_base.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_rules/_gauss_kronrod.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_rules/_gauss_legendre.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_rules/_genz_malik.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/test__quad_vec.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/test_banded_ode_solvers.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/test_bvp.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/test_cubature.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/test_integrate.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/test_odeint_jac.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/test_quadpack.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/test_quadrature.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/test_tanhsinh.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/_bary_rational.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/_bsplines.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/_cubic.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/_fitpack2.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/_fitpack_impl.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/_fitpack_py.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/_fitpack_repro.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/_interpolate.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/_ndbspline.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/_ndgriddata.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/_pade.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/_polyint.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/_rbf.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/_rbfinterp.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/_rgi.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/dfitpack.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/fitpack.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/fitpack2.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/interpnd.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/interpolate.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/ndgriddata.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/polyint.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/rbf.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/test_bary_rational.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/test_bsplines.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/test_fitpack.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/test_fitpack2.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/test_gil.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/test_interpnd.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/test_interpolate.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/test_ndgriddata.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/test_pade.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/test_polyint.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/test_rbf.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/test_rbfinterp.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/test_rgi.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_fortran.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_idl.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_mmio.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_netcdf.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/harwell_boeing.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/idl.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/mmio.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/netcdf.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/wavfile.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_fast_matrix_market/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_harwell_boeing/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_harwell_boeing/_fortran_format_parser.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_harwell_boeing/hb.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_harwell_boeing/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_harwell_boeing/tests/test_fortran_format.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_harwell_boeing/tests/test_hb.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/arff/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/arff/_arffread.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/arff/arffread.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/arff/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/arff/tests/test_arffread.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/_byteordercodes.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/_mio.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/_mio4.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/_mio5.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/_mio5_params.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/_miobase.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/byteordercodes.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/mio.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/mio4.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/mio5.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/mio5_params.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/mio5_utils.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/mio_utils.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/miobase.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/streams.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/tests/test_byteordercodes.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/tests/test_mio.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/tests/test_mio5_utils.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/tests/test_mio_funcs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/tests/test_mio_utils.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/tests/test_miobase.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/tests/test_pathological.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/tests/test_streams.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/tests/test_fortran.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/tests/test_idl.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/tests/test_mmio.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/tests/test_netcdf.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/tests/test_paths.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/tests/test_wavfile.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/_basic.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/_decomp.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/_decomp_cholesky.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/_decomp_cossin.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/_decomp_ldl.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/_decomp_lu.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/_decomp_polar.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/_decomp_qr.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/_decomp_qz.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/_decomp_schur.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/_decomp_svd.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/_expm_frechet.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/_matfuncs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/_matfuncs_inv_ssq.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/_matfuncs_sqrtm.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/_misc.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/_procrustes.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/_sketches.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/_solvers.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/_special_matrices.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/_testutils.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/basic.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/blas.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/decomp.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/decomp_cholesky.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/decomp_lu.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/decomp_qr.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/decomp_schur.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/decomp_svd.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/interpolative.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/lapack.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/matfuncs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/misc.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/special_matrices.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/test_basic.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/test_batch.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/test_blas.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/test_cython_blas.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/test_cython_lapack.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/test_cythonized_array_utils.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/test_decomp.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/test_decomp_cholesky.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/test_decomp_cossin.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/test_decomp_ldl.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/test_decomp_lu.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/test_decomp_polar.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/test_decomp_update.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/test_extending.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/test_fblas.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/test_interpolative.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/test_lapack.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/test_matfuncs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/test_matmul_toeplitz.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/test_procrustes.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/test_sketches.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/test_solve_toeplitz.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/test_solvers.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/test_special_matrices.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/misc/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/misc/common.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/misc/doccer.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/_delegators.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/_filters.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/_fourier.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/_interpolation.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/_measurements.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/_morphology.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/_ndimage_api.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/_ni_docstrings.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/_ni_support.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/_support_alternative_backends.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/filters.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/fourier.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/interpolation.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/measurements.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/morphology.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/test_c_api.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/test_datatypes.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/test_filters.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/test_fourier.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/test_interpolation.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/test_measurements.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/test_morphology.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/test_ni_support.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/test_splines.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/odr/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/odr/_add_newdocs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/odr/_models.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/odr/_odrpack.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/odr/models.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/odr/odrpack.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/odr/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/odr/tests/test_odr.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_basinhopping.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_bracket.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_chandrupatla.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_cobyla_py.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_cobyqa_py.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_constraints.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_dcsrch.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_differentiable_functions.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_differentialevolution.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_direct_py.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_dual_annealing.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_elementwise.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_hessian_update_strategy.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_isotonic.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_lbfgsb_py.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_linesearch.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_linprog.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_linprog_doc.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_linprog_highs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_linprog_ip.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_linprog_rs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_linprog_simplex.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_linprog_util.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_milp.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_minimize.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_minpack_py.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_nnls.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_nonlin.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_numdiff.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_optimize.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_qap.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_remove_redundancy.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_root.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_root_scalar.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_shgo.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_slsqp_py.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_spectral.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_tnc.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_dogleg.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_exact.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_krylov.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_ncg.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_tstutils.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_zeros_py.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/cobyla.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/elementwise.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/lbfgsb.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/linesearch.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/minpack.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/minpack2.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/moduleTNC.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/nonlin.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/optimize.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/slsqp.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tnc.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/zeros.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_highspy/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_highspy/_highs_wrapper.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_lsq/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_lsq/bvls.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_lsq/common.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_lsq/dogbox.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_lsq/least_squares.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_lsq/lsq_linear.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_lsq/trf.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_lsq/trf_linear.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_shgo_lib/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_shgo_lib/_complex.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_shgo_lib/_vertex.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trlib/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/canonical_constraint.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/equality_constrained_sqp.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/minimize_trustregion_constr.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/projections.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/qp_subproblem.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/report.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/tr_interior_point.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/tests/test_canonical_constraint.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/tests/test_nested_minimize.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/tests/test_projections.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/tests/test_qp_subproblem.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/tests/test_report.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/cython_optimize/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test__basinhopping.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test__differential_evolution.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test__dual_annealing.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test__linprog_clean_inputs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test__numdiff.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test__remove_redundancy.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test__root.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test__shgo.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test__spectral.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_bracket.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_chandrupatla.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_cobyla.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_cobyqa.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_constraint_conversion.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_constraints.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_cython_optimize.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_differentiable_functions.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_direct.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_extending.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_hessian_update_strategy.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_isotonic_regression.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_lbfgsb_hessinv.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_lbfgsb_setulb.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_least_squares.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_linear_assignment.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_linesearch.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_linprog.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_lsq_common.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_lsq_linear.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_milp.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_minimize_constrained.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_minpack.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_nnls.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_nonlin.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_optimize.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_quadratic_assignment.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_regression.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_slsqp.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_tnc.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_trustregion.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_trustregion_exact.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_trustregion_krylov.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/test_zeros.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/_arraytools.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/_czt.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/_delegators.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/_filter_design.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/_fir_filter_design.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/_lti_conversion.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/_ltisys.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/_max_len_seq.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/_peak_finding.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/_polyutils.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/_savitzky_golay.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/_short_time_fft.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/_signal_api.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/_signaltools.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/_spectral_py.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/_spline_filters.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/_support_alternative_backends.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/_upfirdn.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/_waveforms.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/_wavelets.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/bsplines.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/filter_design.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/fir_filter_design.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/lti_conversion.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/ltisys.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/signaltools.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/spectral.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/spline.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/waveforms.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/wavelets.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/_scipy_spectral_test_shim.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/mpsig.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/test_array_tools.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/test_bsplines.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/test_cont2discrete.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/test_czt.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/test_dltisys.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/test_filter_design.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/test_fir_filter_design.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/test_ltisys.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/test_max_len_seq.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/test_peak_finding.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/test_result_type.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/test_savitzky_golay.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/test_short_time_fft.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/test_signaltools.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/test_spectral.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/test_splines.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/test_upfirdn.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/test_waveforms.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/test_wavelets.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/test_windows.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/windows/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/windows/_windows.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/windows/windows.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/_base.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/_bsr.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/_compressed.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/_construct.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/_coo.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/_csc.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/_csr.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/_data.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/_dia.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/_dok.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/_extract.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/_index.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/_lil.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/_matrix.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/_matrix_io.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/_spfuncs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/_sputils.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/base.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/bsr.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/compressed.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/construct.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/coo.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csc.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csr.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/data.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/dia.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/dok.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/extract.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/lil.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/sparsetools.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/spfuncs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/sputils.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/_laplacian.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/_validation.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/test_connected_components.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/test_conversions.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/test_flow.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/test_graph_laplacian.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/test_matching.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/test_pydata_sparse.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/test_reordering.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/test_shortest_path.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/test_spanning_tree.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/test_traversal.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_expm_multiply.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_interface.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_matfuncs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_norm.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_onenormest.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_special_sparse_arrays.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_svdp.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/dsolve.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/eigen.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/interface.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/isolve.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/matfuncs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_dsolve/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_dsolve/_add_newdocs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_dsolve/linsolve.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_dsolve/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_dsolve/tests/test_linsolve.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/_svds.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/_svds_doc.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/arpack/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/arpack/arpack.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/arpack/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/arpack/tests/test_arpack.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/lobpcg/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/lobpcg/lobpcg.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/lobpcg/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/tests/test_svds.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/_gcrotmk.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/iterative.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/lgmres.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/lsmr.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/lsqr.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/minres.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tfqmr.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/utils.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tests/test_gcrotmk.py: updating /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tests/test_iterative.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tests/test_lgmres.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tests/test_lsmr.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tests/test_lsqr.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tests/test_minres.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tests/test_utils.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/tests/test_expm_multiply.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/tests/test_interface.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/tests/test_matfuncs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/tests/test_norm.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/tests/test_onenormest.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/tests/test_propack.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/tests/test_pydata_sparse.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/tests/test_special_sparse_arrays.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/test_arithmetic1d.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/test_array_api.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/test_base.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/test_common1d.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/test_construct.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/test_coo.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/test_csc.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/test_csr.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/test_dok.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/test_extract.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/test_indexing1d.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/test_matrix_io.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/test_minmax1d.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/test_sparsetools.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/test_spfuncs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/test_sputils.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/_geometric_slerp.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/_kdtree.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/_plotutils.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/_procrustes.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/_spherical_voronoi.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/ckdtree.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/distance.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/kdtree.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/qhull.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/test__plotutils.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/test__procrustes.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/test_distance.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/test_hausdorff.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/test_kdtree.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/test_qhull.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/test_slerp.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/test_spherical_voronoi.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/_rotation_groups.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/_rotation_spline.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/rotation.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/tests/test_rigid_transform.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/tests/test_rotation.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/tests/test_rotation_groups.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/tests/test_rotation_spline.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_add_newdocs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_basic.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_ellip_harm.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_input_validation.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_lambertw.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_logsumexp.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_mptestutils.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_multiufuncs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_orthogonal.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_sf_error.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_spfun_stats.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_spherical_bessel.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_support_alternative_backends.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_testutils.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/add_newdocs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/basic.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/orthogonal.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/sf_error.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/specfun.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/spfun_stats.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/cosine_cdf.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/expn_asy.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/gammainc_asy.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/gammainc_data.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/hyp2f1_data.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/lambertw.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/loggamma.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/struve_convergence.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/utils.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/wright_bessel.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/wright_bessel_data.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/wrightomega.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/zetac.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_basic.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_bdtr.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_boost_ufuncs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_boxcox.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_cdflib.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_cdft_asymptotic.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_cephes_intp_cast.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_cosine_distr.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_cython_special.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_data.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_dd.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_digamma.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_ellip_harm.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_erfinv.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_exponential_integrals.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_extending.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_faddeeva.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_gamma.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_gammainc.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_hyp2f1.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_hypergeometric.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_iv_ratio.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_kolmogorov.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_lambertw.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_legendre.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_log1mexp.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_loggamma.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_logit.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_logsumexp.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_mpmath.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_nan_inputs.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_ndtr.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_ndtri_exp.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_orthogonal.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_orthogonal_eval.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_owens_t.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_pcf.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_pdtr.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_powm1.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_precompute_expn_asy.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_precompute_gammainc.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_precompute_utils.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_round.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_sf_error.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_sici.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_specfun.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_spence.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_spfun_stats.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_sph_harm.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_spherical_bessel.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_support_alternative_backends.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_trig.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_ufunc_signatures.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_wright_bessel.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_wrightomega.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/test_zeta.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/data/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_axis_nan_policy.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_binned_statistic.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_binomtest.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_bws_test.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_censored_data.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_common.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_constants.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_continued_fraction.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_continuous_distns.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_correlation.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_covariance.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_crosstab.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_discrete_distns.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_distn_infrastructure.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_distr_params.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_distribution_infrastructure.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_entropy.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_finite_differences.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_fit.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_hypotests.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_kde.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_ksstats.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_mannwhitneyu.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_mgc.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_morestats.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_mstats_basic.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_mstats_extras.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_multicomp.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_multivariate.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_new_distributions.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_odds_ratio.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_page_trend_test.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_probability_distribution.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_qmc.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_qmvnt.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_quantile.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_relative_risk.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_resampling.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_result_classes.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_sampling.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_sensitivity_analysis.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_stats_mstats_common.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_stats_py.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_survival.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_tukeylambda_stats.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_variation.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_warnings_errors.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_wilcoxon.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/biasedurn.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/contingency.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/distributions.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/kde.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/morestats.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/mstats.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/mstats_basic.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/mstats_extras.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/mvn.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/qmc.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/sampling.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/stats.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_levy_stable/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_rcont/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_unuran/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__init__.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/common_tests.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_axis_nan_policy.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_binned_statistic.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_censored_data.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_contingency.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_continued_fraction.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_continuous.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_continuous_basic.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_continuous_fit_censored.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_correlation.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_crosstab.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_discrete_basic.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_discrete_distns.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_distributions.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_entropy.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_fast_gen_inversion.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_fit.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_hypotests.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_kdeoth.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_marray.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_mgc.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_morestats.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_mstats_basic.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_mstats_extras.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_multicomp.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_multivariate.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_odds_ratio.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_qmc.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_quantile.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_rank.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_relative_risk.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_resampling.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_sampling.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_sensitivity_analysis.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_stats.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_survival.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_tukeylambda_stats.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_variation.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/data/_mvt.py: no change /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/data/fisher_exact_results_from_r.py: no change recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_levy_stable') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_levy_stable/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_rcont') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_rcont/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_unuran') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_unuran/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/data') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/data/__pycache__') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/data/levy_stable') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/data/nist_anova') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/data/nist_linregress') recursedown('/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy-1.16.2.dist-info') + /usr/bin/find-debuginfo -j2 --strict-build-id -m -i --build-id-seed 1.16.2-2.fc44 --unique-debug-suffix -1.16.2-2.fc44.ppc64le --unique-debug-src-base scipy-1.16.2-2.fc44.ppc64le --run-dwz --dwz-low-mem-die-limit 10000000 --dwz-max-die-limit 50000000 -S debugsourcefiles.list /builddir/build/BUILD/scipy-1.16.2-build/scipy-1.16.2 find-debuginfo: starting Extracting debug info from 114 files DWARF-compressing 114 files sepdebugcrcfix: Updated 114 CRC32s, 0 CRC32s did match. Creating .debug symlinks for symlinks to ELF files Copying sources found by 'debugedit -l' to /usr/src/debug/scipy-1.16.2-2.fc44.ppc64le cpio: .mesonpy-w59wa2wy/: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/debug.h: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/_cyutility.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/_lib/_ccallback_c.cpython-314-powerpc64le-linux-gnu.so.p/_ccallback_c.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/_lib/_test_deprecation_call.cpython-314-powerpc64le-linux-gnu.so.p/_test_deprecation_call.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/_lib/_test_deprecation_def.cpython-314-powerpc64le-linux-gnu.so.p/_test_deprecation_def.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/_lib/messagestream.cpython-314-powerpc64le-linux-gnu.so.p/messagestream.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/cluster/_hierarchy.cpython-314-powerpc64le-linux-gnu.so.p/_hierarchy.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/cluster/_optimal_leaf_ordering.cpython-314-powerpc64le-linux-gnu.so.p/_optimal_leaf_ordering.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/cluster/_vq.cpython-314-powerpc64le-linux-gnu.so.p/_vq.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/fftpack/convolve.cpython-314-powerpc64le-linux-gnu.so.p/convolve.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/integrate/_dop.cpython-314-powerpc64le-linux-gnu.so.p/_dop-f2pywrappers.f: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/integrate/_dop.cpython-314-powerpc64le-linux-gnu.so.p/_dopmodule.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/integrate/_lsoda.cpython-314-powerpc64le-linux-gnu.so.p/_lsoda-f2pywrappers.f: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/integrate/_lsoda.cpython-314-powerpc64le-linux-gnu.so.p/_lsodamodule.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/integrate/_test_odeint_banded.cpython-314-powerpc64le-linux-gnu.so.p/_test_odeint_banded-f2pywrappers.f: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/integrate/_test_odeint_banded.cpython-314-powerpc64le-linux-gnu.so.p/_test_odeint_bandedmodule.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/integrate/_vode.cpython-314-powerpc64le-linux-gnu.so.p/_vode-f2pywrappers.f: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/integrate/_vode.cpython-314-powerpc64le-linux-gnu.so.p/_vodemodule.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/interpolate/_dfitpack.cpython-314-powerpc64le-linux-gnu.so.p/_dfitpack-f2pywrappers.f: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/interpolate/_dfitpack.cpython-314-powerpc64le-linux-gnu.so.p/_dfitpackmodule.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/interpolate/_interpnd.cpython-314-powerpc64le-linux-gnu.so.p/_interpnd.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/interpolate/_ppoly.cpython-314-powerpc64le-linux-gnu.so.p/_ppoly.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/interpolate/_rbfinterp_pythran.cpython-314-powerpc64le-linux-gnu.so.p/_rbfinterp_pythran.cpp: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/interpolate/_rgi_cython.cpython-314-powerpc64le-linux-gnu.so.p/_rgi_cython.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/io/_test_fortran.cpython-314-powerpc64le-linux-gnu.so.p/_test_fortranmodule.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/io/matlab/_mio5_utils.cpython-314-powerpc64le-linux-gnu.so.p/_mio5_utils.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/io/matlab/_mio_utils.cpython-314-powerpc64le-linux-gnu.so.p/_mio_utils.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/io/matlab/_streams.cpython-314-powerpc64le-linux-gnu.so.p/_streams.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/linalg/_blas_subroutines.h: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/linalg/_cythonized_array_utils.cpython-314-powerpc64le-linux-gnu.so.p/_cythonized_array_utils.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/linalg/_decomp_interpolative.cpython-314-powerpc64le-linux-gnu.so.p/_decomp_interpolative.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/linalg/_decomp_lu_cython.cpython-314-powerpc64le-linux-gnu.so.p/_decomp_lu_cython.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/linalg/_decomp_update.cpython-314-powerpc64le-linux-gnu.so.p/_decomp_update.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/linalg/_fblasmodule.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/linalg/_flapackmodule.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/linalg/_lapack_subroutines.h: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/linalg/_linalg_pythran.cpython-314-powerpc64le-linux-gnu.so.p/_linalg_pythran.cpp: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/linalg/_matfuncs_sqrtm_triu.cpython-314-powerpc64le-linux-gnu.so.p/_matfuncs_sqrtm_triu.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/linalg/_solve_toeplitz.cpython-314-powerpc64le-linux-gnu.so.p/_solve_toeplitz.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/linalg/cython_blas.cpython-314-powerpc64le-linux-gnu.so.p/cython_blas.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/linalg/cython_lapack.cpython-314-powerpc64le-linux-gnu.so.p/cython_lapack.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/ndimage/_cytest.cpython-314-powerpc64le-linux-gnu.so.p/_cytest.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/ndimage/_ni_label.cpython-314-powerpc64le-linux-gnu.so.p/_ni_label.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/optimize/_bglu_dense.cpython-314-powerpc64le-linux-gnu.so.p/_bglu_dense.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/optimize/_group_columns.cpython-314-powerpc64le-linux-gnu.so.p/_group_columns.cpp: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/optimize/_lsq/givens_elimination.cpython-314-powerpc64le-linux-gnu.so.p/givens_elimination.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/optimize/_moduleTNC.cpython-314-powerpc64le-linux-gnu.so.p/_moduleTNC.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/optimize/_trlib/_trlib.cpython-314-powerpc64le-linux-gnu.so.p/_trlib.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/optimize/cython_optimize/_zeros.cpython-314-powerpc64le-linux-gnu.so.p/_zeros.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/signal/_max_len_seq_inner.cpython-314-powerpc64le-linux-gnu.so.p/_max_len_seq_inner.cpp: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/signal/_peak_finding_utils.cpython-314-powerpc64le-linux-gnu.so.p/_peak_finding_utils.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/signal/_sosfilt.cpython-314-powerpc64le-linux-gnu.so.p/_sosfilt.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/signal/_upfirdn_apply.cpython-314-powerpc64le-linux-gnu.so.p/_upfirdn_apply.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/sparse/_csparsetools.cpython-314-powerpc64le-linux-gnu.so.p/_csparsetools.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/sparse/csgraph/_flow.cpython-314-powerpc64le-linux-gnu.so.p/_flow.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/sparse/csgraph/_matching.cpython-314-powerpc64le-linux-gnu.so.p/_matching.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/sparse/csgraph/_min_spanning_tree.cpython-314-powerpc64le-linux-gnu.so.p/_min_spanning_tree.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/sparse/csgraph/_reordering.cpython-314-powerpc64le-linux-gnu.so.p/_reordering.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/sparse/csgraph/_shortest_path.cpython-314-powerpc64le-linux-gnu.so.p/_shortest_path.cpp: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/sparse/csgraph/_tools.cpython-314-powerpc64le-linux-gnu.so.p/_tools.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/sparse/csgraph/_traversal.cpython-314-powerpc64le-linux-gnu.so.p/_traversal.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/sparse/linalg/_eigen/arpack/_arpack-f2pywrappers.f: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/sparse/linalg/_eigen/arpack/_arpackmodule.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/sparse/linalg/_propack/_cpropack.cpython-314-powerpc64le-linux-gnu.so.p/_cpropack-f2pywrappers.f: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/sparse/linalg/_propack/_cpropack.cpython-314-powerpc64le-linux-gnu.so.p/_cpropackmodule.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/sparse/linalg/_propack/_dpropack.cpython-314-powerpc64le-linux-gnu.so.p/_dpropack-f2pywrappers.f: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/sparse/linalg/_propack/_dpropack.cpython-314-powerpc64le-linux-gnu.so.p/_dpropackmodule.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/sparse/linalg/_propack/_spropack.cpython-314-powerpc64le-linux-gnu.so.p/_spropack-f2pywrappers.f: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/sparse/linalg/_propack/_spropack.cpython-314-powerpc64le-linux-gnu.so.p/_spropackmodule.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/sparse/linalg/_propack/_zpropack.cpython-314-powerpc64le-linux-gnu.so.p/_zpropack-f2pywrappers.f: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/sparse/linalg/_propack/_zpropack.cpython-314-powerpc64le-linux-gnu.so.p/_zpropackmodule.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/sparse/sparsetools/bsr_impl.h: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/sparse/sparsetools/csc_impl.h: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/sparse/sparsetools/csr_impl.h: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/sparse/sparsetools/other_impl.h: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/sparse/sparsetools/sparsetools_impl.h: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/spatial/_ckdtree.cpython-314-powerpc64le-linux-gnu.so.p/_ckdtree.cpp: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/spatial/_hausdorff.cpython-314-powerpc64le-linux-gnu.so.p/_hausdorff.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/spatial/_qhull.cpython-314-powerpc64le-linux-gnu.so.p/_qhull.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/spatial/_voronoi.cpython-314-powerpc64le-linux-gnu.so.p/_voronoi.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/spatial/transform/_rigid_transform.cpython-314-powerpc64le-linux-gnu.so.p/_rigid_transform.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/spatial/transform/_rotation.cpython-314-powerpc64le-linux-gnu.so.p/_rotation.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/special/_comb.cpython-314-powerpc64le-linux-gnu.so.p/_comb.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/special/_ellip_harm_2.cpython-314-powerpc64le-linux-gnu.so.p/_ellip_harm_2.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/special/_specfun.cpython-314-powerpc64le-linux-gnu.so.p/_specfun.cpp: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/special/_test_internal.cpython-314-powerpc64le-linux-gnu.so.p/_test_internal.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/special/_ufuncs.cpython-314-powerpc64le-linux-gnu.so.p/_ufuncs.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/special/_ufuncs_cxx.cpython-314-powerpc64le-linux-gnu.so.p/_ufuncs_cxx.cpp: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/special/_ufuncs_cxx_defs.h: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/special/_ufuncs_defs.h: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/special/cython_special.cpython-314-powerpc64le-linux-gnu.so.p/cython_special.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/stats/_ansari_swilk_statistics.cpython-314-powerpc64le-linux-gnu.so.p/_ansari_swilk_statistics.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/stats/_biasedurn.cpython-314-powerpc64le-linux-gnu.so.p/_biasedurn.cpp: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/stats/_levy_stable/levyst.cpython-314-powerpc64le-linux-gnu.so.p/levyst.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/stats/_qmc_cy.cpython-314-powerpc64le-linux-gnu.so.p/_qmc_cy.cpp: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/stats/_qmvnt_cy.cpython-314-powerpc64le-linux-gnu.so.p/_qmvnt_cy.cpp: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/stats/_rcont/rcont.cpython-314-powerpc64le-linux-gnu.so.p/rcont.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/stats/_sobol.cpython-314-powerpc64le-linux-gnu.so.p/_sobol.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/stats/_stats.cpython-314-powerpc64le-linux-gnu.so.p/_stats.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/stats/_stats_pythran.cpython-314-powerpc64le-linux-gnu.so.p/_stats_pythran.cpp: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/scipy/stats/_unuran/unuran_wrapper.cpython-314-powerpc64le-linux-gnu.so.p/unuran_wrapper.c: Cannot stat: No such file or directory cpio: .mesonpy-w59wa2wy/stat.h: Cannot stat: No such file or directory find-debuginfo: done + /usr/lib/rpm/check-buildroot + /usr/lib/rpm/redhat/brp-ldconfig + COMPRESS='gzip -9 -n' + COMPRESS_EXT=.gz + /usr/lib/rpm/brp-compress + /usr/lib/rpm/redhat/brp-strip-lto /usr/bin/strip + /usr/lib/rpm/check-rpaths + /usr/lib/rpm/redhat/brp-mangle-shebangs + /usr/lib/rpm/brp-remove-la-files + /usr/lib/rpm/redhat/brp-python-rpm-in-distinfo + env /usr/lib/rpm/redhat/brp-python-bytecompile '' 1 0 -j2 Bytecompiling .py files below /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib/debug/usr/lib64/python3.14 using python3.14 Bytecompiling .py files below /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14 using python3.14 + /usr/lib/rpm/redhat/brp-python-hardlink + /usr/bin/add-det --brp -j2 /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/__pycache__/version.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/__pycache__/conftest.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/__pycache__/_distributor_init.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/__pycache__/__config__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/misc/__pycache__/doccer.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/misc/__pycache__/common.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/misc/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/datasets/__pycache__/_utils.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/datasets/__pycache__/_utils.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/datasets/__pycache__/_registry.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/datasets/__pycache__/_fetchers.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/datasets/__pycache__/_download_all.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/datasets/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/datasets/tests/__pycache__/test_data.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/datasets/tests/__pycache__/test_data.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/datasets/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/differentiate/__pycache__/_differentiate.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/differentiate/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/differentiate/tests/__pycache__/test_differentiate.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/__pycache__/conftest.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/differentiate/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/constants/__pycache__/_constants.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/differentiate/tests/__pycache__/test_differentiate.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/constants/__pycache__/_codata.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/constants/__pycache__/constants.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/constants/__pycache__/codata.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/constants/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/constants/tests/__pycache__/test_constants.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/constants/tests/__pycache__/test_codata.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/constants/tests/__pycache__/test_codata.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/constants/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/odr/__pycache__/odrpack.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/odr/__pycache__/models.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/constants/__pycache__/_codata.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/odr/__pycache__/_models.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/odr/__pycache__/_add_newdocs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/odr/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/odr/__pycache__/_odrpack.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/odr/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/__pycache__/measurements.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/__pycache__/interpolation.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/__pycache__/morphology.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/__pycache__/fourier.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/__pycache__/_measurements.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/__pycache__/filters.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/__pycache__/_support_alternative_backends.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/__pycache__/_ni_support.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/__pycache__/_ni_docstrings.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/__pycache__/_ni_docstrings.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/__pycache__/_ndimage_api.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/odr/tests/__pycache__/test_odr.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/__pycache__/_interpolation.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/__pycache__/_fourier.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/__pycache__/_morphology.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/__pycache__/_delegators.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/__pycache__/_filters.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/__pycache__/test_measurements.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/__pycache__/test_measurements.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/__pycache__/test_interpolation.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/__pycache__/test_splines.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/__pycache__/test_ni_support.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/__pycache__/test_ni_support.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/__pycache__/test_interpolation.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/__pycache__/test_fourier.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/__pycache__/test_morphology.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/__pycache__/test_filters.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/__pycache__/test_morphology.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/__pycache__/test_datatypes.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/__pycache__/test_datatypes.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/__pycache__/test_c_api.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/_pade.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/_ndgriddata.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/_ndbspline.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/ndimage/tests/__pycache__/test_filters.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/rbf.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/polyint.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/ndgriddata.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/interpolate.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/interpnd.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/fitpack2.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/fitpack.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/dfitpack.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/_interpolate.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/_rgi.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/_rbfinterp.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/_rbf.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/_polyint.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/_fitpack_py.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/_fitpack_repro.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/_fitpack_impl.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/_cubic.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/_fitpack2.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/_bsplines.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/_bary_rational.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_pade.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_ndgriddata.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_ndgriddata.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/__pycache__/_bsplines.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_interpolate.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_rgi.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_rgi.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_rbfinterp.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_rbfinterp.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_rbf.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_interpolate.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_rbf.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_polyint.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_polyint.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_gil.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_gil.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_fitpack2.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_fitpack2.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_fitpack.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_fitpack.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_interpnd.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_bsplines.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_interpnd.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_bary_rational.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_bary_rational.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/wavelets.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/waveforms.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/_ltisys.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/spline.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/spectral.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/signaltools.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/ltisys.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/lti_conversion.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/fir_filter_design.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/filter_design.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/bsplines.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/_wavelets.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/_waveforms.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/_upfirdn.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/_support_alternative_backends.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/_spline_filters.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/_ltisys.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/_spectral_py.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/_lti_conversion.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/_signaltools.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/_fir_filter_design.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/_filter_design.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/_signal_api.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/_short_time_fft.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/_filter_design.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/_savitzky_golay.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/_polyutils.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/_peak_finding.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/_max_len_seq.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/_delegators.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/_czt.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/_arraytools.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_max_len_seq.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/interpolate/tests/__pycache__/test_bsplines.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_ltisys.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_fir_filter_design.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_ltisys.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_fir_filter_design.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_windows.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_windows.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_wavelets.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_wavelets.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_waveforms.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_waveforms.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_upfirdn.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_upfirdn.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_splines.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_splines.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_filter_design.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_spectral.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_spectral.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_signaltools.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_filter_design.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_short_time_fft.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_short_time_fft.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_savitzky_golay.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_result_type.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_signaltools.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_result_type.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_peak_finding.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_dltisys.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_peak_finding.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_czt.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_cont2discrete.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_cont2discrete.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_bsplines.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_bsplines.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_array_tools.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/test_dltisys.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/_scipy_spectral_test_shim.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/windows/__pycache__/windows.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/windows/__pycache__/_windows.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/tests/__pycache__/mpsig.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/__pycache__/vode.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/signal/windows/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/__pycache__/quadpack.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/__pycache__/odepack.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/__pycache__/lsoda.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/__pycache__/dop.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/__pycache__/_tanhsinh.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/__pycache__/_quadrature.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/__pycache__/_lebedev.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/__pycache__/_quadpack_py.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/__pycache__/_quad_vec.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/__pycache__/_odepack_py.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/__pycache__/_cubature.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/__pycache__/_bvp.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/__pycache__/_ode.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/__pycache__/test_tanhsinh.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/__pycache__/test_tanhsinh.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/__pycache__/test_quadrature.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/__pycache__/test_odeint_jac.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/__pycache__/test_quadrature.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/__pycache__/test_quadpack.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/__pycache__/test_cubature.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/__pycache__/test_integrate.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/__pycache__/test_cubature.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/__pycache__/test_quadpack.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/__pycache__/test_banded_ode_solvers.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/__pycache__/test_banded_ode_solvers.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/__pycache__/test__quad_vec.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/__pycache__/test__quad_vec.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_rules/__pycache__/_gauss_legendre.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_rules/__pycache__/_gauss_kronrod.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/tests/__pycache__/test_bvp.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_rules/__pycache__/_genz_malik.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_rules/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/__pycache__/dop853_coefficients.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_rules/__pycache__/_base.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/__pycache__/common.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/__pycache__/rk.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/__pycache__/radau.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/__pycache__/lsoda.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/__pycache__/ivp.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/__pycache__/bdf.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/tests/__pycache__/test_rk.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/tests/__pycache__/test_rk.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/tests/__pycache__/test_ivp.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/__pycache__/base.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/__pycache__/_realtransforms.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/__pycache__/_pseudo_diffs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/__pycache__/realtransforms.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/__pycache__/pseudo_diffs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/__pycache__/helper.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/__pycache__/basic.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/__pycache__/_helper.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/__pycache__/_basic.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/tests/__pycache__/test_helper.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/integrate/_ivp/tests/__pycache__/test_ivp.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/tests/__pycache__/test_real_transforms.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/tests/__pycache__/test_basic.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/tests/__pycache__/test_pseudo_diffs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/cluster/__pycache__/vq.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fftpack/tests/__pycache__/test_import.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/cluster/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/cluster/tests/__pycache__/test_vq.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/cluster/__pycache__/hierarchy.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/cluster/tests/__pycache__/test_hierarchy.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/cluster/tests/__pycache__/test_disjoint_set.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/cluster/tests/__pycache__/test_disjoint_set.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/cluster/tests/__pycache__/test_hierarchy.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/cluster/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/__pycache__/qhull.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/__pycache__/kdtree.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/cluster/tests/__pycache__/hierarchy_test_data.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/__pycache__/ckdtree.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/__pycache__/_spherical_voronoi.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/__pycache__/_procrustes.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/__pycache__/_plotutils.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/__pycache__/distance.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/__pycache__/_kdtree.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/__pycache__/_geometric_slerp.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/__pycache__/test_hausdorff.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/__pycache__/_kdtree.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/__pycache__/test_hausdorff.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/__pycache__/test_spherical_voronoi.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/__pycache__/test_spherical_voronoi.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/__pycache__/test_slerp.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/__pycache__/test_slerp.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/__pycache__/test_distance.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/__pycache__/test_qhull.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/__pycache__/test_qhull.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/__pycache__/test_kdtree.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/__pycache__/test_distance.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/__pycache__/test__procrustes.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/__pycache__/test__plotutils.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/__pycache__/rotation.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/__pycache__/_rotation_spline.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/__pycache__/_rotation_spline.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/__pycache__/_rotation_groups.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/__pycache__/_rotation_groups.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/tests/__pycache__/test_rotation_spline.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/tests/__pycache__/test_rotation_spline.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/tests/__pycache__/test_rotation_groups.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/tests/__pycache__/test_rotation_groups.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/tests/__pycache__/test_kdtree.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/tests/__pycache__/test_rotation.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/tests/__pycache__/test_rigid_transform.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/tests/__pycache__/test_rigid_transform.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/zeros.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/tnc.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/slsqp.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/cobyla.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/optimize.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_zeros_py.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/nonlin.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/moduleTNC.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/minpack2.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/minpack.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/linesearch.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/lbfgsb.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/elementwise.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_tstutils.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_trustregion_ncg.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_trustregion_krylov.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_trustregion_exact.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_trustregion_dogleg.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_spectral.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/transform/tests/__pycache__/test_rotation.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_slsqp_py.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_tnc.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_trustregion.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_shgo.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_optimize.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_root_scalar.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_root.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_remove_redundancy.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_qap.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_numdiff.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_nonlin.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_minpack_py.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_minimize.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_nnls.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_nonlin.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_milp.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_linprog_simplex.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_linprog_util.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_linprog_ip.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_linprog_doc.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_linprog.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_linprog_rs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_linesearch.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_linprog_highs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_lbfgsb_py.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_isotonic.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_differentialevolution.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_differentiable_functions.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_elementwise.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_dual_annealing.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_hessian_update_strategy.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_dcsrch.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_direct_py.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_cobyqa_py.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_cobyla_py.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_constraints.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_bracket.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_chandrupatla.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/_basinhopping.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_trustregion_exact.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_zeros.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_trustregion.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_trustregion_krylov.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_tnc.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_regression.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_zeros.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_quadratic_assignment.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_slsqp.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_slsqp.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_optimize.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_lsq_linear.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_lsq_linear.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_lsq_common.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_optimize.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_linprog.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_nonlin.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_nnls.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_nnls.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_minpack.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_linprog.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_minimize_constrained.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_minpack.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_milp.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_minimize_constrained.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_linear_assignment.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_linear_assignment.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_milp.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_linesearch.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_linesearch.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_differentiable_functions.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_least_squares.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_least_squares.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_lbfgsb_setulb.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_lbfgsb_setulb.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_lbfgsb_hessinv.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_differentiable_functions.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_isotonic_regression.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_cython_optimize.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_isotonic_regression.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_hessian_update_strategy.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_constraints.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_extending.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_extending.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_direct.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_direct.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_cobyqa.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_cobyla.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_cobyqa.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_constraints.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_constraint_conversion.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_cobyla.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_chandrupatla.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_chandrupatla.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_bracket.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test__numdiff.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test__numdiff.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test__linprog_clean_inputs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test__spectral.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test__dual_annealing.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test__spectral.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test_bracket.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test__shgo.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test__dual_annealing.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test__differential_evolution.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test__root.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test__differential_evolution.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test__root.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test__remove_redundancy.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test__basinhopping.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test__basinhopping.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_shgo_lib/__pycache__/_vertex.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/tests/__pycache__/test__shgo.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_shgo_lib/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_shgo_lib/__pycache__/_complex.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/__pycache__/tr_interior_point.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/__pycache__/report.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/__pycache__/qp_subproblem.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/__pycache__/minimize_trustregion_constr.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/__pycache__/equality_constrained_sqp.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/__pycache__/projections.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/__pycache__/canonical_constraint.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/tests/__pycache__/test_projections.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/tests/__pycache__/test_nested_minimize.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/tests/__pycache__/test_nested_minimize.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/tests/__pycache__/test_canonical_constraint.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/tests/__pycache__/test_qp_subproblem.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_highspy/__pycache__/_highs_wrapper.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_highspy/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/cython_optimize/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trlib/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_trustregion_constr/tests/__pycache__/test_report.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_lsq/__pycache__/trf_linear.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_lsq/__pycache__/trf.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_lsq/__pycache__/least_squares.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_lsq/__pycache__/dogbox.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_lsq/__pycache__/lsq_linear.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_lsq/__pycache__/common.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_lsq/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/__pycache__/wavfile.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/__pycache__/netcdf.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/__pycache__/mmio.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/__pycache__/idl.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/__pycache__/harwell_boeing.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/optimize/_lsq/__pycache__/bvls.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/__pycache__/_mmio.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/__pycache__/_netcdf.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/__pycache__/_fortran.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/__pycache__/_fortran.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/__pycache__/_idl.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_harwell_boeing/__pycache__/hb.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_harwell_boeing/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_harwell_boeing/tests/__pycache__/test_hb.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_harwell_boeing/tests/__pycache__/test_hb.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_harwell_boeing/__pycache__/_fortran_format_parser.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_harwell_boeing/tests/__pycache__/test_fortran_format.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/arff/__pycache__/_arffread.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/arff/__pycache__/_arffread.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_harwell_boeing/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/arff/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/arff/__pycache__/arffread.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/arff/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/tests/__pycache__/test_wavfile.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/arff/tests/__pycache__/test_arffread.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/tests/__pycache__/test_paths.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/tests/__pycache__/test_wavfile.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/tests/__pycache__/test_paths.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/tests/__pycache__/test_netcdf.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/tests/__pycache__/test_netcdf.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/tests/__pycache__/test_idl.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/tests/__pycache__/test_mmio.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/tests/__pycache__/test_idl.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/tests/__pycache__/test_fortran.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/tests/__pycache__/test_fortran.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/_fast_matrix_market/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/__pycache__/_mio5_params.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/__pycache__/_mio5.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/tests/__pycache__/test_mmio.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/__pycache__/streams.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/__pycache__/miobase.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/__pycache__/mio_utils.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/__pycache__/mio5_utils.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/__pycache__/mio5_params.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/__pycache__/mio5.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/__pycache__/mio4.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/__pycache__/mio.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/__pycache__/byteordercodes.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/__pycache__/_mio4.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/__pycache__/_mio.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/__pycache__/_miobase.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/__pycache__/_byteordercodes.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/tests/__pycache__/test_pathological.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/tests/__pycache__/test_miobase.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/tests/__pycache__/test_mio_utils.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/tests/__pycache__/test_mio_utils.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/tests/__pycache__/test_mio_funcs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/tests/__pycache__/test_mio5_utils.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/tests/__pycache__/test_streams.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/tests/__pycache__/test_mio.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/tests/__pycache__/test_byteordercodes.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/__pycache__/_realtransforms_backend.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/__pycache__/_realtransforms.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/__pycache__/_helper.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/__pycache__/_basic_backend.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/io/matlab/tests/__pycache__/test_mio.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/__pycache__/_fftlog.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/__pycache__/_debug_backends.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/__pycache__/_basic.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/__pycache__/_backend.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/tests/__pycache__/test_real_transforms.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/tests/__pycache__/test_multithreading.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/__pycache__/_fftlog_backend.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/tests/__pycache__/test_multithreading.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/tests/__pycache__/test_helper.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/tests/__pycache__/test_helper.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/tests/__pycache__/test_fftlog.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/tests/__pycache__/test_fftlog.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/tests/__pycache__/test_basic.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/tests/__pycache__/test_backend.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/tests/__pycache__/mock_backend.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_pocketfft/__pycache__/helper.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/tests/__pycache__/test_basic.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_pocketfft/__pycache__/basic.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_pocketfft/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_pocketfft/__pycache__/realtransforms.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_pocketfft/tests/__pycache__/test_real_transforms.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_pocketfft/tests/__pycache__/test_real_transforms.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_pocketfft/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/fft/_pocketfft/tests/__pycache__/test_basic.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_stats_py.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/sampling.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/qmc.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/mvn.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/mstats_extras.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/mstats_basic.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/mstats.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/morestats.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/kde.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/stats.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/distributions.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/contingency.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_wilcoxon.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_warnings_errors.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_variation.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_tukeylambda_stats.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_survival.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_covariance.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/biasedurn.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_stats_mstats_common.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_correlation.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_sensitivity_analysis.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_sampling.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_result_classes.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_resampling.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_relative_risk.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_quantile.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_qmvnt.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_qmvnt.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_qmc.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_probability_distribution.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_page_trend_test.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_odds_ratio.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_new_distributions.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_multivariate.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_multicomp.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_mstats_extras.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_mstats_basic.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_continuous_distns.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_mgc.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_mannwhitneyu.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_ksstats.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_kde.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_hypotests.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_fit.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_finite_differences.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_entropy.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_morestats.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_distr_params.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_distribution_infrastructure.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_distn_infrastructure.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_crosstab.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_continued_fraction.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_constants.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_common.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_censored_data.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_bws_test.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_binomtest.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_discrete_distns.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_binned_statistic.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/_axis_nan_policy.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_variation.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_variation.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_tukeylambda_stats.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_survival.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_stats.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_multivariate.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_multivariate.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_sensitivity_analysis.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_sensitivity_analysis.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_sampling.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_sampling.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_stats.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_multicomp.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_resampling.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_multicomp.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_mstats_extras.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_relative_risk.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_rank.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_resampling.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_quantile.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_quantile.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_mstats_basic.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_qmc.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_mstats_basic.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_odds_ratio.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_qmc.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_morestats.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_morestats.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_mgc.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_marray.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_marray.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_kdeoth.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_kdeoth.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_hypotests.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_distributions.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_distributions.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_hypotests.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_fit.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_fast_gen_inversion.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_fit.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_entropy.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_correlation.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_correlation.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_continuous_fit_censored.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_continuous_fit_censored.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_fast_gen_inversion.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_continuous_basic.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_continuous_basic.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_continuous.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_discrete_distns.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_discrete_distns.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_discrete_basic.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_discrete_basic.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_crosstab.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_continuous.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_continued_fraction.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_contingency.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_continued_fraction.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_censored_data.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_censored_data.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_binned_statistic.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_binned_statistic.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_axis_nan_policy.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/common_tests.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/common_tests.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/data/__pycache__/fisher_exact_results_from_r.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/data/__pycache__/_mvt.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_rcont/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_unuran/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/__pycache__/test_axis_nan_policy.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/spfuncs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/sparsetools.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/sputils.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/lil.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/extract.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/_dok.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/dok.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/dia.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/data.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/csr.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_levy_stable/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/_dok.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/_data.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/csc.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/coo.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/construct.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/compressed.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/bsr.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/_dia.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/base.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/_sputils.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/_spfuncs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/_csr.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/_matrix_io.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/_matrix.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/_index.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/_extract.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/_csc.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/_lil.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/_coo.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/_construct.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/_compressed.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/_bsr.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/__pycache__/_base.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_common1d.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_common1d.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_sputils.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_sputils.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_spfuncs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_sparsetools.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_sparsetools.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_minmax1d.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_minmax1d.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_matrix_io.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_matrix_io.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_indexing1d.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_base.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_indexing1d.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_extract.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_extract.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_dok.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_dok.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_csr.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_csr.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_csc.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_csc.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_coo.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_base.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_coo.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_construct.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_construct.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_array_api.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_arithmetic1d.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_arithmetic1d.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/__pycache__/matfuncs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/__pycache__/_norm.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/tests/__pycache__/test_array_api.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/__pycache__/isolve.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/__pycache__/interface.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/__pycache__/eigen.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/__pycache__/dsolve.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/__pycache__/_svdp.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/__pycache__/_special_sparse_arrays.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/__pycache__/_onenormest.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/__pycache__/_matfuncs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/__pycache__/_interface.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/tests/__pycache__/test_special_sparse_arrays.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/tests/__pycache__/test_special_sparse_arrays.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/tests/__pycache__/test_pydata_sparse.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/tests/__pycache__/test_pydata_sparse.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/__pycache__/_expm_multiply.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/tests/__pycache__/test_propack.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/tests/__pycache__/test_onenormest.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/tests/__pycache__/test_interface.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/tests/__pycache__/test_norm.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/tests/__pycache__/test_norm.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/tests/__pycache__/test_interface.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/tests/__pycache__/test_expm_multiply.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/tests/__pycache__/test_matfuncs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/__pycache__/utils.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/__pycache__/tfqmr.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/__pycache__/iterative.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/__pycache__/_gcrotmk.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/__pycache__/minres.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/__pycache__/lsqr.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/__pycache__/lsmr.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/__pycache__/lgmres.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tests/__pycache__/test_utils.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tests/__pycache__/test_minres.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tests/__pycache__/test_minres.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tests/__pycache__/test_lsqr.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tests/__pycache__/test_lsqr.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tests/__pycache__/test_lsmr.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tests/__pycache__/test_lsmr.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tests/__pycache__/test_lgmres.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tests/__pycache__/test_lgmres.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tests/__pycache__/test_iterative.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tests/__pycache__/test_iterative.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tests/__pycache__/test_gcrotmk.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/__pycache__/_svds_doc.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/__pycache__/_svds.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/tests/__pycache__/test_svds.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_isolve/tests/__pycache__/test_gcrotmk.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/tests/__pycache__/test_svds.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/lobpcg/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/lobpcg/__pycache__/lobpcg.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/lobpcg/tests/__pycache__/test_lobpcg.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/lobpcg/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/lobpcg/tests/__pycache__/test_lobpcg.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/arpack/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/arpack/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/arpack/tests/__pycache__/test_arpack.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/arpack/tests/__pycache__/test_arpack.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/arpack/__pycache__/arpack.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_dsolve/__pycache__/linsolve.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_dsolve/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_dsolve/__pycache__/_add_newdocs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_dsolve/tests/__pycache__/test_linsolve.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_dsolve/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/__pycache__/_validation.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/__pycache__/_laplacian.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/__pycache__/test_traversal.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/__pycache__/test_traversal.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_dsolve/tests/__pycache__/test_linsolve.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/__pycache__/test_spanning_tree.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/__pycache__/test_shortest_path.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/__pycache__/test_reordering.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/__pycache__/test_shortest_path.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/__pycache__/test_pydata_sparse.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/__pycache__/test_matching.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/__pycache__/test_matching.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/__pycache__/test_graph_laplacian.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/__pycache__/test_graph_laplacian.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/__pycache__/test_flow.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/__pycache__/test_flow.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/__pycache__/test_conversions.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/__pycache__/test_connected_components.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/__pycache__/test_pydata_sparse.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/special_matrices.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/csgraph/tests/__pycache__/test_connected_components.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/misc.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/matfuncs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/lapack.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/_special_matrices.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/decomp_svd.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/decomp_schur.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/_solvers.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/decomp_qr.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/decomp_lu.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/interpolative.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/decomp.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/blas.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/basic.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/_testutils.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/_procrustes.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/_sketches.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/_misc.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/_matfuncs_sqrtm.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/decomp_cholesky.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/_expm_frechet.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/_matfuncs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/_decomp_schur.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/_decomp_svd.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/_matfuncs_inv_ssq.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/_decomp_qz.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/_decomp_qr.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/_decomp_ldl.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/_decomp_polar.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/_decomp_cossin.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/_decomp_cholesky.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/_decomp_lu.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/_decomp.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/_decomp.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/_basic.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_matmul_toeplitz.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_matfuncs.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_matfuncs.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_special_matrices.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_lapack.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_solvers.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_solvers.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_special_matrices.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_solve_toeplitz.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_sketches.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_procrustes.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_solve_toeplitz.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_fblas.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_extending.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_lapack.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_interpolative.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_decomp_lu.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_decomp_lu.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_decomp_ldl.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_decomp_cossin.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_decomp_polar.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_decomp_cossin.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_decomp_polar.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_decomp_update.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_blas.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_decomp_cholesky.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_decomp_cholesky.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_blas.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_batch.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_batch.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_decomp.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_basic.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_basic.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_cythonized_array_utils.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_cythonized_array_utils.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_cython_lapack.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_cython_blas.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/__pycache__/spfun_stats.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/__pycache__/specfun.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/__pycache__/basic.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/__pycache__/sf_error.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/__pycache__/orthogonal.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/__pycache__/_testutils.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/__pycache__/add_newdocs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/__pycache__/_support_alternative_backends.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/__pycache__/_support_alternative_backends.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/__pycache__/_spherical_bessel.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/__pycache__/_spfun_stats.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/__pycache__/_sf_error.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/__pycache__/_orthogonal.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/__pycache__/_multiufuncs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/__pycache__/_mptestutils.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/tests/__pycache__/test_decomp.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/__pycache__/_logsumexp.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/__pycache__/_lambertw.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/__pycache__/_input_validation.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/__pycache__/_ellip_harm.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/__pycache__/_add_newdocs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/__pycache__/zetac.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/__pycache__/wrightomega.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/__pycache__/wright_bessel_data.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/__pycache__/wright_bessel.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/__pycache__/utils.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/__pycache__/struve_convergence.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/__pycache__/loggamma.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/__pycache__/lambertw.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/__pycache__/hyp2f1_data.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/__pycache__/gammainc_data.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/__pycache__/gammainc_asy.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/__pycache__/expn_asy.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/__pycache__/cosine_cdf.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/_precompute/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_boost_ufuncs.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_boost_ufuncs.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_bdtr.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_zeta.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_zeta.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_wrightomega.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_wrightomega.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_wright_bessel.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_wright_bessel.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/__pycache__/_basic.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_ufunc_signatures.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_bdtr.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_trig.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_trig.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_support_alternative_backends.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_ufunc_signatures.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_support_alternative_backends.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_spherical_bessel.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_sph_harm.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_spfun_stats.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_spence.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_specfun.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_sici.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_sf_error.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_sf_error.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_round.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_precompute_utils.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_precompute_gammainc.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_precompute_expn_asy.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_powm1.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_powm1.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_pdtr.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_pdtr.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_pcf.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_owens_t.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_orthogonal_eval.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_orthogonal_eval.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_orthogonal.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_ndtri_exp.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_ndtri_exp.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_ndtr.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_ndtr.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_nan_inputs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_mpmath.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_basic.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_logsumexp.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_logsumexp.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_logit.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_loggamma.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_log1mexp.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_log1mexp.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_legendre.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_legendre.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_lambertw.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_lambertw.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_kolmogorov.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_iv_ratio.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_hypergeometric.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_hypergeometric.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_hyp2f1.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_basic.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_gammainc.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_gammainc.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_hyp2f1.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_gamma.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_faddeeva.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_gamma.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_extending.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_extending.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_faddeeva.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_exponential_integrals.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_erfinv.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_ellip_harm.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_ellip_harm.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_digamma.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_dd.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_dd.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_exponential_integrals.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_data.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_cosine_distr.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_cosine_distr.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_cephes_intp_cast.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_cephes_intp_cast.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_cdft_asymptotic.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_cdflib.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_cdflib.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_boxcox.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_boxcox.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/data/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__/uarray.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/special/tests/__pycache__/test_cython_special.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__/doccer.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__/decorator.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__/deprecation.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__/decorator.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__/_array_api_no_0d.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__/_array_api_no_0d.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__/_array_api_compat_vendor.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__/_array_api.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__/_util.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__/_tmpdirs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__/_threadsafety.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__/_testutils.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__/_sparse.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__/_array_api.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__/_gcutils.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__/_elementwise_iterative_method.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__/_pep440.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__/_docscrape.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__/_disjoint_set.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__/_ccallback.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__/_docscrape.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test_ccallback.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/__pycache__/_bunch.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test_bunch.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test_bunch.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test_array_api.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test_array_api.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test_warnings.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test_tmpdirs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test_scipy_version.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test_scipy_version.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test_public_api.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test_public_api.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test_import_cycles.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test_import_cycles.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test__util.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test_doccer.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test__util.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test_deprecation.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test_config.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test_deprecation.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test_config.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test__testutils.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test__threadsafety.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test__pep440.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test__pep440.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test__gcutils.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/cobyla/__pycache__/trustregion.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/cobyla/__pycache__/trustregion.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/cobyla/__pycache__/initialize.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/cobyla/__pycache__/update.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/cobyla/__pycache__/initialize.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/cobyla/__pycache__/update.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/cobyla/__pycache__/geometry.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/tests/__pycache__/test__testutils.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/cobyla/__pycache__/geometry.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/cobyla/__pycache__/cobyla.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/cobyla/__pycache__/cobyla.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/cobyla/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/cobyla/__pycache__/cobylb.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/selectx.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/selectx.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/present.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/preproc.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/redrho.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/redrho.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/ratio.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/ratio.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/preproc.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/cobyla/__pycache__/cobylb.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/powalg.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/linalg.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/powalg.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/message.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/message.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/consts.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/checkbreak.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/checkbreak.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/infos.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/_project.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/history.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/evaluate.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/evaluate.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/_linear_constraints.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/_nonlinear_constraints.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/_bounds.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/pyprima/common/__pycache__/linalg.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/__pycache__/models.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/__pycache__/main.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/__pycache__/settings.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/__pycache__/models.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/__pycache__/problem.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/__pycache__/framework.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/__pycache__/framework.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/utils/__pycache__/versions.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/utils/__pycache__/math.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/utils/__pycache__/exceptions.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/utils/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/subsolvers/__pycache__/optim.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/subsolvers/__pycache__/optim.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/__pycache__/problem.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/subsolvers/__pycache__/geometry.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/subsolvers/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/__pycache__/testing.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/__pycache__/testing.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/cobyqa/subsolvers/__pycache__/geometry.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/__pycache__/_lazy.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/__pycache__/_delegation.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/__pycache__/_lazy.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/__pycache__/_testing.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/__pycache__/_funcs.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/__pycache__/_backends.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/__pycache__/_testing.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/__pycache__/_at.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/_utils/__pycache__/_typing.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/__pycache__/_at.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/_utils/__pycache__/_helpers.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/_utils/__pycache__/_helpers.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/_utils/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/__pycache__/_internal.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/torch/__pycache__/fft.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/torch/__pycache__/_typing.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/torch/__pycache__/_info.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_extra/_lib/_utils/__pycache__/_compat.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/torch/__pycache__/linalg.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/torch/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/numpy/__pycache__/linalg.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/torch/__pycache__/_aliases.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/numpy/__pycache__/fft.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/numpy/__pycache__/_typing.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/numpy/__pycache__/_aliases.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/numpy/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/dask/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/dask/array/__pycache__/linalg.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/dask/array/__pycache__/fft.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/numpy/__pycache__/_info.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/dask/array/__pycache__/_aliases.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/dask/array/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/cupy/__pycache__/linalg.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/cupy/__pycache__/fft.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/cupy/__pycache__/_typing.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/cupy/__pycache__/_info.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/cupy/__pycache__/_aliases.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/cupy/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/dask/array/__pycache__/_info.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/common/__pycache__/_linalg.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/common/__pycache__/_helpers.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/common/__pycache__/_fft.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/common/__pycache__/_helpers.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/common/__pycache__/_aliases.cpython-314.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/common/__pycache__/_aliases.cpython-314.opt-1.pyc: replacing with normalized version /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/common/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/array_api_compat/common/__pycache__/_typing.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/_uarray/__pycache__/__init__.cpython-314.opt-1.pyc: rewriting with normalized contents /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/_uarray/__pycache__/_backend.cpython-314.opt-1.pyc: rewriting with normalized contents Scanned 397 directories and 4915 files, processed 1230 inodes, 1230 modified (538 replaced + 692 rewritten), 0 unsupported format, 0 errors + /usr/bin/linkdupes --brp /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr Scanned 396 directories and 4915 files, considered 4915 files, read 562 files, linked 42 files, 0 errors sum of sizes of linked files: 11313 bytes Reading /builddir/build/BUILD/scipy-1.16.2-build/SPECPARTS/rpm-debuginfo.specpart Executing(%check): /bin/sh -e /var/tmp/rpm-tmp.UXy9Ca ~/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages ~/build/BUILD/scipy-1.16.2-build/scipy-1.16.2 + umask 022 + cd /builddir/build/BUILD/scipy-1.16.2-build + CFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection ' + export CFLAGS + CXXFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection ' + export CXXFLAGS + FFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib64/gfortran/modules ' + export FFLAGS + FCFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -I/usr/lib64/gfortran/modules ' + export FCFLAGS + VALAFLAGS=-g + export VALAFLAGS + RUSTFLAGS='-Copt-level=3 -Cdebuginfo=2 -Ccodegen-units=1 -Cstrip=none -Clink-arg=-specs=/usr/lib/rpm/redhat/redhat-package-notes --cap-lints=warn' + export RUSTFLAGS + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + export LDFLAGS + LT_SYS_LIBRARY_PATH=/usr/lib64: + export LT_SYS_LIBRARY_PATH + CC=gcc + export CC + CXX=g++ + export CXX + cd scipy-1.16.2 + export FLEXIBLAS=netlib + FLEXIBLAS=netlib + export FLEXIBLAS=openblas-openmp + FLEXIBLAS=openblas-openmp + SKIP_ALL='not TestDatasets' + export 'PYTEST_ADDOPTS=-k '\''not TestDatasets'\''' + PYTEST_ADDOPTS='-k '\''not TestDatasets'\''' + pushd /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT//usr/lib64/python3.14/site-packages + CFLAGS='-O2 -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection ' + LDFLAGS='-Wl,-z,relro -Wl,--as-needed -Wl,-z,pack-relative-relocs -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-hardened-ld-errors -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -Wl,--build-id=sha1 -specs=/usr/lib/rpm/redhat/redhat-package-notes ' + PATH=/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin + PYTHONPATH=/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages:/builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib/python3.14/site-packages + PYTHONDONTWRITEBYTECODE=1 + PYTEST_ADDOPTS='-k '\''not TestDatasets'\'' --ignore=/builddir/build/BUILD/scipy-1.16.2-build/.pyproject-builddir' + PYTEST_XDIST_AUTO_NUM_WORKERS=2 + /usr/bin/pytest scipy --numprocesses=auto ============================= test session starts ============================== platform linux -- Python 3.14.0, pytest-8.4.2, pluggy-1.6.0 rootdir: /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages plugins: xdist-3.7.0, hypothesis-6.123.0 created: 2/2 workers 2 workers [84030 items] ............................................s....................s...... [ 0%] ....s................................................................... [ 0%] ........................................................................ [ 0%] ........................................................................ [ 0%] ........................................................................ [ 0%] ........................................................................ [ 0%] ........................................................................ [ 0%] ........................................................................ [ 0%] ..........................................................s............. [ 0%] ..........................................ss.......ss................... [ 0%] .s........ss.......ss.............................................s..... [ 0%] ..ss..........s......................................................... [ 1%] ........................................................................ [ 1%] ........................................................................ [ 1%] ........................................................................ [ 1%] .....................sssss....sss.s.sssssssss........................... [ 1%] ........................................................................ [ 1%] ........................................................................ [ 1%] ........................................................................ [ 1%] ........................................................................ [ 1%] ........................................................................ [ 1%] ........................................................................ [ 1%] ........................................................................ [ 1%] ........................................................................ [ 2%] ........................................................................ [ 2%] .......................................................................s [ 2%] ........................................................................ [ 2%] ........................................................................ [ 2%] ........................................................................ [ 2%] ........................................................................ [ 2%] ........................................................................ [ 2%] ........................................................................ [ 2%] ........................................................................ [ 2%] ........................................................................ [ 2%] ........................................................................ [ 2%] ........................................................................ [ 3%] ........................................................................ [ 3%] ............................................................s........... [ 3%] ........................................................................ [ 3%] ........................................................................ [ 3%] ........................................................................ [ 3%] ........................................................................ [ 3%] ........................................................................ [ 3%] ........................................................................ [ 3%] ........................................................................ [ 3%] ........................................................................ [ 3%] ........................................................................ [ 4%] ........................................................................ [ 4%] ........................................................................ [ 4%] ........................................................................ [ 4%] ........................................................................ [ 4%] ........................................................................ [ 4%] ........................................................................ [ 4%] ........................................................................ [ 4%] ........................................................................ [ 4%] .....................................F............ss....F..........F..F. [ 4%] .......F....................F........................................... [ 4%] ............F...........F..................................F..F..F..F..F [ 4%] ..F..F..F..................................................F............ [ 5%] ..................................................s..................... [ 5%] ........................................................................ [ 5%] ........................................................................ [ 5%] ........................................................................ [ 5%] ...................................................................sssss [ 5%] s....................................................................... [ 5%] ...........FFF.......................................................... [ 5%] ........................................................................ [ 5%] ........................................................................ [ 5%] ...........................................F............................ [ 5%] ..................................................F.............F....... [ 5%] ........................................................................ [ 6%] .....x.x..F...F.....F...........F.....F....F...F..FF...F....F.......F.FF [ 6%] ...F.......F....F.....F.....F.F......................FF...FF............ [ 6%] .................................x...................................... [ 6%] ........................................................................ [ 6%] ........................................................................ [ 6%] ........................................................................ [ 6%] .........................................F.............................. [ 6%] ...........................F...................................F........ [ 6%] ........................F............................................... [ 6%] .......s................................................................ [ 6%] ............................s........................................... [ 7%] ........................................................................ [ 7%] ........................................................................ [ 7%] ........................................................................ [ 7%] ........................................................................ [ 7%] ........................................................................ [ 7%] ........................................................................ [ 7%] ........................................................................ [ 7%] ........................................................................ [ 7%] ........................................................................ [ 7%] ........................................................................ [ 7%] ........................................................................ [ 7%] ........................................................................ [ 8%] ........................................................................ [ 8%] ........................................................................ [ 8%] ........................................................................ [ 8%] ........................................................................ [ 8%] ........................................................................ [ 8%] ........................................................................ [ 8%] ...................................................F.................... [ 8%] ........................................................................ [ 8%] ........................................................................ [ 8%] ........................................................................ [ 8%] ........................................................................ [ 8%] ........................................................................ [ 9%] ........................................................................ [ 9%] ........................................................................ [ 9%] ........................................................................ [ 9%] ........................................................................ [ 9%] ........................................................................ [ 9%] ........................................................................ [ 9%] ........................................................................ [ 9%] ........................................................................ [ 9%] ........................................................................ [ 9%] ......................................s.x............................... [ 9%] ........................................................................ [ 10%] ...................................F......F............................. [ 10%] ..s..................................................................... [ 10%] ...............................................F........................ [ 10%] ............F................F........F................................. [ 10%] ........F.........................................................F...F. [ 10%] ..F...F...F............................................................. [ 10%] ........................................................................ [ 10%] ..s..............s.s..........s..ss........sss..s.s..................... [ 10%] s.........................................s...s..............sss........ [ 10%] ....ssss......ss..................s..s.....ss.........sss..........ssss. [ 10%] sss..sss.........sss.........sss..sss.s...s...........sss.ssss.ssss.ssss [ 10%] .ssss.....................s.........ss.......s.s.s....ssss.s.......s.... [ 11%] ss........sss...ssss.ss.....s.....s.........s.s.......sss.....ss.s..s... [ 11%] sss....s.ss...sss............sss..ssss.sss.s..ssss...................... [ 11%] ........................................................................ [ 11%] ........................................................................ [ 11%] ........................................................................ [ 11%] ........................................................................ [ 11%] ........................................................................ [ 11%] ........................................................................ [ 11%] ........................................................................ [ 11%] ........................................................................ [ 11%] ........................................................................ [ 11%] ........................................................................ [ 12%] ......ssss....ssss...................................................... [ 12%] ........................................................................ [ 12%] ................................................ssss.................... [ 12%] ........................................................................ [ 12%] ........................................................................ [ 12%] ........................................................................ [ 12%] ........................................................................ [ 12%] ........................................................................ [ 12%] ............................F...................F....................... [ 12%] ......................................F................................. [ 12%] ...................F......................F.......................F..... [ 13%] .........F.........................F...F..............................F. [ 13%] ...................F...................................F................ [ 13%] ....................F..................................F................ [ 13%] ...F....................................F...............F............... [ 13%] ....................F..............................F.................... [ 13%] .F.........................................................F............ [ 13%] ...........................F..............F..............F.............. [ 13%] ....................................F..........................F........ [ 13%] .....F.............................F.................................... [ 13%] .............F..................................F....................... [ 13%] ......................F................................................. [ 13%] ......F..........................F................F.....F............... [ 14%] .F...........F.............F.................F.......................... [ 14%] ...............F.....................................F.................. [ 14%] .................................F...................................... [ 14%] ....................F................................................... [ 14%] F....................................................................... [ 14%] ........................................................................ [ 14%] ........................................................................ [ 14%] .............................................x.......................... [ 14%] ........................................................................ [ 14%] ........................................................................ [ 14%] ........................................................................ [ 14%] ........................................................................ [ 15%] ........................................................................ [ 15%] ...........................................F..F..F..........FFFFFFFFFFFF [ 15%] FFFF.FFF.................F.....F.....F..........F...............F...F... [ 15%] F...FF..........F...........F...FFF.................F..FFF.............. [ 15%] ........................................................................ [ 15%] ........................................................................ [ 15%] ...........................................................F............ [ 15%] .....F.................................F...........F..........F.......F. [ 15%] ..................F...........................F......................... [ 15%] .F..FFFFFF..F.F....F...F.............FFF...........F...........F..F.F... [ 15%] ................F....................................................... [ 16%] ........................................................................ [ 16%] ................................................................s....... [ 16%] ....s.................s........s........s............................... [ 16%] ........................................................................ [ 16%] ...........................................s..s...........s.....s..s.... [ 16%] ...........sss..s....................................................... [ 16%] ...........................................................sssssssssssss [ 16%] ssssssssssssssssssssssssssssss.......................................... [ 16%] ........................................................................ [ 16%] ........................................................................ [ 16%] ........................................................................ [ 16%] ........................................................................ [ 17%] ........................................................................ [ 17%] ........................................................................ [ 17%] ........................................................................ [ 17%] ........................................................................ [ 17%] ........................F...F..FFF...FFF..s.FF..F.....F................. [ 17%] ...F................F...................................F...........ssF. [ 17%] ...sFs....F..........................F........F......F................F. [ 17%] .............F...........F.........F.F..F.ss....ss..F......ss........F.. [ 17%] ..................F...F...........F............F....F........F..ss....F. [ 17%] .....F...............F..................F....................F.......... [ 17%] F....F....F...F.....F......F..FF................F......F..F..F....F..F.. [ 17%] .FF........F.....F..FF..FF..FF..F................F..................F... [ 18%] ........F.......F...............F........F............F...............F. [ 18%] ........F....................F..............F.........................F. [ 18%] ....xF..................F.............F..............F...........F...... [ 18%] ............................................F..F..FF..FF..FF..FF..FF..FF [ 18%] ..FF..FF..F.....F.........F..........F........F........F.....F..F....... [ 18%] .F......F.......F..........F....F.......F...........F..............F..FF [ 18%] ..FF..FF..FF..FF..FF..F...F....FF..FF..FF..FF..FF..FF..FF...F....F..FF.. [ 18%] FF..FF..FF..FF..FF..FF..FF.....F..F..FF..FF..FF..FF..FF..FF..FF..FF..FF. [ 18%] .FF...F.F.....FF..FF..FF..FF..FF..FF..FF..F.....F..FF..FF..FF..FF..F..F. [ 18%] ....FF..FF..FF..FF..FF..FF..FF..F...F....FF..FF..FF..FF..FF..FF..FF..F.. [ 18%] F.....FF..FF..FF..................................................FF.... [ 19%] .F......F........F............F.........F.......s....s.................F [ 19%] .................FF.........F.F...FF...F....F..........F....F....FF..FF. [ 19%] .FF..F.F..FF..FF..FF..F.F..FF..FF..FF........F....................F..... [ 19%] s........................F.......F.............F........................ [ 19%] .....F.................................F..F....F.F..F................... [ 19%] .............F..............F.............F.............F........F...... [ 19%] ..F..........F............F.......................F..................... [ 19%] .......................................F......F...............F......... [ 19%] .........F...........F..................F....................F.......... [ 19%] .........F................F............F............F............F...... [ 19%] ......F.......F...................F..........F............F............. [ 19%] ..................F.................F.......................F........... [ 20%] ................................F.............................F......... [ 20%] .........F............................F...........................F..... [ 20%] ...F....................................................F............F.. [ 20%] .................................F........................F............. [ 20%] ...........F...............................F.....................F...... [ 20%] ........F.................................................F.........F... [ 20%] ....................F.....................F................F........F... [ 20%] .....F.......F..........F........F.......F..........F...........F....... [ 20%] F.......F.................F...........F.........F......F.....F.......... [ 20%] ..F...........F...............F......F.................F................ [ 20%] ...F...................................................F................ [ 20%] ............................F........................................... [ 21%] ......F................................................................. [ 21%] .....F...............................F.................................. [ 21%] ..F......................................F...........................F.. [ 21%] ........................F.........................F..................... [ 21%] ...........................F.................................F.......... [ 21%] ...........F....................F....................................... [ 21%] ........................................................................ [ 21%] ...F..................F.......................F...................F..... [ 21%] ...............F.....................F.................................. [ 21%] ......F.......................F...........................F............. [ 21%] ...........F...............................F......................F..... [ 22%] ..............................F.......................F................. [ 22%] ......................F.............................F................... [ 22%] ........................................................................ [ 22%] ............F...............................................F........... [ 22%] ...........F..............F..................F.....................F.... [ 22%] ...............F.......F...........................F...........F........ [ 22%] ......F.............................F..............F..........F.......F. [ 22%] ....F.............................F..................................... [ 22%] F....................................................................... [ 22%] .............F...............................F..........F.............F. [ 22%] ....................F................................................... [ 22%] .F........................F.................F........................... [ 23%] .............F..............................F.........................F. [ 23%] .........................................F.............................. [ 23%] ..........F.......................F..................................... [ 23%] .F........................................F............................. [ 23%] ............................................................F........... [ 23%] .........F....................F......................................... [ 23%] .................F................................F....F.......F........ [ 23%] ..F..................F........F...............F..................F...... [ 23%] ........F............................F.................................. [ 23%] ......................................F................................F [ 23%] ..............................F......................................... [ 23%] ..................F...............................................F..... [ 24%] ...........F........................F.................F................. [ 24%] .........................F..........F..........F.................F..F... [ 24%] .F.............F.............F...................F...................... [ 24%] .............F.......................F.............F.................... [ 24%] ........................F............................................... [ 24%] .............F.......................................................... [ 24%] .......F............................................................F... [ 24%] ........................................................................ [ 24%] ............F..........................F................................ [ 24%] ..................F....................................F................ [ 24%] .........F.......................................F...................... [ 25%] .......F....................................F..........................F [ 25%] ............F.....................F....................F................ [ 25%] F........F............F...........F.................F................... [ 25%] ...........................................................F......F..... [ 25%] ..F...........F.......F............F......F.........................F... [ 25%] .........F.............F...F..........F.........F............F.......... [ 25%] ..F............F.........F.................F..F...........F.......F..... [ 25%] ............F..........F...............F...........F...........F........ [ 25%] ...F..........F.......F.....F.....F............F.......F...............F [ 25%] ............F...................................F.................F..F.. [ 25%] ....................................................F..............F.... [ 25%] ..........................F..........................................F.. [ 26%] ........................F..................................F............ [ 26%] ..............F......................................................... [ 26%] .................F................................................F..... [ 26%] ............................................F....................F...... [ 26%] ..........................................F................F..........F. [ 26%] ...........F...................F.......................F................ [ 26%] ......F....................F...................F........................ [ 26%] ........F.......................F......................F................ [ 26%] .......F..............F...............F.......F........F...F............ [ 26%] .F...............F..................................F................... [ 26%] .................F.......................F.....................F........ [ 26%] .........................F...............F....................F......... [ 27%] ....................................F...............................F... [ 27%] ...F.........................F.......F...............F........F......... [ 27%] ...F......F....................F.................F...................... [ 27%] .........F.....................................F................F....... [ 27%] ............................F.................F..........F.............. [ 27%] .....F...................F.......................F.......F.............. [ 27%] ...............................................................F........ [ 27%] ..F..........................F.....................................F.... [ 27%] ................................................................F....... [ 27%] ...F.........F...............F.................................F........ [ 27%] ..................................F..............................F...... [ 28%] F........F.......F........F...F............F....F............F........F. [ 28%] ..............F.......................F...............................F. [ 28%] ................F..................F........................F........... [ 28%] .................F..................................F................... [ 28%] ..F.....F........................F....................F................. [ 28%] ...F....F.................F...................F......................F.. [ 28%] ......................F....................F..................F......... [ 28%] ..........................F.............F............................... [ 28%] ..F........F........................F..........F...............F......F. [ 28%] ..............F.............F............................F.............. [ 28%] ...............F.......................F................................ [ 28%] ....F.................................F...............................F. [ 29%] ...........................................F..............F.........F... [ 29%] ...................F.........................F........F..........F...... [ 29%] ................................................F....................... [ 29%] ...........................F................F........................... [ 29%] F..........................................F.................F.......... [ 29%] ...................................F............................F....... [ 29%] ...............F...................................F.................... [ 29%] ..F......................F.........................F.................... [ 29%] ...........................................................F............ [ 29%] ......................F...................F....F...................F.... [ 29%] F.........................F.....F......F..............F...........F..... [ 29%] ......F................................................................. [ 30%] F..................................................................F.... [ 30%] ......................F.....................................F........... [ 30%] .................................................F...................... [ 30%] ..........F..............................................F.............. [ 30%] ..........................F............................................. [ 30%] ........................................................................ [ 30%] ..............................................................F......... [ 30%] ........................................................................ [ 30%] ........................................................................ [ 30%] ...................F................................F................... [ 30%] ........................................................................ [ 31%] ........................................................................ [ 31%] .........F.............................................................. [ 31%] ........................................................................ [ 31%] ........................................................................ [ 31%] ........................................................................ [ 31%] ........................................................................ [ 31%] .............................................F.......................... [ 31%] ........................................................F............... [ 31%] .....F................F.....................F........................... [ 31%] ..........F....................................................F........ [ 31%] ..................................F..................................... [ 31%] ...F..............................................................F..... [ 32%] ..............................F..........F............F...........F..... [ 32%] ...........F....s.s.................................Fs.........s........ [ 32%] ............s.s..................................Fs.s................... [ 32%] ........................................................................ [ 32%] ........................................................................ [ 32%] ........................................................................ [ 32%] ........................................................................ [ 32%] ........................................................................ [ 32%] ........................................................................ [ 32%] ........................................................................ [ 32%] ........................................................................ [ 32%] ........................................................................ [ 33%] ........................................................................ [ 33%] ........................................................................ [ 33%] ........................................................................ [ 33%] .....................x...........x...................................... [ 33%] ......x................................................................. [ 33%] ....................................................x................... [ 33%] .x...................................................................... [ 33%] ........................................................................ [ 33%] ........................................................................ [ 33%] ........................................................................ [ 33%] ........................................................................ [ 34%] ........................................................................ [ 34%] .....................X.................................................. [ 34%] ........................................................................ [ 34%] ........................................................................ [ 34%] ...................................s.................................... [ 34%] ........................................................................ [ 34%] ........................................................................ [ 34%] ........................................................................ [ 34%] ........................................................................ [ 34%] ........................................................................ [ 34%] ........................................................................ [ 34%] ........................................................................ [ 35%] ............x........................................................... [ 35%] ................................................................x....... [ 35%] ............x...........................................s.......x....... [ 35%] ...............................x......x................................. [ 35%] ........................................................................ [ 35%] ........................................................................ [ 35%] ........................................................................ [ 35%] ........................................................................ [ 35%] ........................................................................ [ 35%] ........................................................................ [ 35%] ........................................................................ [ 35%] ........................................................................ [ 36%] ........................................................................ [ 36%] ........................................................................ [ 36%] ........................................................................ [ 36%] ....s.ssss.sssss.ssss.sss.ssss.s..ss.ssss.ss.ssssssss.ss.ss.ssssss.sssss [ 36%] s.ss...ss..sssssssssssss.sssss..ssssss.....s...ss.sss.ssss.ssssss.ss.sss [ 36%] s.ssss.......ssss....ssss...s.ss..ssssss................................ [ 36%] ........................................................................ [ 36%] ..................................................................ss.... [ 36%] ........................................................................ [ 36%] ........X............................................................... [ 36%] ........................................................................ [ 37%] ........................................................................ [ 37%] ........................................................................ [ 37%] ........................................................................ [ 37%] ........................................................................ [ 37%] ........................................................................ [ 37%] ........................................................................ [ 37%] ........................................................................ [ 37%] ........................................................................ [ 37%] ........................................................................ [ 37%] ........................................................................ [ 37%] ........................................................................ [ 37%] ........................................................................ [ 38%] ........................................................................ [ 38%] ........................................................................ [ 38%] ........................................................................ [ 38%] ........................................................................ [ 38%] ........................................................................ [ 38%] ........................................................................ [ 38%] ........................................................................ [ 38%] ........................................................................ [ 38%] ........................................................................ [ 38%] ........................................................................ [ 38%] ........................................................................ [ 38%] ........................................................................ [ 39%] ........................................................................ [ 39%] ........................................................................ [ 39%] ........................................................................ [ 39%] ........................................................................ [ 39%] ........................................................................ [ 39%] ........................................................................ [ 39%] ........................................................................ [ 39%] ........................................................................ [ 39%] ........................................................................ [ 39%] ........................................................................ [ 39%] ........................................................................ [ 40%] ........................................................................ [ 40%] ........................................................................ [ 40%] ........................................................................ [ 40%] ........................................................................ [ 40%] ........................................................................ [ 40%] ........................................................................ [ 40%] ........................................................................ [ 40%] ........................................................................ [ 40%] ........................................................................ [ 40%] ........................................................................ [ 40%] ........................................................................ [ 40%] ........................................................................ [ 41%] ........................................................................ [ 41%] ........................................................................ [ 41%] ........................................................................ [ 41%] ........................................................................ [ 41%] ........................................................................ [ 41%] ........................................................................ [ 41%] ........................................................................ [ 41%] ........................................................................ [ 41%] ........................................................................ [ 41%] ........................................................................ [ 41%] ........................................................................ [ 41%] ........................................................................ [ 42%] ........................................................................ [ 42%] ........................................................................ [ 42%] ........................................................................ [ 42%] .....................................sss.sss.sssss.sss.sss.sss.ssss.ss.s [ 42%] s.ssss.ssss.ssssssss..ss.sss.sss.sss.ssss............................... [ 42%] ........................................................................ [ 42%] ........................................................................ [ 42%] ........................................................................ [ 42%] ....................s..s........s.s.sss.............s.........s......... [ 42%] ........................................................................ [ 42%] ........................................................................ [ 43%] ........................................................................ [ 43%] ........................................................................ [ 43%] ........................................................................ [ 43%] ........................................................................ [ 43%] ........................................................................ [ 43%] ........................................................................ [ 43%] ........................................................................ [ 43%] ........................................................................ [ 43%] ........................................................................ [ 43%] ........................................................................ [ 43%] ........................................................................ [ 43%] ........................................................................ [ 44%] ........................................................................ [ 44%] ........................................................................ [ 44%] ........................................................................ [ 44%] ........................................................................ [ 44%] ........................................................................ [ 44%] ........................................................................ [ 44%] ........................................................................ [ 44%] ........................................................................ [ 44%] ........................................................................ [ 44%] ........................................................................ [ 44%] ........................................................................ [ 44%] ........................................................................ [ 45%] ............................s.s.s.s.s.s..............s.s.s.s.s...s...... [ 45%] ........................................................................ [ 45%] ........................................................................ [ 45%] ........................................................................ [ 45%] ...............................................F........................ [ 45%] ..........................................................F............. [ 45%] ......................................................F................. [ 45%] ........................................................................ [ 45%] ........................................................................ [ 45%] ..............................F.............F........................... [ 45%] ...F.................................................................... [ 46%] ..................F..................................................... [ 46%] ...........F............................................................ [ 46%] ........................................................................ [ 46%] ...F..................s................................................F [ 46%] .....................s............F..................F.................F [ 46%] ..................F..................F.................F................ [ 46%] ..F..................................................................... [ 46%] .........................................................F.............. [ 46%] ........................................................................ [ 46%] ........................................................................ [ 46%] ..........................................................F............. [ 46%] ........................................................................ [ 47%] ........................................................................ [ 47%] ..........................................................F............. [ 47%] ........................................................................ [ 47%] ........................................................................ [ 47%] ..........................................................F............. [ 47%] ........................................................................ [ 47%] ........................................................................ [ 47%] ..........................................................F............. [ 47%] ........................................................................ [ 47%] ................................x....................................F.. [ 47%] .....................................................................F.. [ 47%] .....................................................................F.. [ 48%] ...................................s.........FF......................... [ 48%] ...............................................s.ss..s.ssss....s.ss..s.s [ 48%] sss....s.ss..s.ssss....s.ss..s.ssss....s.ss..s.ssss....s.ss..s.ssss..... [ 48%] ..FF.......ssssssss.......F...F......................................... [ 48%] .........................................s.ss....s.ss....s.ss....s.ss... [ 48%] .s.ss....s.ss....s.ss....s.ss....s.ss....s.ss....s.ss....s.ss........... [ 48%] ........................F............................................... [ 48%] .........................s.......s.......s.......s.......s.......s...... [ 48%] .s.......s.......s.......s.......s.......s...........ssssssss.......F... [ 48%] Fxx..................................................................... [ 48%] ........................................................................ [ 49%] ........................................................................ [ 49%] ........................................................................ [ 49%] ........................................................................ [ 49%] ........................................................................ [ 49%] ........................................................................ [ 49%] ........................................................................ [ 49%] ...............................s.ss.ss.s.............s.ss.s............. [ 49%] ....s.......s.......s.......s........s..........X........x.....s.s..sss. [ 49%] .X.....s.s..............s.............s........s.......s........s....... [ 49%] .s........s........s.......s.......s........s........s.........s........ [ 49%] s.......s.......s.......s.......s........s........ss...............s.... [ 49%] ........................................................................ [ 50%] ......................s........................................F........ [ 50%] ........................................................................ [ 50%] ........................................................................ [ 50%] ........................................................................ [ 50%] ...............ss.s....................................................s [ 50%] sssssss............Xssssss.sssssssssssssssssssssssssss.sssss.sssssssssss [ 50%] ssssssssssssssssssssssssssss.ss......................................... [ 50%] ........................................................................ [ 50%] ........................................................................ [ 50%] ........................................................................ [ 50%] ........................................................................ [ 50%] ........................................................................ [ 51%] ........................................................................ [ 51%] ........................................................................ [ 51%] ........................................................................ [ 51%] ........................................................................ [ 51%] ........................................................................ [ 51%] ........................................................................ [ 51%] ........................................................................ [ 51%] ...................s.................................................... [ 51%] ........................................................................ [ 51%] .......................................................s................ [ 51%] .......................ss............................................... [ 52%] ...........s............................................................ [ 52%] ............................................s........................... [ 52%] ........................................................................ [ 52%] ........................................................................ [ 52%] ........................................................................ [ 52%] ........................................................................ [ 52%] ......................................s................................. [ 52%] ..............................ssssss.s.................................. [ 52%] ........................................................................ [ 52%] ........................................................................ [ 52%] ..................................................s.sssssss............. [ 52%] ........................................................................ [ 53%] .........s...........................ssssss.s........................... [ 53%] ........................................................................ [ 53%] ........................................................................ [ 53%] ........................................................................ [ 53%] .s.ssssss.s............................................................. [ 53%] ..........................s...............sssss.s....................... [ 53%] ......................................sssssss........................... [ 53%] ..................................................s............sssss.s.. [ 53%] ..........................................................sssssss....... [ 53%] ......................................................................s. [ 53%] .....................ssssssssssssssssssssssssssssssssssssssssss......... [ 53%] .........................sssss..sssssss................................. [ 54%] ....................................................s.......x........... [ 54%] .....ssssssssssssssssssssssssssssssssssssssssss......................... [ 54%] ....................ss.......ssss.s..sssssss............................ [ 54%] .......................................................................s [ 54%] .......x...........sssss.sssssssssssssssssssssssssssssssssssssssssss.... [ 54%] ...sssss..sssssss....................................................... [ 54%] ....................s...x.s.......sssss.ssssssssssssssssssssssssssssssss [ 54%] sssssssssss.......sssss..sssssss........................................ [ 54%] ...................................s...x.s..........s.......ssssssssssss [ 54%] ssssssssssssssssssssssssssssss.......sssss.............................. [ 54%] ........................................................................ [ 55%] .............................................s................x..x..x.s. [ 55%] .......ssssssssssssssssssssssssssssssssssssssssss....................... [ 55%] ....ss.s.ss............................................................. [ 55%] .................................s.............xx.x..................... [ 55%] ........................................................................ [ 55%] .................................................................s...... [ 55%] ..............sss..xx................................................... [ 55%] ........................................................................ [ 55%] ....................................................s................... [ 55%] .....sss..xx............................................................ [ 55%] ........................................................................ [ 55%] .................................s........................sss........... [ 56%] ..x.....x............................................................... [ 56%] ........................................................................ [ 56%] ..................................ss.................................... [ 56%] ........................................................................ [ 56%] ................................s......................s..ss.......s.... [ 56%] ..........x..........x..................................ssssssssssssssss [ 56%] ssssssss..ss.sss..s.s.sssss...ssssss..................s.ss.............. [ 56%] ..............................................................s......... [ 56%] ........sssss........................................................... [ 56%] .........s.X............................................................ [ 56%] ........................................................................ [ 56%] ......s..sX....................................s........................ [ 57%] ........x.........x..............x..ss.s..........ssss.....x............ [ 57%] .x........................................ss.....sssssssssssssssss.sssss [ 57%] ss.s......ssss.sssssss.s.ss.s............sss............................ [ 57%] ..x..............................................................sssss.. [ 57%] .......................................................................x [ 57%] ...................s..............................x....x.x.x.....sss.... [ 57%] ..............x.........x.............ssss.sss.ssssssssssss.....ssssss.. [ 57%] .ssssss...sssssssssss..............sssss.sssssss........................ [ 57%] ..............................x........................s.......x........ [ 57%] sss........ssssssssssssssssssssssssssssssssssss..sssss...ss.......s..... [ 57%] ..................................sssss.sssssss......................... [ 58%] ..................................................s.......x...........ss [ 58%] s....s......ss..ss....................sss.........sss........s........s. [ 58%] ....ssssss.sssssssssss.....sssssx....s..s...x.....s..X..............s... [ 58%] s...ss..................sssssxxs..sssss.s.s...............ss......ss..ss [ 58%] ................sss.....sss..sssssssssssssssssss....sssss.s...s..s.xsss. [ 58%] ............s...s.s.ss..................ssss..s..sssss.s..s............. [ 58%] ......s.............................................s................... [ 58%] ..x.s...x...............s............................................... [ 58%] ........s....................s..........s................s.............s [ 58%] ...............................ss.......................s............... [ 58%] ..............................s..................................ss.s.s. [ 58%] s....ss.s..s.s.s..sssss......ss..s....ssssssssssssss.ss................. [ 59%] .......s.....................s..s.........s.....sss..s.s..............s. [ 59%] ss......s.ss..sssssssssssssssssss.....sssssss...s...s...x.ss...s........ [ 59%] ...sssss.....sss.ss...................ssss..............s..sss.ss.s.s... [ 59%] ................s...s............s..........s.............s............. [ 59%] .sss.....................s....s.s......s..ss..........s.sss..x.....ss... [ 59%] ..............................s....................s.................... [ 59%] ....s...........s...................................sss................. [ 59%] ....s.....s.......s..s...s..........ssss.......s......ss................ [ 59%] ................x................s......s.........................ss.... [ 59%] .............ss..ss....................sss............X...............ss [ 59%] s.....sssssssssssssssss.................sssss..........................s [ 59%] ...s........x..............................................s............ [ 60%] ...............s......ss..................sssssxxs.........sssss.s.s.... [ 60%] ...........ss.................ss..ss.................................sss [ 60%] ...........ss.s.....ssssssssssss.sss.sss.s....sssss.s...s..s.xs..ss..... [ 60%] ...........s.........s.s..ss..................ssss........s..sssss.s..s. [ 60%] ....x..........................s........................................ [ 60%] ..................s...x................................................. [ 60%] .s.........x............................................................ [ 60%] ..s.......x.........................................s................... [ 60%] .s...........................ss....................s.................... [ 60%] ................s.............................................s......... [ 60%] ......s...................s.s......sss..ss.............sss....sss..sssss [ 61%] ssssssssssssss....sssssss...s..s.xss..........sssss...sss.ss............ [ 61%] .....ssss....s..sssss.s.s..............s....s....................s...... [ 61%] ....s..............................x.............................s.s.s.. [ 61%] ...................s....ss......s..ss.........ssss........ss............ [ 61%] ........................................................................ [ 61%] ........s.................................s...................s......... [ 61%] ..............................s..ss..................................... [ 61%] ..s..........s.........s..s...s....................ssss.........ss...... [ 61%] ........................................s..................ss.........ss [ 61%] ..ss....................sss......sss....sssssssssssssssss......s.ss.ss.. [ 61%] ..s..s.x...............s...s...ss..................sssssx.xs..sssss.s.s. [ 61%] ..............ss......ss..ss................sss.....sss..sssssssssssssss [ 62%] ssss....sssss.s...s..s..xsss.............s...s.s.ss..................sss [ 62%] s......s....sss.ss.s...s.........................s...................... [ 62%] ........................................s............................... [ 62%] ..........s......s.ss...........................................s.....ss [ 62%] .ss.ss.ss...ss...ss....ss...ss.ss.ss.ss.ss.ss.ss.ss..s..ss........ss.ss. [ 62%] ss...s...s...ss...s.s..sss.....ss.ss.ss.s..s.ss.ss.ss.ss.ss.ss.ss.ss.ss. [ 62%] ss.ss.ss...ss.s..........................ss............................. [ 62%] ..........s.......................s...ss.....s.s..ss.ss.ss.ss.ss..ss.... [ 62%] ss.ss.ss.ss.ss...ss.ss.ss.ss.......ss.ss...ss.s...ss..ss.ss..ss.....ss.s [ 62%] .s.ss.ss....ss..ss..ss..s.s...ss.ss.ss.ss.ss.ss.ss..ss....ss..s.ss.ss... [ 62%] ss...ss..ss...s.s...ss....ss...ss....ss...ss..ssss.ssss.ssssssssss.sssss [ 62%] ssssssssssssssss.sssssssssssssssssssssssssssss.sssssssssssssssssssssssss [ 63%] ssssssssssssssssssssssssssssssssssss.........................s.......... [ 63%] ..............s.s..............sss..ss..............sss.....sss...ssssss [ 63%] .sssssssssssss....sssssss...s..s.xss..........sssss...sss.ss............ [ 63%] .....ssss...s..sssss.s.s................s...s.........s........s........ [ 63%] ...............sss.....................s....ss.......s..ss.........ssss. [ 63%] .....ss.......................................s..................s...... [ 63%] ..s..............................sss.....................s.....s.......s [ 63%] ..s...s............ss.ss.......ss............................ss......... [ 63%] ....s..................ss.....ssss...ss..ss...ss.......ss............... [ 63%] s.ss..............s.s.s..........................................ss..s.s [ 63%] ..sss..ssssss.....s.s....ss.............sss.s.s....s..s...............x. [ 64%] ..............s...s...ss............................sssss............... [ 64%] ................................x....x......s................sssss.s.s.. [ 64%] .......................s.s................ss......ss.................... [ 64%] .s...ss.....................ss....s.......s.ssss.........ss....ssss..... [ 64%] ....ss..s.ss.....sss..............sss.......ss........s...........s..sx. [ 64%] xXxXxx....................xss.s..................s.....s.s.ss........... [ 64%] .......ssss..s..sssss.s..s...................s.......................... [ 64%] .....................................................................s.. [ 64%] ........................................................................ [ 64%] ................................................................s....... [ 64%] ........................................................................ [ 64%] ........................................................................ [ 65%] .s...................................................................... [ 65%] ..........................s...............................s............. [ 65%] ................ss......................s............................... [ 65%] .........s.............................................s...............s [ 65%] ...................s.s......sss..ss.............sss....sss..ssssssssssss [ 65%] sssssss.....sssssss...s..s.xs.s...........sssss.......sss.ss............ [ 65%] .....ssss..........s..sssss.s..s....................s...s............s.. [ 65%] ........s................................................s.ss........... [ 65%] ....................................................................s... [ 65%] .ss............s..ss.........ssss......ss............................... [ 65%] ....sss..........................s............................s......... [ 65%] .....s..s......s.......................................................s [ 66%] s.....ss...................................................ss........... [ 66%] ........................................................................ [ 66%] .........................................s.............................. [ 66%] ......................................ss................................ [ 66%] ..............s.s....ss....................sss........s.ss.............. [ 66%] ...ss..sss.ss.s.ss.ss.s.ssss........................sss.ss........s..s.. [ 66%] .x................................s........s.........ss................. [ 66%] .....s.ssssx..................x....s.....ssss.s.s...s...............ss.. [ 66%] .............ss..ss................sss.....sss..sssssssssssssssssss....s [ 66%] sss.s..s...s..s...s.......xsss................s.............s...s.s.ss.. [ 66%] .................ss..sss.............................sss.........s...sss [ 67%] .ss............ss.....s.......s.......s..s...s................ssss...... [ 67%] ...s........ss.......................................................... [ 67%] ..........s............................................s................ [ 67%] ....s......................................s...........ss............... [ 67%] ...s.ss.........ss...............................s.sss...........sss.... [ 67%] sssssssssssssssss.................sss.ss...........ss................... [ 67%] .s...................s........s........x..........s..................... [ 67%] .................s......................s.......s...ss.................. [ 67%] .........sssssx..s.........xs..sssss.s.s................s.s............. [ 67%] ..ss.....s.ss..ss.............sss....sss..ssssssssss.sssssssss..s...s.ss [ 67%] s..s.ss.s...ss...s.....s...........sss..xss........sss...sssssssssssssss [ 67%] ssss....ssss..s...s.....sss.ss.ss.xsss......sss.ss..................ssss [ 68%] ....s..sssss.s..s.............s........s...s.........s.s.ss............. [ 68%] .....ssss..s.........s..................s.......sss..s.s.s.ss..s.......s [ 68%] ...............s.....s.s......s..ss.........ssss.......ss............... [ 68%] .................s...................................................s.. [ 68%] ................s.....................................s...............s. [ 68%] ...s.....................................sss............................ [ 68%] ..s.......s............s..s...s..............................ssss..s.... [ 68%] ....ss..............................................s..................s [ 68%] .....s..s..................s.............................ss.........s.s. [ 68%] .....s......s.........s.......................sss.................sss... [ 68%] ......sssssssssss.ssssss.........s.ss..ss......s......s..s..x........... [ 68%] ..........s............s...ss..................sssssx.....xs..ss..s.s.s. [ 69%] ......s..........s.......s..................ss.............ss..ss.....s. [ 69%] .....................sss.....sss......s..ss.s..ss..sssss.sss..ss...sssss [ 69%] ....ssss.s..s...s..s.xsss......s.ss..ss.............sss........sss...sss [ 69%] ssss.sss.ssssss.ssss....ssss.ss.s...s..s....s.s.ss...........x......ss.s [ 69%] ss.s.......s..sssss..s..s........sssss..............s........sss.ss..... [ 69%] ............ssss..........................................s.........s... [ 69%] ............s.ssss.s.s.....................s....................s....... [ 69%] ..s.................................s..........s.............s.......... [ 69%] .............sss....................s.....s.s.......s..s..ss............ [ 69%] ....ssss...............ss..............s................................ [ 69%] .........ss......................s...................................... [ 70%] ....s.....s...................................s......................... [ 70%] .......s.....s...............................sss........................ [ 70%] s..........s..........s..s...s.......s.............ssss.......ss........ [ 70%] ..........................s...s...............s..s.ss....s.s............ [ 70%] ....sss....sss..sssssssssssssssssss....ssss.ss.s...s..s..xs.s........... [ 70%] ...ss.........sssss...sss..ss.......ss..ss........................sss... [ 70%] .........sss..ss....sssssssssssssssss.ss.....sss.ss.......ss...s..sssss. [ 70%] s.s......x.........s...s....................s...s..s.........s..ss...... [ 70%] ...................ss.sss........xx...s..s.s.s.s.ss.s.s.....ss.......... [ 70%] ..........s.....s......s.......s....s.s..s...s.........ssss....ss..ss... [ 70%] .............sss........sss....ssssss....s..sssss...s..s..ss.s.....ss.ss [ 70%] .....ss..ss.s..s....s...s.xsss.....................s...s.s.ss........... [ 71%] .......ss.s.ss.........s..sssss.s..s.........................s.......... [ 71%] s..................................s.................................... [ 71%] ......sss.......s....................s............s.............s...s... [ 71%] .s..............ssss............ss......................s............... [ 71%] ..............................................s..........s.............. [ 71%] .............s.......................................................... [ 71%] ........................................................................ [ 71%] .....s....................................s.....s....................... [ 71%] ............................ss.......................................... [ 71%] ..s..................................................................... [ 71%] .........................s.............................................. [ 71%] ........................................................................ [ 72%] ..............................................s......................... [ 72%] ........................................................................ [ 72%] .....................s.................................................. [ 72%] .............s........s................................................. [ 72%] ...................................s..ss......ss........................ [ 72%] ...sss......ssssssssss...sssssss........s.....ss..sssss...ssss.s.sssssss [ 72%] ss....ssss.ss..s.....s..s................xss............................ [ 72%] ...........sssss............sssss........................sss.ss......... [ 72%] .......................s.sss......................s......sssss.s.s...... [ 72%] ........s...s......................s.........s.......................... [ 72%] ........................s..ss..................................s.......s [ 73%] .s..........s....ss..................ss......ss........ss............... [ 73%] .....................................ss...................s...........ss [ 73%] ..............................................s........................s [ 73%] .....................................sss.....................s.......... [ 73%] ...ss..s.......s..s...s.........ssss.....ss............................. [ 73%] ........s..................ss.......ss..ss....................sss....... [ 73%] sss........sssssssssss.ssssss.....sss.ss.....s..s.x...............s...s. [ 73%] ..ss.................................................................sss [ 73%] ssxxs..ssss...................................s.s.s...............ss.... [ 73%] ...ss..ss................sss.....sss..sssssssssssssssssss....ssss.s..s.. [ 73%] .s..s..xsss.............s...s.s.ss..................ssss..s..sssss.s..s. [ 73%] ..................s..............................................s...... [ 74%] ...............................s........................................ [ 74%] .....s...............s...................s.............................. [ 74%] .....ss....................s......................................s..... [ 74%] ............................................s...............s........... [ 74%] .........s.s......s.ss..ss..............sss....sss..sssssssssssssssssss. [ 74%] ...ssss.ss.s...s..s.xss..........sssss...sss.ss.................ssss...s [ 74%] ..sssss.s.s..............s...s.......s.........s........................ [ 74%] sss....................s.....s.s......s..ss.........ssss......ss........ [ 74%] ...........................s..................s.................s....... [ 74%] ...s...s...s...s...s...s...s...ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..s [ 74%] s..ss..ss..ss..ss..ss..ss..ss..ss..ss..s...s...s...s...s...s...s...s...s [ 74%] ...s...s...s...s...s...s...s...s...s...s...s............................ [ 75%] ........................................................................ [ 75%] ........................................................................ [ 75%] ..................................................................s...s. [ 75%] ..s...s...s...s...s...s...s...s...s...s...s...s...s....s...s...s...s...s [ 75%] ....s....s...s...s...s...s...s...s...s...s...s...s...s...s...s...s...s.. [ 75%] .s...s...s...ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss. [ 75%] .ss..ss..ss..ss..ss..s...s...s...s...s...s...s...s...s...s...s...s...s.. [ 75%] .s...s...s...s...s...s...s.............................................. [ 75%] ........................................................................ [ 75%] ........................................................................ [ 75%] ........................................................................ [ 76%] ........................................................................ [ 76%] ........................................................................ [ 76%] ............s...s...s...s...s...s...s...s...s...s...s...s...s...s...s... [ 76%] s...s...s...s...s...s...s...s...s...s...s...s...s...s...s...s...s...s... [ 76%] s...s...s...s...s...s...s...ss..ss..ss..ss..ss..ss..ss..ss..ss..ss..ss.. [ 76%] ss..ss..ss..ss..ss..ss..ss..ss..ss..s...s...s...s...s...s...s...s...s... [ 76%] s...s...s...s...s...s...s...s...s...s...s............................... [ 76%] ........................................................................ [ 76%] ........................................................................ [ 76%] ........................................................................ [ 76%] .......................................................X.X.............. [ 76%] ........................................................................ [ 77%] s....................................................................... [ 77%] ........................................................................ [ 77%] ........................................................................ [ 77%] ........................................................................ [ 77%] ...........x............................................................ [ 77%] ......................................x................................. [ 77%] ..............................x..xx..................................... [ 77%] ........................................................................ [ 77%] ........................................................................ [ 77%] ....................................................x................... [ 77%] ........................................................................ [ 77%] ........................................................................ [ 78%] ........................................................................ [ 78%] ......x................................................................. [ 78%] ........................................................................ [ 78%] ........................................................................ [ 78%] ........................................................................ [ 78%] ........................................................................ [ 78%] ........................................................................ [ 78%] ........................................................................ [ 78%] ........................................................................ [ 78%] ...................................................................s.... [ 78%] .........................................x...X.......................... [ 79%] ...................................................xxx.................. [ 79%] ........................................................................ [ 79%] ........................................................................ [ 79%] ........................................X............................... [ 79%] ........................................................................ [ 79%] ........................................................................ [ 79%] ........................................................................ [ 79%] .............................................xxxxx..xx..xx.............. [ 79%] ........................................................................ [ 79%] ....................................................xx.....x.......x.... [ 79%] .......................x......x........x.....x..................x....x.. [ 79%] .....................x......x........................................... [ 80%] ........................................................................ [ 80%] .............................s....s....s....s...s...s.....s...s.....s... [ 80%] s....s....s.....s...s...s...s...s....s...s...s....s...s....s...s...s...s [ 80%] ...s......s...s...s...s...s...s......................................... [ 80%] ........................................................................ [ 80%] ........................................................................ [ 80%] .............x...x....................................................x. [ 80%] ..x...x................................................................. [ 80%] ........................................................................ [ 80%] ........................................................................ [ 80%] ..............x.......................................x................. [ 80%] ...............x.........x............................x................. [ 81%] .x...................................................................... [ 81%] ........................................................................ [ 81%] ........................................................................ [ 81%] ...................................xx................................... [ 81%] ........................................................................ [ 81%] ........................................................................ [ 81%] ........................................................................ [ 81%] ........................................................................ [ 81%] ........................................................................ [ 81%] ........................................................................ [ 81%] ........................................................................ [ 81%] ........................................................................ [ 82%] ........................................................................ [ 82%] ........................................................................ [ 82%] ........................................................................ [ 82%] ........................................................................ [ 82%] ........................................................................ [ 82%] ........................................................................ [ 82%] ........................................................................ [ 82%] ........................................................................ [ 82%] ........................................................................ [ 82%] ........................................................................ [ 82%] ..............................xxxxxxxxxxxxxxx........................... [ 83%] ........................................................................ [ 83%] ........................................................................ [ 83%] ....s...........................................s....................... [ 83%] ...........s.............x.x............................................ [ 83%] s..................................s.................................... [ 83%] .........s.............................................................. [ 83%] ........................................................................ [ 83%] ........................................................................ [ 83%] ........................................................................ [ 83%] ........................................................................ [ 83%] ........................................................................ [ 83%] ........................................................................ [ 84%] ........................................................................ [ 84%] ........................................................................ [ 84%] ........................................................................ [ 84%] ........................................................................ [ 84%] ........................................................................ [ 84%] ........................................................................ [ 84%] ........................................................................ [ 84%] ..................................ss.................................... [ 84%] .ssssss..........................................................ss..... [ 84%] ........................................................................ [ 84%] ........................................................................ [ 84%] ............ss.......................................................... [ 85%] ........................................................................ [ 85%] ...........................ss........................................... [ 85%] ...sss........................................................s......... [ 85%] ......................s..s..........x........xs....x........xsx...x..... [ 85%] ...................ss................................................... [ 85%] ........................................................................ [ 85%] ........................................................................ [ 85%] ........................................................................ [ 85%] ...................s.................................................... [ 85%] .........................................s................ss.......s.... [ 85%] ....s..s...........s.ssss.sss....................s.....ss..s......s..... [ 86%] .......s......s.........s......ss....................................... [ 86%] ...............................................................s........ [ 86%] ..................ssss.ss....................s.........s.s....s......... [ 86%] ..ss...........ss..........ss..ss..ss..ss..ss..ss..ss..............ss... [ 86%] ...ss..................ss..ss..ss......ss..ss........ssss..ss..ss..ss..s [ 86%] s..ss..ss..ss..........ss..ss......ss..........ss..............ss....... [ 86%] .ssss..ss..ss..ss..ss..ss..ss..ss..ssssssssss..ss..ss..........ss..sssss [ 86%] s..........ss..........ss......ss........ssss..ssssss......ss..ss....... [ 86%] ...........ss..ss........ssss......ss..........ss....ssss..ssssss......s [ 86%] s..ss..ssssssssss..ss..ss......ssssss..............ss................... [ 86%] .........................s..........................ssss.ss............. [ 86%] .......s.........s.s....s...........ss.................................. [ 87%] ..............................xssss.ss.................X.............s.. [ 87%] ....s...........ss....................................s................. [ 87%] ......................................................s................. [ 87%] ........................................................................ [ 87%] ........................................................................ [ 87%] ........................................................................ [ 87%] ........................................................................ [ 87%] ........................................................................ [ 87%] ........................................................................ [ 87%] ........................................................................ [ 87%] ........................................................................ [ 87%] ........................................................................ [ 88%] ........................................................................ [ 88%] ........................................................................ [ 88%] ........................................................................ [ 88%] ........................................................................ [ 88%] ......................s................................................. [ 88%] ........................................................................ [ 88%] ........................................................................ [ 88%] ........................................................................ [ 88%] ........................................................................ [ 88%] ........................................................................ [ 88%] ........................................................................ [ 89%] ........................................................................ [ 89%] ..........................ssssssssssssssssssssssss...................... [ 89%] ........................................................................ [ 89%] ........................................................................ [ 89%] ........................................................................ [ 89%] ........................................................................ [ 89%] ................s....................................................... [ 89%] ........................................................................ [ 89%] ........................................................................ [ 89%] ........................................................................ [ 89%] ........................................................................ [ 89%] ........................................................................ [ 90%] ........................................................................ [ 90%] ........................................................................ [ 90%] ........................................................................ [ 90%] ........................................................................ [ 90%] ........................................................................ [ 90%] ........................................................................ [ 90%] ........................................................................ [ 90%] ........................................................................ [ 90%] ........................................................................ [ 90%] ........................................................................ [ 90%] ........................................................................ [ 90%] .....................................................ss.xxxx.....s..s... [ 91%] ......................xxxxxxxxxx........................s............... [ 91%] .................s..............................s....................... [ 91%] .....s.............ss................................................... [ 91%] ......................................................................s. [ 91%] ........................................................................ [ 91%] .......................................................................s [ 91%] ssss.s.....ss........................................................... [ 91%] ........................................................................ [ 91%] ........................................................................ [ 91%] ..........xxxxxxxxxxxxxxxxxxxxxxxxxxx................................... [ 91%] ........................................................................ [ 92%] ....................................................s................... [ 92%] s.........................sss........................................... [ 92%] ........................................................................ [ 92%] ........................................s............................... [ 92%] .......................................s.......s.x....ss.....xx.xx.s.... [ 92%] ...........xs..xxxx.xx......x..........xsx..........s.s....x.x.x....xx.x [ 92%] s....x..x.x.xxxxx.xxxx..xxxxxx..xxxxxx..xxx.x..x...x.xxxxxxxxxxxxxx..xxx [ 92%] ..x..x.x.xxxx.x....xx..x.x..x.xxxxx..xxxx.xx...s........................ [ 92%] ........................................................................ [ 92%] ......................ss....sss....s.s.s.ss...ss..s.......s.....s....s.s [ 92%] ..ssss...............s...s.ss......s....s....ssss.....s....ss....s.ss.ss [ 92%] ss.s.............ss....s...s..s..ssss.ss.....ss......s.....s..s.ss.ss... [ 93%] ......ss.sss.s.ss......s....s..s.ssss.s.sss..s.sss..ss.s..s.ss.ss....... [ 93%] s.........s..........s.....sss.......................................... [ 93%] ........................................................................ [ 93%] ........................................................s............... [ 93%] .......ss............................s.s........s.......s.....ssssssss.. [ 93%] s.......s.......s.........s.s..............sssssssss.s.................. [ 93%] ..................s..................................................... [ 93%] ..........................................................s............. [ 93%] ......s........................s........................................ [ 93%] .........................s.............................................. [ 93%] ........................................................................ [ 93%] .......................................s..s......ss........s............ [ 94%] ........................................................................ [ 94%] ........................................................................ [ 94%] ..........................s.s..ss..ss............ssss....ssss........sss [ 94%] sssss........ssssssss................................................... [ 94%] ........................................................................ [ 94%] ........................................................................ [ 94%] ........................................................................ [ 94%] ...........................................................sssssssssssss [ 94%] sssssss................................................................. [ 94%] ........................................................................ [ 94%] ........................................................................ [ 95%] ........................................................................ [ 95%] ..............................x......................................... [ 95%] ................sss..........................................s.s.s.s.s.s [ 95%] .s...ssss............................................................... [ 95%] ..............................ssss........ssss........ssss........ssss.. [ 95%] ........................................................................ [ 95%] ........................................................................ [ 95%] ........................................................s............... [ 95%] .......................................sssss............................ [ 95%] .................ss..........ssss....................................... [ 95%] ........................................................................ [ 95%] ........................................................................ [ 96%] .............................s..ss...sssssss.sss..s..................... [ 96%] .......sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 96%] sssssssssssssssssssssssssssssssssssssssssssssssssssss................... [ 96%] ..................................ssssssssssssssssssssssssssssssssssssss [ 96%] ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss [ 96%] ssssssss.............................s..ss...sssssss.sss..s............. [ 96%] ....................ss.................................................. [ 96%] ...................................................s.................... [ 96%] ........................................................................ [ 96%] ........................................................................ [ 96%] ........................................................................ [ 96%] ........................................................................ [ 97%] ..............................................ss........................ [ 97%] ........................................................................ [ 97%] ................................ss......s............................... [ 97%] ........................ssssss.............................xxx.......... [ 97%] ..........................ss............................................ [ 97%] ........................................................................ [ 97%] ........................................................................ [ 97%] ........................................................................ [ 97%] ........................................................................ [ 97%] ........................................................................ [ 97%] ........................................................................ [ 98%] .........................s.............................................. [ 98%] .............s...s....xs..xx.x..x.........................x............. [ 98%] ........................................................................ [ 98%] ........................................................................ [ 98%] ........................................................................ [ 98%] ........................................................................ [ 98%] ........................................................................ [ 98%] ........................................................s.ss.sss........ [ 98%] ........................................................................ [ 98%] ........................................................................ [ 98%] ........................................................................ [ 98%] ........................................................................ [ 99%] ........................................................................ [ 99%] .............sssssssssssssssssssssss.................................... [ 99%] ...........................................................s............ [ 99%] ........................................................................ [ 99%] ........................................................................ [ 99%] ........................................................................ [ 99%] ........................................................................ [ 99%] ........................................................................ [ 99%] ........................................................................ [ 99%] ........................................................................ [ 99%] ........................................................................ [ 99%] ...... [100%] =================================== FAILURES =================================== ______________ TestLstsq.test_random_exact[True-gelsd-20-float32] ______________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , n = 20, lapack_driver = 'gelsd' overwrite = True @pytest.mark.parametrize("dtype", REAL_DTYPES) @pytest.mark.parametrize("n", (20, 200)) @pytest.mark.parametrize("lapack_driver", lapack_drivers) @pytest.mark.parametrize("overwrite", (True, False)) def test_random_exact(self, dtype, n, lapack_driver, overwrite): rng = np.random.RandomState(1234) a = np.asarray(rng.random([n, n]), dtype=dtype) for i in range(n): a[i, i] = 20 * (0.1 + a[i, i]) for i in range(4): b = np.asarray(rng.random([n, 3]), dtype=dtype) # Store values in case they are overwritten later a1 = a.copy() b1 = b.copy() out = lstsq(a1, b1, lapack_driver=lapack_driver, overwrite_a=overwrite, overwrite_b=overwrite) x = out[0] r = out[2] assert_(r == n, f'expected efficient rank {n}, ' f'got {r}') if dtype is np.float32: > assert_allclose( dot(a, x), b, rtol=500 * _eps_cast(a1.dtype), atol=500 * _eps_cast(a1.dtype), err_msg=f"driver: {lapack_driver}") E AssertionError: E Not equal to tolerance rtol=5.96046e-05, atol=5.96046e-05 E driver: gelsd E Mismatched elements: 60 / 60 (100%) E Max absolute difference among violations: 23.499973 E Max relative difference among violations: 218.52795 E ACTUAL: array([[-5.388894e+00, 1.036606e+00, 1.324945e+00], E [ 2.378579e+01, -5.200631e-01, -2.462317e+00], E [ 1.007970e+01, -7.535110e-02, -1.566284e+00],... E DESIRED: array([[0.714994, 0.724091, 0.018676], E [0.285813, 0.580486, 0.930787], E [0.338997, 0.120083, 0.516273],... scipy/linalg/tests/test_basic.py:1403: AssertionError _____________ TestLstsq.test_random_exact[True-gelsd-200-float32] ______________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , n = 200, lapack_driver = 'gelsd' overwrite = True @pytest.mark.parametrize("dtype", REAL_DTYPES) @pytest.mark.parametrize("n", (20, 200)) @pytest.mark.parametrize("lapack_driver", lapack_drivers) @pytest.mark.parametrize("overwrite", (True, False)) def test_random_exact(self, dtype, n, lapack_driver, overwrite): rng = np.random.RandomState(1234) a = np.asarray(rng.random([n, n]), dtype=dtype) for i in range(n): a[i, i] = 20 * (0.1 + a[i, i]) for i in range(4): b = np.asarray(rng.random([n, 3]), dtype=dtype) # Store values in case they are overwritten later a1 = a.copy() b1 = b.copy() out = lstsq(a1, b1, lapack_driver=lapack_driver, overwrite_a=overwrite, overwrite_b=overwrite) x = out[0] r = out[2] > assert_(r == n, f'expected efficient rank {n}, ' f'got {r}') E AssertionError: expected efficient rank 200, got 88 scipy/linalg/tests/test_basic.py:1400: AssertionError ______________ TestLstsq.test_random_exact[True-gelss-20-float32] ______________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , n = 20, lapack_driver = 'gelss' overwrite = True @pytest.mark.parametrize("dtype", REAL_DTYPES) @pytest.mark.parametrize("n", (20, 200)) @pytest.mark.parametrize("lapack_driver", lapack_drivers) @pytest.mark.parametrize("overwrite", (True, False)) def test_random_exact(self, dtype, n, lapack_driver, overwrite): rng = np.random.RandomState(1234) a = np.asarray(rng.random([n, n]), dtype=dtype) for i in range(n): a[i, i] = 20 * (0.1 + a[i, i]) for i in range(4): b = np.asarray(rng.random([n, 3]), dtype=dtype) # Store values in case they are overwritten later a1 = a.copy() b1 = b.copy() out = lstsq(a1, b1, lapack_driver=lapack_driver, overwrite_a=overwrite, overwrite_b=overwrite) x = out[0] r = out[2] assert_(r == n, f'expected efficient rank {n}, ' f'got {r}') if dtype is np.float32: > assert_allclose( dot(a, x), b, rtol=500 * _eps_cast(a1.dtype), atol=500 * _eps_cast(a1.dtype), err_msg=f"driver: {lapack_driver}") E AssertionError: E Not equal to tolerance rtol=5.96046e-05, atol=5.96046e-05 E driver: gelss E Mismatched elements: 60 / 60 (100%) E Max absolute difference among violations: 23.499968 E Max relative difference among violations: 218.52765 E ACTUAL: array([[-5.388894e+00, 1.036606e+00, 1.324946e+00], E [ 2.378578e+01, -5.200632e-01, -2.462318e+00], E [ 1.007970e+01, -7.535087e-02, -1.566285e+00],... E DESIRED: array([[0.714994, 0.724091, 0.018676], E [0.285813, 0.580486, 0.930787], E [0.338997, 0.120083, 0.516273],... scipy/linalg/tests/test_basic.py:1403: AssertionError _____________ TestLstsq.test_random_exact[True-gelss-200-float32] ______________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , n = 200, lapack_driver = 'gelss' overwrite = True @pytest.mark.parametrize("dtype", REAL_DTYPES) @pytest.mark.parametrize("n", (20, 200)) @pytest.mark.parametrize("lapack_driver", lapack_drivers) @pytest.mark.parametrize("overwrite", (True, False)) def test_random_exact(self, dtype, n, lapack_driver, overwrite): rng = np.random.RandomState(1234) a = np.asarray(rng.random([n, n]), dtype=dtype) for i in range(n): a[i, i] = 20 * (0.1 + a[i, i]) for i in range(4): b = np.asarray(rng.random([n, 3]), dtype=dtype) # Store values in case they are overwritten later a1 = a.copy() b1 = b.copy() out = lstsq(a1, b1, lapack_driver=lapack_driver, overwrite_a=overwrite, overwrite_b=overwrite) x = out[0] r = out[2] > assert_(r == n, f'expected efficient rank {n}, ' f'got {r}') E AssertionError: expected efficient rank 200, got 88 scipy/linalg/tests/test_basic.py:1400: AssertionError ______________ TestLstsq.test_random_exact[True-gelsy-20-float32] ______________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , n = 20, lapack_driver = 'gelsy' overwrite = True @pytest.mark.parametrize("dtype", REAL_DTYPES) @pytest.mark.parametrize("n", (20, 200)) @pytest.mark.parametrize("lapack_driver", lapack_drivers) @pytest.mark.parametrize("overwrite", (True, False)) def test_random_exact(self, dtype, n, lapack_driver, overwrite): rng = np.random.RandomState(1234) a = np.asarray(rng.random([n, n]), dtype=dtype) for i in range(n): a[i, i] = 20 * (0.1 + a[i, i]) for i in range(4): b = np.asarray(rng.random([n, 3]), dtype=dtype) # Store values in case they are overwritten later a1 = a.copy() b1 = b.copy() out = lstsq(a1, b1, lapack_driver=lapack_driver, overwrite_a=overwrite, overwrite_b=overwrite) x = out[0] r = out[2] > assert_(r == n, f'expected efficient rank {n}, ' f'got {r}') E AssertionError: expected efficient rank 20, got 8 scipy/linalg/tests/test_basic.py:1400: AssertionError _____________ TestLstsq.test_random_exact[True-gelsy-200-float32] ______________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , n = 200, lapack_driver = 'gelsy' overwrite = True @pytest.mark.parametrize("dtype", REAL_DTYPES) @pytest.mark.parametrize("n", (20, 200)) @pytest.mark.parametrize("lapack_driver", lapack_drivers) @pytest.mark.parametrize("overwrite", (True, False)) def test_random_exact(self, dtype, n, lapack_driver, overwrite): rng = np.random.RandomState(1234) a = np.asarray(rng.random([n, n]), dtype=dtype) for i in range(n): a[i, i] = 20 * (0.1 + a[i, i]) for i in range(4): b = np.asarray(rng.random([n, 3]), dtype=dtype) # Store values in case they are overwritten later a1 = a.copy() b1 = b.copy() out = lstsq(a1, b1, lapack_driver=lapack_driver, overwrite_a=overwrite, overwrite_b=overwrite) x = out[0] r = out[2] > assert_(r == n, f'expected efficient rank {n}, ' f'got {r}') E AssertionError: expected efficient rank 200, got 6 scipy/linalg/tests/test_basic.py:1400: AssertionError ______________ TestLstsq.test_random_exact[True-None-20-float32] _______________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , n = 20, lapack_driver = None, overwrite = True @pytest.mark.parametrize("dtype", REAL_DTYPES) @pytest.mark.parametrize("n", (20, 200)) @pytest.mark.parametrize("lapack_driver", lapack_drivers) @pytest.mark.parametrize("overwrite", (True, False)) def test_random_exact(self, dtype, n, lapack_driver, overwrite): rng = np.random.RandomState(1234) a = np.asarray(rng.random([n, n]), dtype=dtype) for i in range(n): a[i, i] = 20 * (0.1 + a[i, i]) for i in range(4): b = np.asarray(rng.random([n, 3]), dtype=dtype) # Store values in case they are overwritten later a1 = a.copy() b1 = b.copy() out = lstsq(a1, b1, lapack_driver=lapack_driver, overwrite_a=overwrite, overwrite_b=overwrite) x = out[0] r = out[2] assert_(r == n, f'expected efficient rank {n}, ' f'got {r}') if dtype is np.float32: > assert_allclose( dot(a, x), b, rtol=500 * _eps_cast(a1.dtype), atol=500 * _eps_cast(a1.dtype), err_msg=f"driver: {lapack_driver}") E AssertionError: E Not equal to tolerance rtol=5.96046e-05, atol=5.96046e-05 E driver: None E Mismatched elements: 60 / 60 (100%) E Max absolute difference among violations: 23.499973 E Max relative difference among violations: 218.52795 E ACTUAL: array([[-5.388894e+00, 1.036606e+00, 1.324945e+00], E [ 2.378579e+01, -5.200631e-01, -2.462317e+00], E [ 1.007970e+01, -7.535110e-02, -1.566284e+00],... E DESIRED: array([[0.714994, 0.724091, 0.018676], E [0.285813, 0.580486, 0.930787], E [0.338997, 0.120083, 0.516273],... scipy/linalg/tests/test_basic.py:1403: AssertionError ______________ TestLstsq.test_random_exact[True-None-200-float32] ______________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , n = 200, lapack_driver = None, overwrite = True @pytest.mark.parametrize("dtype", REAL_DTYPES) @pytest.mark.parametrize("n", (20, 200)) @pytest.mark.parametrize("lapack_driver", lapack_drivers) @pytest.mark.parametrize("overwrite", (True, False)) def test_random_exact(self, dtype, n, lapack_driver, overwrite): rng = np.random.RandomState(1234) a = np.asarray(rng.random([n, n]), dtype=dtype) for i in range(n): a[i, i] = 20 * (0.1 + a[i, i]) for i in range(4): b = np.asarray(rng.random([n, 3]), dtype=dtype) # Store values in case they are overwritten later a1 = a.copy() b1 = b.copy() out = lstsq(a1, b1, lapack_driver=lapack_driver, overwrite_a=overwrite, overwrite_b=overwrite) x = out[0] r = out[2] > assert_(r == n, f'expected efficient rank {n}, ' f'got {r}') E AssertionError: expected efficient rank 200, got 88 scipy/linalg/tests/test_basic.py:1400: AssertionError _____________ TestLstsq.test_random_exact[False-gelsd-20-float32] ______________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , n = 20, lapack_driver = 'gelsd' overwrite = False @pytest.mark.parametrize("dtype", REAL_DTYPES) @pytest.mark.parametrize("n", (20, 200)) @pytest.mark.parametrize("lapack_driver", lapack_drivers) @pytest.mark.parametrize("overwrite", (True, False)) def test_random_exact(self, dtype, n, lapack_driver, overwrite): rng = np.random.RandomState(1234) a = np.asarray(rng.random([n, n]), dtype=dtype) for i in range(n): a[i, i] = 20 * (0.1 + a[i, i]) for i in range(4): b = np.asarray(rng.random([n, 3]), dtype=dtype) # Store values in case they are overwritten later a1 = a.copy() b1 = b.copy() out = lstsq(a1, b1, lapack_driver=lapack_driver, overwrite_a=overwrite, overwrite_b=overwrite) x = out[0] r = out[2] assert_(r == n, f'expected efficient rank {n}, ' f'got {r}') if dtype is np.float32: > assert_allclose( dot(a, x), b, rtol=500 * _eps_cast(a1.dtype), atol=500 * _eps_cast(a1.dtype), err_msg=f"driver: {lapack_driver}") E AssertionError: E Not equal to tolerance rtol=5.96046e-05, atol=5.96046e-05 E driver: gelsd E Mismatched elements: 60 / 60 (100%) E Max absolute difference among violations: 23.499973 E Max relative difference among violations: 218.52795 E ACTUAL: array([[-5.388894e+00, 1.036606e+00, 1.324945e+00], E [ 2.378579e+01, -5.200631e-01, -2.462317e+00], E [ 1.007970e+01, -7.535110e-02, -1.566284e+00],... E DESIRED: array([[0.714994, 0.724091, 0.018676], E [0.285813, 0.580486, 0.930787], E [0.338997, 0.120083, 0.516273],... scipy/linalg/tests/test_basic.py:1403: AssertionError _____________ TestLstsq.test_random_exact[False-gelsd-200-float32] _____________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , n = 200, lapack_driver = 'gelsd' overwrite = False @pytest.mark.parametrize("dtype", REAL_DTYPES) @pytest.mark.parametrize("n", (20, 200)) @pytest.mark.parametrize("lapack_driver", lapack_drivers) @pytest.mark.parametrize("overwrite", (True, False)) def test_random_exact(self, dtype, n, lapack_driver, overwrite): rng = np.random.RandomState(1234) a = np.asarray(rng.random([n, n]), dtype=dtype) for i in range(n): a[i, i] = 20 * (0.1 + a[i, i]) for i in range(4): b = np.asarray(rng.random([n, 3]), dtype=dtype) # Store values in case they are overwritten later a1 = a.copy() b1 = b.copy() out = lstsq(a1, b1, lapack_driver=lapack_driver, overwrite_a=overwrite, overwrite_b=overwrite) x = out[0] r = out[2] > assert_(r == n, f'expected efficient rank {n}, ' f'got {r}') E AssertionError: expected efficient rank 200, got 88 scipy/linalg/tests/test_basic.py:1400: AssertionError _____________ TestLstsq.test_random_exact[False-gelss-20-float32] ______________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , n = 20, lapack_driver = 'gelss' overwrite = False @pytest.mark.parametrize("dtype", REAL_DTYPES) @pytest.mark.parametrize("n", (20, 200)) @pytest.mark.parametrize("lapack_driver", lapack_drivers) @pytest.mark.parametrize("overwrite", (True, False)) def test_random_exact(self, dtype, n, lapack_driver, overwrite): rng = np.random.RandomState(1234) a = np.asarray(rng.random([n, n]), dtype=dtype) for i in range(n): a[i, i] = 20 * (0.1 + a[i, i]) for i in range(4): b = np.asarray(rng.random([n, 3]), dtype=dtype) # Store values in case they are overwritten later a1 = a.copy() b1 = b.copy() out = lstsq(a1, b1, lapack_driver=lapack_driver, overwrite_a=overwrite, overwrite_b=overwrite) x = out[0] r = out[2] assert_(r == n, f'expected efficient rank {n}, ' f'got {r}') if dtype is np.float32: > assert_allclose( dot(a, x), b, rtol=500 * _eps_cast(a1.dtype), atol=500 * _eps_cast(a1.dtype), err_msg=f"driver: {lapack_driver}") E AssertionError: E Not equal to tolerance rtol=5.96046e-05, atol=5.96046e-05 E driver: gelss E Mismatched elements: 60 / 60 (100%) E Max absolute difference among violations: 23.499968 E Max relative difference among violations: 218.52765 E ACTUAL: array([[-5.388894e+00, 1.036606e+00, 1.324946e+00], E [ 2.378578e+01, -5.200632e-01, -2.462318e+00], E [ 1.007970e+01, -7.535087e-02, -1.566285e+00],... E DESIRED: array([[0.714994, 0.724091, 0.018676], E [0.285813, 0.580486, 0.930787], E [0.338997, 0.120083, 0.516273],... scipy/linalg/tests/test_basic.py:1403: AssertionError _____________ TestLstsq.test_random_exact[False-gelss-200-float32] _____________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , n = 200, lapack_driver = 'gelss' overwrite = False @pytest.mark.parametrize("dtype", REAL_DTYPES) @pytest.mark.parametrize("n", (20, 200)) @pytest.mark.parametrize("lapack_driver", lapack_drivers) @pytest.mark.parametrize("overwrite", (True, False)) def test_random_exact(self, dtype, n, lapack_driver, overwrite): rng = np.random.RandomState(1234) a = np.asarray(rng.random([n, n]), dtype=dtype) for i in range(n): a[i, i] = 20 * (0.1 + a[i, i]) for i in range(4): b = np.asarray(rng.random([n, 3]), dtype=dtype) # Store values in case they are overwritten later a1 = a.copy() b1 = b.copy() out = lstsq(a1, b1, lapack_driver=lapack_driver, overwrite_a=overwrite, overwrite_b=overwrite) x = out[0] r = out[2] > assert_(r == n, f'expected efficient rank {n}, ' f'got {r}') E AssertionError: expected efficient rank 200, got 88 scipy/linalg/tests/test_basic.py:1400: AssertionError _____________ TestLstsq.test_random_exact[False-gelsy-20-float32] ______________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , n = 20, lapack_driver = 'gelsy' overwrite = False @pytest.mark.parametrize("dtype", REAL_DTYPES) @pytest.mark.parametrize("n", (20, 200)) @pytest.mark.parametrize("lapack_driver", lapack_drivers) @pytest.mark.parametrize("overwrite", (True, False)) def test_random_exact(self, dtype, n, lapack_driver, overwrite): rng = np.random.RandomState(1234) a = np.asarray(rng.random([n, n]), dtype=dtype) for i in range(n): a[i, i] = 20 * (0.1 + a[i, i]) for i in range(4): b = np.asarray(rng.random([n, 3]), dtype=dtype) # Store values in case they are overwritten later a1 = a.copy() b1 = b.copy() out = lstsq(a1, b1, lapack_driver=lapack_driver, overwrite_a=overwrite, overwrite_b=overwrite) x = out[0] r = out[2] > assert_(r == n, f'expected efficient rank {n}, ' f'got {r}') E AssertionError: expected efficient rank 20, got 8 scipy/linalg/tests/test_basic.py:1400: AssertionError _____________ TestLstsq.test_random_exact[False-gelsy-200-float32] _____________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , n = 200, lapack_driver = 'gelsy' overwrite = False @pytest.mark.parametrize("dtype", REAL_DTYPES) @pytest.mark.parametrize("n", (20, 200)) @pytest.mark.parametrize("lapack_driver", lapack_drivers) @pytest.mark.parametrize("overwrite", (True, False)) def test_random_exact(self, dtype, n, lapack_driver, overwrite): rng = np.random.RandomState(1234) a = np.asarray(rng.random([n, n]), dtype=dtype) for i in range(n): a[i, i] = 20 * (0.1 + a[i, i]) for i in range(4): b = np.asarray(rng.random([n, 3]), dtype=dtype) # Store values in case they are overwritten later a1 = a.copy() b1 = b.copy() out = lstsq(a1, b1, lapack_driver=lapack_driver, overwrite_a=overwrite, overwrite_b=overwrite) x = out[0] r = out[2] > assert_(r == n, f'expected efficient rank {n}, ' f'got {r}') E AssertionError: expected efficient rank 200, got 6 scipy/linalg/tests/test_basic.py:1400: AssertionError ______________ TestLstsq.test_random_exact[False-None-20-float32] ______________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , n = 20, lapack_driver = None, overwrite = False @pytest.mark.parametrize("dtype", REAL_DTYPES) @pytest.mark.parametrize("n", (20, 200)) @pytest.mark.parametrize("lapack_driver", lapack_drivers) @pytest.mark.parametrize("overwrite", (True, False)) def test_random_exact(self, dtype, n, lapack_driver, overwrite): rng = np.random.RandomState(1234) a = np.asarray(rng.random([n, n]), dtype=dtype) for i in range(n): a[i, i] = 20 * (0.1 + a[i, i]) for i in range(4): b = np.asarray(rng.random([n, 3]), dtype=dtype) # Store values in case they are overwritten later a1 = a.copy() b1 = b.copy() out = lstsq(a1, b1, lapack_driver=lapack_driver, overwrite_a=overwrite, overwrite_b=overwrite) x = out[0] r = out[2] assert_(r == n, f'expected efficient rank {n}, ' f'got {r}') if dtype is np.float32: > assert_allclose( dot(a, x), b, rtol=500 * _eps_cast(a1.dtype), atol=500 * _eps_cast(a1.dtype), err_msg=f"driver: {lapack_driver}") E AssertionError: E Not equal to tolerance rtol=5.96046e-05, atol=5.96046e-05 E driver: None E Mismatched elements: 60 / 60 (100%) E Max absolute difference among violations: 23.499973 E Max relative difference among violations: 218.52795 E ACTUAL: array([[-5.388894e+00, 1.036606e+00, 1.324945e+00], E [ 2.378579e+01, -5.200631e-01, -2.462317e+00], E [ 1.007970e+01, -7.535110e-02, -1.566284e+00],... E DESIRED: array([[0.714994, 0.724091, 0.018676], E [0.285813, 0.580486, 0.930787], E [0.338997, 0.120083, 0.516273],... scipy/linalg/tests/test_basic.py:1403: AssertionError _____________ TestLstsq.test_random_exact[False-None-200-float32] ______________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , n = 200, lapack_driver = None overwrite = False @pytest.mark.parametrize("dtype", REAL_DTYPES) @pytest.mark.parametrize("n", (20, 200)) @pytest.mark.parametrize("lapack_driver", lapack_drivers) @pytest.mark.parametrize("overwrite", (True, False)) def test_random_exact(self, dtype, n, lapack_driver, overwrite): rng = np.random.RandomState(1234) a = np.asarray(rng.random([n, n]), dtype=dtype) for i in range(n): a[i, i] = 20 * (0.1 + a[i, i]) for i in range(4): b = np.asarray(rng.random([n, 3]), dtype=dtype) # Store values in case they are overwritten later a1 = a.copy() b1 = b.copy() out = lstsq(a1, b1, lapack_driver=lapack_driver, overwrite_a=overwrite, overwrite_b=overwrite) x = out[0] r = out[2] > assert_(r == n, f'expected efficient rank {n}, ' f'got {r}') E AssertionError: expected efficient rank 200, got 88 scipy/linalg/tests/test_basic.py:1400: AssertionError ________________________ TestLstsq.test_random_overdet _________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_random_overdet(self): rng = np.random.RandomState(1234) for dtype in REAL_DTYPES: for (n, m) in ((20, 15), (200, 2)): for lapack_driver in TestLstsq.lapack_drivers: for overwrite in (True, False): a = np.asarray(rng.random([n, m]), dtype=dtype) for i in range(m): a[i, i] = 20 * (0.1 + a[i, i]) for i in range(4): b = np.asarray(rng.random([n, 3]), dtype=dtype) # Store values in case they are overwritten later a1 = a.copy() b1 = b.copy() out = lstsq(a1, b1, lapack_driver=lapack_driver, overwrite_a=overwrite, overwrite_b=overwrite) x = out[0] r = out[2] assert_(r == m, f'expected efficient rank {m}, ' f'got {r}') > assert_allclose( x, direct_lstsq(a, b, cmplx=0), rtol=25 * _eps_cast(a1.dtype), atol=25 * _eps_cast(a1.dtype), err_msg=f"driver: {lapack_driver}") E AssertionError: E Not equal to tolerance rtol=2.98023e-06, atol=2.98023e-06 E driver: gelsd E Mismatched elements: 45 / 45 (100%) E Max absolute difference among violations: 8.999438 E Max relative difference among violations: 29151.756 E ACTUAL: array([[ 7.304275, 1.2364 , 7.236709], E [-8.974287, -1.318717, -8.878204], E [ 1.673495, 0.261277, 1.638526],... E DESIRED: array([[-2.175596e-02, 1.430921e-01, 1.740813e-02], E [ 2.515159e-02, 2.834494e-02, -6.470116e-03], E [-5.740828e-05, 1.434420e-02, 4.162814e-02],... scipy/linalg/tests/test_basic.py:1474: AssertionError __________________ TestBatch.test_qr_multiply[float32-cdim0] ___________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = cdim = (5,), dtype = @pytest.mark.parametrize('cdim', [(5,), (5, 4), (2, 3, 5, 4)]) @pytest.mark.parametrize('dtype', floating) def test_qr_multiply(self, cdim, dtype): rng = np.random.default_rng(8342310302941288912051) A = get_random((2, 3, 5, 5), dtype=dtype, rng=rng) c = get_random(cdim, dtype=dtype, rng=rng) res = linalg.qr_multiply(A, c, mode='left') q, r = linalg.qr(A) ref = q @ c atol = 1e-6 if dtype in {np.float32, np.complex64} else 1e-12 > assert_allclose(res[0], ref, atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1e-06 E E Mismatched elements: 30 / 30 (100%) E Max absolute difference among violations: 1.0388398 E Max relative difference among violations: 3.7693758 E ACTUAL: array([[[ 0.581497, -0.486169, -0.535741, -0.123641, 0.453735], E [ 0.555331, 0.22436 , -0.428581, -0.699129, 0.226908], E [ 0.471869, 0.242192, 0.49665 , -0.67538 , -0.313949]],... E DESIRED: array([[[ 1.170928, -0.305376, -0.355154, 0.044982, 0.603453], E [ 1.312555, 0.532591, -0.089861, -0.568379, 0.268158], E [ 1.176516, 0.63957 , 0.758551, -0.251952, -0.286179]],... scipy/linalg/tests/test_batch.py:212: AssertionError __________________ TestBatch.test_qr_multiply[float32-cdim1] ___________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = cdim = (5, 4), dtype = @pytest.mark.parametrize('cdim', [(5,), (5, 4), (2, 3, 5, 4)]) @pytest.mark.parametrize('dtype', floating) def test_qr_multiply(self, cdim, dtype): rng = np.random.default_rng(8342310302941288912051) A = get_random((2, 3, 5, 5), dtype=dtype, rng=rng) c = get_random(cdim, dtype=dtype, rng=rng) res = linalg.qr_multiply(A, c, mode='left') q, r = linalg.qr(A) ref = q @ c atol = 1e-6 if dtype in {np.float32, np.complex64} else 1e-12 > assert_allclose(res[0], ref, atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1e-06 E E Mismatched elements: 120 / 120 (100%) E Max absolute difference among violations: 0.89907575 E Max relative difference among violations: 24.337461 E ACTUAL: array([[[[ 0.352608, 0.034561, 0.625196, 0.148664], E [-0.338267, -0.279993, -0.456965, -0.470746], E [-0.126835, -0.443439, -1.138824, -1.150705],... E DESIRED: array([[[[ 0.385329, 0.36796 , 1.064615, 0.475472], E [-0.328231, -0.177732, -0.322185, -0.370506], E [-0.11681 , -0.341294, -1.004197, -1.050579],... scipy/linalg/tests/test_batch.py:212: AssertionError __________________ TestBatch.test_qr_multiply[float32-cdim2] ___________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = cdim = (2, 3, 5, 4), dtype = @pytest.mark.parametrize('cdim', [(5,), (5, 4), (2, 3, 5, 4)]) @pytest.mark.parametrize('dtype', floating) def test_qr_multiply(self, cdim, dtype): rng = np.random.default_rng(8342310302941288912051) A = get_random((2, 3, 5, 5), dtype=dtype, rng=rng) c = get_random(cdim, dtype=dtype, rng=rng) res = linalg.qr_multiply(A, c, mode='left') q, r = linalg.qr(A) ref = q @ c atol = 1e-6 if dtype in {np.float32, np.complex64} else 1e-12 > assert_allclose(res[0], ref, atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1e-06 E E Mismatched elements: 120 / 120 (100%) E Max absolute difference among violations: 0.91682607 E Max relative difference among violations: 20.420637 E ACTUAL: array([[[[ 0.352608, 0.034561, 0.625196, 0.148664], E [-0.338267, -0.279993, -0.456965, -0.470746], E [-0.126835, -0.443439, -1.138824, -1.150705],... E DESIRED: array([[[[ 0.385329, 0.36796 , 1.064615, 0.475472], E [-0.328231, -0.177732, -0.322185, -0.370506], E [-0.11681 , -0.341294, -1.004197, -1.050579],... scipy/linalg/tests/test_batch.py:212: AssertionError _________ TestBatch.test_two_generic_matrix_inputs[float32-fun_n_out5] _________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = fun_n_out = (, 6) dtype = @pytest.mark.parametrize('fun_n_out', [(linalg.orthogonal_procrustes, 2), (linalg.khatri_rao, 1), (linalg.solve_continuous_lyapunov, 1), (linalg.solve_discrete_lyapunov, 1), (linalg.qz, 4), (linalg.ordqz, 6)]) @pytest.mark.parametrize('dtype', floating) def test_two_generic_matrix_inputs(self, fun_n_out, dtype): rng = np.random.default_rng(8342310302941288912051) fun, n_out = fun_n_out A = get_random((2, 3, 4, 4), dtype=dtype, rng=rng) B = get_random((2, 3, 4, 4), dtype=dtype, rng=rng) > self.batch_test(fun, (A, B), n_out=n_out) scipy/linalg/tests/test_batch.py:350: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_batch.py:48: in batch_test res2 = fun(*arrays, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^ scipy/_lib/_util.py:1247: in wrapper result = f(*(array[index] for array in arrays), *other_args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ A = array([[0.6597583 , 0.68012553, 0.0770149 , 0.01688697], [0.6533361 , 0.98456764, 0.6011316 , 0.94697005], ...8181232 , 0.51648986, 0.55334604, 0.776502 ], [0.2490859 , 0.41459587, 0.6991288 , 0.9846072 ]], dtype=float32) B = array([[0.06707337, 0.6537369 , 0.5527953 , 0.16872182], [0.7337 , 0.754617 , 0.748866 , 0.70938706], ...68045557, 0.6645583 , 0.76948047, 0.8159171 ], [0.3690664 , 0.34927133, 0.180057 , 0.20997356]], dtype=float32) sort = 'lhp', output = 'real', overwrite_a = False, overwrite_b = False check_finite = True @_apply_over_batch(('A', 2), ('B', 2)) def ordqz(A, B, sort='lhp', output='real', overwrite_a=False, overwrite_b=False, check_finite=True): """QZ decomposition for a pair of matrices with reordering. Parameters ---------- A : (N, N) array_like 2-D array to decompose B : (N, N) array_like 2-D array to decompose sort : {callable, 'lhp', 'rhp', 'iuc', 'ouc'}, optional Specifies whether the upper eigenvalues should be sorted. A callable may be passed that, given an ordered pair ``(alpha, beta)`` representing the eigenvalue ``x = (alpha/beta)``, returns a boolean denoting whether the eigenvalue should be sorted to the top-left (True). For the real matrix pairs ``beta`` is real while ``alpha`` can be complex, and for complex matrix pairs both ``alpha`` and ``beta`` can be complex. The callable must be able to accept a NumPy array. Alternatively, string parameters may be used: - 'lhp' Left-hand plane (x.real < 0.0) - 'rhp' Right-hand plane (x.real > 0.0) - 'iuc' Inside the unit circle (x*x.conjugate() < 1.0) - 'ouc' Outside the unit circle (x*x.conjugate() > 1.0) With the predefined sorting functions, an infinite eigenvalue (i.e., ``alpha != 0`` and ``beta = 0``) is considered to lie in neither the left-hand nor the right-hand plane, but it is considered to lie outside the unit circle. For the eigenvalue ``(alpha, beta) = (0, 0)``, the predefined sorting functions all return `False`. output : str {'real','complex'}, optional Construct the real or complex QZ decomposition for real matrices. Default is 'real'. overwrite_a : bool, optional If True, the contents of A are overwritten. overwrite_b : bool, optional If True, the contents of B are overwritten. check_finite : bool, optional If true checks the elements of `A` and `B` are finite numbers. If false does no checking and passes matrix through to underlying algorithm. Returns ------- AA : (N, N) ndarray Generalized Schur form of A. BB : (N, N) ndarray Generalized Schur form of B. alpha : (N,) ndarray alpha = alphar + alphai * 1j. See notes. beta : (N,) ndarray See notes. Q : (N, N) ndarray The left Schur vectors. Z : (N, N) ndarray The right Schur vectors. See Also -------- qz Notes ----- On exit, ``(ALPHAR(j) + ALPHAI(j)*i)/BETA(j), j=1,...,N``, will be the generalized eigenvalues. ``ALPHAR(j) + ALPHAI(j)*i`` and ``BETA(j),j=1,...,N`` are the diagonals of the complex Schur form (S,T) that would result if the 2-by-2 diagonal blocks of the real generalized Schur form of (A,B) were further reduced to triangular form using complex unitary transformations. If ALPHAI(j) is zero, then the jth eigenvalue is real; if positive, then the ``j``\\ th and ``(j+1)``\\ st eigenvalues are a complex conjugate pair, with ``ALPHAI(j+1)`` negative. .. versionadded:: 0.17.0 Examples -------- >>> import numpy as np >>> from scipy.linalg import ordqz >>> A = np.array([[2, 5, 8, 7], [5, 2, 2, 8], [7, 5, 6, 6], [5, 4, 4, 8]]) >>> B = np.array([[0, 6, 0, 0], [5, 0, 2, 1], [5, 2, 6, 6], [4, 7, 7, 7]]) >>> AA, BB, alpha, beta, Q, Z = ordqz(A, B, sort='lhp') Since we have sorted for left half plane eigenvalues, negatives come first >>> (alpha/beta).real < 0 array([ True, True, False, False], dtype=bool) """ (AA, BB, _, *ab, Q, Z, _, _), typ = _qz(A, B, output=output, sort=None, overwrite_a=overwrite_a, overwrite_b=overwrite_b, check_finite=check_finite) if typ == 's': alpha, beta = ab[0] + ab[1]*np.complex64(1j), ab[2] elif typ == 'd': alpha, beta = ab[0] + ab[1]*1.j, ab[2] else: alpha, beta = ab sfunction = _select_function(sort) select = sfunction(alpha, beta) tgsen = get_lapack_funcs('tgsen', (AA, BB)) # the real case needs 4n + 16 lwork lwork = 4*AA.shape[0] + 16 if typ in 'sd' else 1 AAA, BBB, *ab, QQ, ZZ, _, _, _, _, info = tgsen(select, AA, BB, Q, Z, ijob=0, lwork=lwork, liwork=1) # Once more for tgsen output if typ == 's': alpha, beta = ab[0] + ab[1]*np.complex64(1j), ab[2] elif typ == 'd': alpha, beta = ab[0] + ab[1]*1.j, ab[2] else: alpha, beta = ab if info < 0: raise ValueError(f"Illegal value in argument {-info} of tgsen") elif info == 1: > raise ValueError("Reordering of (A, B) failed because the transformed" " matrix pair (A, B) would be too far from " "generalized Schur form; the problem is very " "ill-conditioned. (A, B) may have been partially " "reordered.") E ValueError: Reordering of (A, B) failed because the transformed matrix pair (A, B) would be too far from generalized Schur form; the problem is very ill-conditioned. (A, B) may have been partially reordered. scipy/linalg/_decomp_qz.py:446: ValueError _____________________ TestBatch.test_solve[float32-bdim0] ______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = bdim = (5,), dtype = @pytest.mark.parametrize('bdim', [(5,), (5, 4), (2, 3, 5, 4)]) @pytest.mark.parametrize('dtype', floating) def test_solve(self, bdim, dtype): rng = np.random.default_rng(8342310302941288912051) A = get_random((2, 3, 5, 5), dtype=dtype, rng=rng) b = get_random(bdim, dtype=dtype, rng=rng) x = linalg.solve(A, b) if len(bdim) == 1: x = x[..., np.newaxis] b = b[..., np.newaxis] > assert_allclose(A @ x - b, 0, atol=1.5e-6) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.5e-06 E E Mismatched elements: 22 / 30 (73.3%) E Max absolute difference among violations: 4.4911871 E Max relative difference among violations: inf E ACTUAL: array([[[[ 2.235174e-08], E [ 4.830944e-01], E [-5.686042e-01],... E DESIRED: array(0) scipy/linalg/tests/test_batch.py:448: AssertionError ____________________ TestBatch.test_lu_solve[float32-bdim0] ____________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = bdim = (5,), dtype = @pytest.mark.parametrize('bdim', [(5,), (5, 4), (2, 3, 5, 4)]) @pytest.mark.parametrize('dtype', floating) def test_lu_solve(self, bdim, dtype): rng = np.random.default_rng(8342310302941288912051) A = get_random((2, 3, 5, 5), dtype=dtype, rng=rng) b = get_random(bdim, dtype=dtype, rng=rng) lu_and_piv = linalg.lu_factor(A) x = linalg.lu_solve(lu_and_piv, b) if len(bdim) == 1: x = x[..., np.newaxis] b = b[..., np.newaxis] > assert_allclose(A @ x - b, 0, atol=1.5e-6) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.5e-06 E E Mismatched elements: 22 / 30 (73.3%) E Max absolute difference among violations: 4.4911871 E Max relative difference among violations: inf E ACTUAL: array([[[[ 2.235174e-08], E [ 4.830944e-01], E [-5.686042e-01],... E DESIRED: array(0) scipy/linalg/tests/test_batch.py:462: AssertionError ______________ TestJacobian.test_examples[numpy-f1-size0-float32] ______________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , size = () func = xp = @pytest.mark.parametrize('dtype', ('float32', 'float64')) @pytest.mark.parametrize('size', [(), (6,), (2, 3)]) @pytest.mark.parametrize('func', [f1, f2, f3, f4, f5, rosen]) def test_examples(self, dtype, size, func, xp): atol = 1e-10 if dtype == 'float64' else 1.99e-3 dtype = getattr(xp, dtype) rng = np.random.default_rng(458912319542) m, n = func.mn x = rng.random(size=(m,) + size) res = jacobian(lambda x: func(x , xp), xp.asarray(x, dtype=dtype)) # convert list of arrays to single array before converting to xp array ref = xp.asarray(np.asarray(func.ref(x)), dtype=dtype) > xp_assert_close(res.df, ref, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.00138107, atol=0.00199 E E Mismatched elements: 3 / 4 (75%) E Max absolute difference among violations: 23860.615 E Max relative difference among violations: 4772.123 E ACTUAL: array([[ 4.726330e-01, -1.870026e-01], E [ 2.386562e+04, -1.073347e+01]], dtype=float32) E DESIRED: array([[0.472633, 0.924999], E [5. , 0.969965]], dtype=float32) scipy/differentiate/tests/test_differentiate.py:566: AssertionError ______________ TestJacobian.test_examples[numpy-f1-size1-float32] ______________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , size = (6,) func = xp = @pytest.mark.parametrize('dtype', ('float32', 'float64')) @pytest.mark.parametrize('size', [(), (6,), (2, 3)]) @pytest.mark.parametrize('func', [f1, f2, f3, f4, f5, rosen]) def test_examples(self, dtype, size, func, xp): atol = 1e-10 if dtype == 'float64' else 1.99e-3 dtype = getattr(xp, dtype) rng = np.random.default_rng(458912319542) m, n = func.mn x = rng.random(size=(m,) + size) res = jacobian(lambda x: func(x , xp), xp.asarray(x, dtype=dtype)) # convert list of arrays to single array before converting to xp array ref = xp.asarray(np.asarray(func.ref(x)), dtype=dtype) > xp_assert_close(res.df, ref, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.00138107, atol=0.00199 E E Mismatched elements: 18 / 24 (75%) E Max absolute difference among violations: 20095.115 E Max relative difference among violations: 69190.24 E ACTUAL: array([[[ 5.235687e-01, -1.321634e+03, 2.455786e+03, -6.679084e+00, E 7.293426e-02, 1.902114e+02], E [ 1.056523e+03, -1.113594e+03, 8.530772e-01, -8.486710e+02,... E DESIRED: array([[[0.523569, 0.232018, 1.136941, 0.867992, 0.072934, 0.10267 ], E [0.924999, 0.060374, 0.853078, 0.773632, 0.026881, 0.551611]], E ... scipy/differentiate/tests/test_differentiate.py:566: AssertionError ______________ TestJacobian.test_examples[numpy-f1-size2-float32] ______________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , size = (2, 3) func = xp = @pytest.mark.parametrize('dtype', ('float32', 'float64')) @pytest.mark.parametrize('size', [(), (6,), (2, 3)]) @pytest.mark.parametrize('func', [f1, f2, f3, f4, f5, rosen]) def test_examples(self, dtype, size, func, xp): atol = 1e-10 if dtype == 'float64' else 1.99e-3 dtype = getattr(xp, dtype) rng = np.random.default_rng(458912319542) m, n = func.mn x = rng.random(size=(m,) + size) res = jacobian(lambda x: func(x , xp), xp.asarray(x, dtype=dtype)) # convert list of arrays to single array before converting to xp array ref = xp.asarray(np.asarray(func.ref(x)), dtype=dtype) > xp_assert_close(res.df, ref, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.00138107, atol=0.00199 E E Mismatched elements: 18 / 24 (75%) E Max absolute difference among violations: 20095.115 E Max relative difference among violations: 69190.24 E ACTUAL: array([[[[ 5.235687e-01, -1.321634e+03, 2.455786e+03], E [-6.679084e+00, 7.293426e-02, 1.902114e+02]], E ... E DESIRED: array([[[[0.523569, 0.232018, 1.136941], E [0.867992, 0.072934, 0.10267 ]], E ... scipy/differentiate/tests/test_differentiate.py:566: AssertionError ______________ TestJacobian.test_examples[numpy-f2-size0-float32] ______________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , size = () func = xp = @pytest.mark.parametrize('dtype', ('float32', 'float64')) @pytest.mark.parametrize('size', [(), (6,), (2, 3)]) @pytest.mark.parametrize('func', [f1, f2, f3, f4, f5, rosen]) def test_examples(self, dtype, size, func, xp): atol = 1e-10 if dtype == 'float64' else 1.99e-3 dtype = getattr(xp, dtype) rng = np.random.default_rng(458912319542) m, n = func.mn x = rng.random(size=(m,) + size) res = jacobian(lambda x: func(x , xp), xp.asarray(x, dtype=dtype)) # convert list of arrays to single array before converting to xp array ref = xp.asarray(np.asarray(func.ref(x)), dtype=dtype) > xp_assert_close(res.df, ref, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.00138107, atol=0.00199 E E Mismatched elements: 3 / 4 (75%) E Max absolute difference among violations: 3457.626 E Max relative difference among violations: 14214.557 E ACTUAL: array([[ 9.699639e-01, -7.395540e-01], E [-3.457383e+03, 1.769594e+00]], dtype=float32) E DESIRED: array([[ 0.969965, -0.233946], E [ 0.243245, 0.932882]], dtype=float32) scipy/differentiate/tests/test_differentiate.py:566: AssertionError ______________ TestJacobian.test_examples[numpy-f2-size1-float32] ______________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , size = (6,) func = xp = @pytest.mark.parametrize('dtype', ('float32', 'float64')) @pytest.mark.parametrize('size', [(), (6,), (2, 3)]) @pytest.mark.parametrize('func', [f1, f2, f3, f4, f5, rosen]) def test_examples(self, dtype, size, func, xp): atol = 1e-10 if dtype == 'float64' else 1.99e-3 dtype = getattr(xp, dtype) rng = np.random.default_rng(458912319542) m, n = func.mn x = rng.random(size=(m,) + size) res = jacobian(lambda x: func(x , xp), xp.asarray(x, dtype=dtype)) # convert list of arrays to single array before converting to xp array ref = xp.asarray(np.asarray(func.ref(x)), dtype=dtype) > xp_assert_close(res.df, ref, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.00138107, atol=0.00199 E E Mismatched elements: 18 / 24 (75%) E Max absolute difference among violations: 4188.529 E Max relative difference among violations: 84067.17 E ACTUAL: array([[[ 9.631827e-01, -4.187638e+03, 2.646738e+03, 1.022072e+02, E 9.753652e-01, 3.437859e+03], E [ 9.160621e+02, -3.521215e+03, -5.332535e-01, 1.217041e+02,... E DESIRED: array([[[ 0.963184, 0.890598, 0.816497, 0.880717, 0.975366, E 0.997612], E [-0.258564, -0.111747, -0.533254, -0.416599, -0.036167,... scipy/differentiate/tests/test_differentiate.py:566: AssertionError ______________ TestJacobian.test_examples[numpy-f2-size2-float32] ______________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , size = (2, 3) func = xp = @pytest.mark.parametrize('dtype', ('float32', 'float64')) @pytest.mark.parametrize('size', [(), (6,), (2, 3)]) @pytest.mark.parametrize('func', [f1, f2, f3, f4, f5, rosen]) def test_examples(self, dtype, size, func, xp): atol = 1e-10 if dtype == 'float64' else 1.99e-3 dtype = getattr(xp, dtype) rng = np.random.default_rng(458912319542) m, n = func.mn x = rng.random(size=(m,) + size) res = jacobian(lambda x: func(x , xp), xp.asarray(x, dtype=dtype)) # convert list of arrays to single array before converting to xp array ref = xp.asarray(np.asarray(func.ref(x)), dtype=dtype) > xp_assert_close(res.df, ref, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.00138107, atol=0.00199 E E Mismatched elements: 18 / 24 (75%) E Max absolute difference among violations: 4188.529 E Max relative difference among violations: 84067.17 E ACTUAL: array([[[[ 9.631827e-01, -4.187638e+03, 2.646738e+03], E [ 1.022072e+02, 9.753652e-01, 3.437859e+03]], E ... E DESIRED: array([[[[ 0.963184, 0.890598, 0.816497], E [ 0.880717, 0.975366, 0.997612]], E ... scipy/differentiate/tests/test_differentiate.py:566: AssertionError ______________ TestJacobian.test_examples[numpy-f3-size0-float32] ______________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , size = () func = xp = @pytest.mark.parametrize('dtype', ('float32', 'float64')) @pytest.mark.parametrize('size', [(), (6,), (2, 3)]) @pytest.mark.parametrize('func', [f1, f2, f3, f4, f5, rosen]) def test_examples(self, dtype, size, func, xp): atol = 1e-10 if dtype == 'float64' else 1.99e-3 dtype = getattr(xp, dtype) rng = np.random.default_rng(458912319542) m, n = func.mn x = rng.random(size=(m,) + size) res = jacobian(lambda x: func(x , xp), xp.asarray(x, dtype=dtype)) # convert list of arrays to single array before converting to xp array ref = xp.asarray(np.asarray(func.ref(x)), dtype=dtype) > xp_assert_close(res.df, ref, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.00138107, atol=0.00199 E E Mismatched elements: 6 / 9 (66.7%) E Max absolute difference among violations: 3690.2173 E Max relative difference among violations: 3804.486 E ACTUAL: array([[ 1.466613e-01, -1.197223e-02, -6.933584e-01], E [ 2.278946e+02, 7.442445e-01, -5.139274e-01], E [ 3.691187e+03, -2.964610e+00, 6.523283e-05]], dtype=float32) E DESIRED: array([[ 0.146661, 0.562466, -0.18664 ], E [ 0.194059, 0.744244, 0.141054], E [ 0.969965, -0.233946, 0. ]], dtype=float32) scipy/differentiate/tests/test_differentiate.py:566: AssertionError ________________ TestBatch.test_solve_triangular[float32-bdim0] ________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = bdim = (5,), dtype = @pytest.mark.parametrize('bdim', [(5,), (5, 4), (2, 3, 5, 4)]) @pytest.mark.parametrize('dtype', floating) def test_solve_triangular(self, bdim, dtype): rng = np.random.default_rng(8342310302941288912051) A = get_random((2, 3, 5, 5), dtype=dtype, rng=rng) A = np.tril(A) b = get_random(bdim, dtype=dtype, rng=rng) x = linalg.solve_triangular(A, b, lower=True) if len(bdim) == 1: x = x[..., np.newaxis] b = b[..., np.newaxis] atol = 1e-10 if dtype in (np.complex128, np.float64) else 2e-4 > assert_allclose(A @ x - b, 0, atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=0.0002 E E Mismatched elements: 22 / 30 (73.3%) E Max absolute difference among violations: 597.34429932 E Max relative difference among violations: inf E ACTUAL: array([[[[ 0.000000e+00], E [ 2.519238e-01], E [ 2.285675e+00],... E DESIRED: array(0) scipy/linalg/tests/test_batch.py:558: AssertionError ______________ TestJacobian.test_examples[numpy-f3-size1-float32] ______________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , size = (6,) func = xp = @pytest.mark.parametrize('dtype', ('float32', 'float64')) @pytest.mark.parametrize('size', [(), (6,), (2, 3)]) @pytest.mark.parametrize('func', [f1, f2, f3, f4, f5, rosen]) def test_examples(self, dtype, size, func, xp): atol = 1e-10 if dtype == 'float64' else 1.99e-3 dtype = getattr(xp, dtype) rng = np.random.default_rng(458912319542) m, n = func.mn x = rng.random(size=(m,) + size) res = jacobian(lambda x: func(x , xp), xp.asarray(x, dtype=dtype)) # convert list of arrays to single array before converting to xp array ref = xp.asarray(np.asarray(func.ref(x)), dtype=dtype) > xp_assert_close(res.df, ref, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.00138107, atol=0.00199 E E Mismatched elements: 39 / 54 (72.2%) E Max absolute difference among violations: 4188.529 E Max relative difference among violations: 84067.17 E ACTUAL: array([[[ 2.188419e-01, -6.203973e+02, 2.111193e+03, -9.587805e+02, E 1.514151e-01, 1.467999e+02], E [ 7.953117e+02, -5.231886e+02, 7.531636e-01, -1.139768e+03,... E DESIRED: array([[[ 0.218842, 0.430001, 0.576607, 0.386606, 0.151415, E 0.066847], E [ 0.754074, 0.206901, 0.753164, 0.632298, 0.109765,... scipy/differentiate/tests/test_differentiate.py:566: AssertionError ______________ TestJacobian.test_examples[numpy-f3-size2-float32] ______________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , size = (2, 3) func = xp = @pytest.mark.parametrize('dtype', ('float32', 'float64')) @pytest.mark.parametrize('size', [(), (6,), (2, 3)]) @pytest.mark.parametrize('func', [f1, f2, f3, f4, f5, rosen]) def test_examples(self, dtype, size, func, xp): atol = 1e-10 if dtype == 'float64' else 1.99e-3 dtype = getattr(xp, dtype) rng = np.random.default_rng(458912319542) m, n = func.mn x = rng.random(size=(m,) + size) res = jacobian(lambda x: func(x , xp), xp.asarray(x, dtype=dtype)) # convert list of arrays to single array before converting to xp array ref = xp.asarray(np.asarray(func.ref(x)), dtype=dtype) > xp_assert_close(res.df, ref, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.00138107, atol=0.00199 E E Mismatched elements: 39 / 54 (72.2%) E Max absolute difference among violations: 4188.529 E Max relative difference among violations: 84067.17 E ACTUAL: array([[[[ 2.188419e-01, -6.203973e+02, 2.111193e+03], E [-9.587805e+02, 1.514151e-01, 1.467999e+02]], E ... E DESIRED: array([[[[ 0.218842, 0.430001, 0.576607], E [ 0.386606, 0.151415, 0.066847]], E ... scipy/differentiate/tests/test_differentiate.py:566: AssertionError ______________ TestJacobian.test_examples[numpy-f4-size0-float32] ______________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , size = () func = xp = @pytest.mark.parametrize('dtype', ('float32', 'float64')) @pytest.mark.parametrize('size', [(), (6,), (2, 3)]) @pytest.mark.parametrize('func', [f1, f2, f3, f4, f5, rosen]) def test_examples(self, dtype, size, func, xp): atol = 1e-10 if dtype == 'float64' else 1.99e-3 dtype = getattr(xp, dtype) rng = np.random.default_rng(458912319542) m, n = func.mn x = rng.random(size=(m,) + size) res = jacobian(lambda x: func(x , xp), xp.asarray(x, dtype=dtype)) # convert list of arrays to single array before converting to xp array ref = xp.asarray(np.asarray(func.ref(x)), dtype=dtype) > xp_assert_close(res.df, ref, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.00138107, atol=0.00199 E E Mismatched elements: 8 / 12 (66.7%) E Max absolute difference among violations: 30795.994 E Max relative difference among violations: 26471.27 E ACTUAL: array([[ 9.999990e-01, -7.223977e-01, -2.206164e-04], E [ 1.819882e+04, -2.322337e-04, 8.355324e-01], E [-3.079599e+04, 5.074862e+00, -1.999998e+00], E [ 1.398734e+04, -7.007081e-01, 2.123616e+00]], dtype=float32) E DESIRED: array([[ 1. , 0. , 0. ], E [ 0. , 0. , 5. ], E [ 0. , 1.965683, -2. ], E [ 0.528377, 0. , 0.820205]], dtype=float32) scipy/differentiate/tests/test_differentiate.py:566: AssertionError ______________ TestJacobian.test_examples[numpy-f4-size1-float32] ______________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , size = (6,) func = xp = @pytest.mark.parametrize('dtype', ('float32', 'float64')) @pytest.mark.parametrize('size', [(), (6,), (2, 3)]) @pytest.mark.parametrize('func', [f1, f2, f3, f4, f5, rosen]) def test_examples(self, dtype, size, func, xp): atol = 1e-10 if dtype == 'float64' else 1.99e-3 dtype = getattr(xp, dtype) rng = np.random.default_rng(458912319542) m, n = func.mn x = rng.random(size=(m,) + size) res = jacobian(lambda x: func(x , xp), xp.asarray(x, dtype=dtype)) # convert list of arrays to single array before converting to xp array ref = xp.asarray(np.asarray(func.ref(x)), dtype=dtype) > xp_assert_close(res.df, ref, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.00138107, atol=0.00199 E E Mismatched elements: 54 / 72 (75%) E Max absolute difference among violations: 16723.67 E Max relative difference among violations: 13921.531 E ACTUAL: array([[[ 9.999990e-01, -4.238108e+03, 3.352014e+03, -2.193630e+02, E 1.000000e+00, 3.424435e+03], E [ 1.082376e+03, -3.564055e+03, 7.772294e-06, -2.607358e+02,... E DESIRED: array([[[ 1. , 1. , 1. , 1. , 1. , E 1. ], E [ 0. , 0. , 0. , 0. , 0. ,... scipy/differentiate/tests/test_differentiate.py:566: AssertionError _____________________ TestBatch.test_lstsq[float32-bdim0] ______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = bdim = (4,), dtype = @pytest.mark.parametrize('bdim', [(4,), (4, 3), (2, 3, 4, 3)]) @pytest.mark.parametrize('dtype', floating) def test_lstsq(self, bdim, dtype): rng = np.random.default_rng(8342310302941288912051) A = get_random((2, 3, 4, 5), dtype=dtype, rng=rng) b = get_random(bdim, dtype=dtype, rng=rng) res = linalg.lstsq(A, b) x = res[0] if len(bdim) == 1: x = x[..., np.newaxis] b = b[..., np.newaxis] > assert_allclose(A @ x - b, 0, atol=2e-6) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=2e-06 E E Mismatched elements: 22 / 24 (91.7%) E Max absolute difference among violations: 2.24087834 E Max relative difference among violations: inf E ACTUAL: array([[[[-3.576279e-07], E [ 3.773576e-01], E [-6.404629e-01],... E DESIRED: array(0) scipy/linalg/tests/test_batch.py:572: AssertionError ______________ TestJacobian.test_examples[numpy-f4-size2-float32] ______________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , size = (2, 3) func = xp = @pytest.mark.parametrize('dtype', ('float32', 'float64')) @pytest.mark.parametrize('size', [(), (6,), (2, 3)]) @pytest.mark.parametrize('func', [f1, f2, f3, f4, f5, rosen]) def test_examples(self, dtype, size, func, xp): atol = 1e-10 if dtype == 'float64' else 1.99e-3 dtype = getattr(xp, dtype) rng = np.random.default_rng(458912319542) m, n = func.mn x = rng.random(size=(m,) + size) res = jacobian(lambda x: func(x , xp), xp.asarray(x, dtype=dtype)) # convert list of arrays to single array before converting to xp array ref = xp.asarray(np.asarray(func.ref(x)), dtype=dtype) > xp_assert_close(res.df, ref, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.00138107, atol=0.00199 E E Mismatched elements: 54 / 72 (75%) E Max absolute difference among violations: 16723.67 E Max relative difference among violations: 13921.531 E ACTUAL: array([[[[ 9.999990e-01, -4.238108e+03, 3.352014e+03], E [-2.193630e+02, 1.000000e+00, 3.424435e+03]], E ... E DESIRED: array([[[[ 1. , 1. , 1. ], E [ 1. , 1. , 1. ]], E ... scipy/differentiate/tests/test_differentiate.py:566: AssertionError ______________ TestJacobian.test_examples[numpy-f5-size0-float32] ______________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , size = () func = xp = @pytest.mark.parametrize('dtype', ('float32', 'float64')) @pytest.mark.parametrize('size', [(), (6,), (2, 3)]) @pytest.mark.parametrize('func', [f1, f2, f3, f4, f5, rosen]) def test_examples(self, dtype, size, func, xp): atol = 1e-10 if dtype == 'float64' else 1.99e-3 dtype = getattr(xp, dtype) rng = np.random.default_rng(458912319542) m, n = func.mn x = rng.random(size=(m,) + size) res = jacobian(lambda x: func(x , xp), xp.asarray(x, dtype=dtype)) # convert list of arrays to single array before converting to xp array ref = xp.asarray(np.asarray(func.ref(x)), dtype=dtype) > xp_assert_close(res.df, ref, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.00138107, atol=0.00199 E E Mismatched elements: 6 / 9 (66.7%) E Max absolute difference among violations: 14954.348 E Max relative difference among violations: 1309.2529 E ACTUAL: array([[-1.024969e-04, 8.355355e-01, -6.631390e+00], E [ 1.008128e+04, -1.799868e+00, 1.219981e+00], E [-1.495435e+04, 2.391379e+00, 2.457104e-01]], dtype=float32) E DESIRED: array([[ 0. , 5. , 0. ], E [ 7.694148, -1.799879, -0.47882 ], E [ 0. , 0.923622, 0.24571 ]], dtype=float32) scipy/differentiate/tests/test_differentiate.py:566: AssertionError ______________ TestJacobian.test_examples[numpy-f5-size1-float32] ______________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , size = (6,) func = xp = @pytest.mark.parametrize('dtype', ('float32', 'float64')) @pytest.mark.parametrize('size', [(), (6,), (2, 3)]) @pytest.mark.parametrize('func', [f1, f2, f3, f4, f5, rosen]) def test_examples(self, dtype, size, func, xp): atol = 1e-10 if dtype == 'float64' else 1.99e-3 dtype = getattr(xp, dtype) rng = np.random.default_rng(458912319542) m, n = func.mn x = rng.random(size=(m,) + size) res = jacobian(lambda x: func(x , xp), xp.asarray(x, dtype=dtype)) # convert list of arrays to single array before converting to xp array ref = xp.asarray(np.asarray(func.ref(x)), dtype=dtype) > xp_assert_close(res.df, ref, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.00138107, atol=0.00199 E E Mismatched elements: 39 / 54 (72.2%) E Max absolute difference among violations: 20324.434 E Max relative difference among violations: 166847.38 E ACTUAL: array([[[-1.186223e-04, 5.916335e+03, 3.545541e+03, -3.037605e+03, E -1.824006e-04, -4.536216e+03], E [ 5.021561e+03, 4.975685e+03, 5.000003e+00, -3.614395e+03,... E DESIRED: array([[[ 0. , 0. , 0. , 0. , 0. , E 0. ], E [ 5. , 5. , 5. , 5. , 5. ,... scipy/differentiate/tests/test_differentiate.py:566: AssertionError ______________ TestJacobian.test_examples[numpy-f5-size2-float32] ______________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , size = (2, 3) func = xp = @pytest.mark.parametrize('dtype', ('float32', 'float64')) @pytest.mark.parametrize('size', [(), (6,), (2, 3)]) @pytest.mark.parametrize('func', [f1, f2, f3, f4, f5, rosen]) def test_examples(self, dtype, size, func, xp): atol = 1e-10 if dtype == 'float64' else 1.99e-3 dtype = getattr(xp, dtype) rng = np.random.default_rng(458912319542) m, n = func.mn x = rng.random(size=(m,) + size) res = jacobian(lambda x: func(x , xp), xp.asarray(x, dtype=dtype)) # convert list of arrays to single array before converting to xp array ref = xp.asarray(np.asarray(func.ref(x)), dtype=dtype) > xp_assert_close(res.df, ref, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.00138107, atol=0.00199 E E Mismatched elements: 39 / 54 (72.2%) E Max absolute difference among violations: 20324.434 E Max relative difference among violations: 166847.38 E ACTUAL: array([[[[-1.186223e-04, 5.916335e+03, 3.545541e+03], E [-3.037605e+03, -1.824006e-04, -4.536216e+03]], E ... E DESIRED: array([[[[ 0. , 0. , 0. ], E [ 0. , 0. , 0. ]], E ... scipy/differentiate/tests/test_differentiate.py:566: AssertionError ____________ TestJacobian.test_examples[numpy-rosen-size0-float32] _____________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , size = () func = xp = @pytest.mark.parametrize('dtype', ('float32', 'float64')) @pytest.mark.parametrize('size', [(), (6,), (2, 3)]) @pytest.mark.parametrize('func', [f1, f2, f3, f4, f5, rosen]) def test_examples(self, dtype, size, func, xp): atol = 1e-10 if dtype == 'float64' else 1.99e-3 dtype = getattr(xp, dtype) rng = np.random.default_rng(458912319542) m, n = func.mn x = rng.random(size=(m,) + size) res = jacobian(lambda x: func(x , xp), xp.asarray(x, dtype=dtype)) # convert list of arrays to single array before converting to xp array ref = xp.asarray(np.asarray(func.ref(x)), dtype=dtype) > xp_assert_close(res.df, ref, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.00138107, atol=0.00199 E E Mismatched elements: 3 / 5 (60%) E Max absolute difference among violations: 85.80347 E Max relative difference among violations: 0.5273329 E ACTUAL: array([ 261.25043 , -225.89253 , 248.51561 , 133.81734 , -121.935715], E dtype=float32) E DESIRED: array([ 261.25076, -222.20992, 162.71214, 219.55663, -121.93575], E dtype=float32) scipy/differentiate/tests/test_differentiate.py:566: AssertionError ____________ TestJacobian.test_examples[numpy-rosen-size1-float32] _____________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , size = (6,) func = xp = @pytest.mark.parametrize('dtype', ('float32', 'float64')) @pytest.mark.parametrize('size', [(), (6,), (2, 3)]) @pytest.mark.parametrize('func', [f1, f2, f3, f4, f5, rosen]) def test_examples(self, dtype, size, func, xp): atol = 1e-10 if dtype == 'float64' else 1.99e-3 dtype = getattr(xp, dtype) rng = np.random.default_rng(458912319542) m, n = func.mn x = rng.random(size=(m,) + size) res = jacobian(lambda x: func(x , xp), xp.asarray(x, dtype=dtype)) # convert list of arrays to single array before converting to xp array ref = xp.asarray(np.asarray(func.ref(x)), dtype=dtype) > xp_assert_close(res.df, ref, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.00138107, atol=0.00199 E E Mismatched elements: 21 / 30 (70%) E Max absolute difference among violations: 456057.6 E Max relative difference among violations: 33987.08 E ACTUAL: array([[ 2.510636e+02, -2.185116e+05, 2.081277e+05, -1.480108e+05, E -1.449619e+01, -4.557393e+05], E [ 2.480400e+05, -1.829586e+05, 3.248220e+01, -1.760493e+05,... E DESIRED: array([[ 251.06363 , -41.9785 , 87.627945, 98.3442 , -14.496078, E 142.82526 ], E [-191.42804 , 60.75295 , 32.482155, -130.56691 , -30.490696,... scipy/differentiate/tests/test_differentiate.py:566: AssertionError ____________ TestJacobian.test_examples[numpy-rosen-size2-float32] _____________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = , size = (2, 3) func = xp = @pytest.mark.parametrize('dtype', ('float32', 'float64')) @pytest.mark.parametrize('size', [(), (6,), (2, 3)]) @pytest.mark.parametrize('func', [f1, f2, f3, f4, f5, rosen]) def test_examples(self, dtype, size, func, xp): atol = 1e-10 if dtype == 'float64' else 1.99e-3 dtype = getattr(xp, dtype) rng = np.random.default_rng(458912319542) m, n = func.mn x = rng.random(size=(m,) + size) res = jacobian(lambda x: func(x , xp), xp.asarray(x, dtype=dtype)) # convert list of arrays to single array before converting to xp array ref = xp.asarray(np.asarray(func.ref(x)), dtype=dtype) > xp_assert_close(res.df, ref, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.00138107, atol=0.00199 E E Mismatched elements: 21 / 30 (70%) E Max absolute difference among violations: 456057.6 E Max relative difference among violations: 33987.08 E ACTUAL: array([[[ 2.510636e+02, -2.185116e+05, 2.081277e+05], E [-1.480108e+05, -1.449619e+01, -4.557393e+05]], E ... E DESIRED: array([[[ 251.06363 , -41.9785 , 87.627945], E [ 98.3442 , -14.496078, 142.82526 ]], E ... scipy/differentiate/tests/test_differentiate.py:566: AssertionError __________________________ TestFBLAS2Simple.test_gbmv __________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_gbmv(self): rng = np.random.default_rng(1234) for ind, dtype in enumerate(DTYPES): n = 7 m = 5 kl = 1 ku = 2 # fake a banded matrix via toeplitz A = toeplitz(append(rng.random(kl+1), zeros(m-kl-1)), append(rng.random(ku+1), zeros(n-ku-1))) A = A.astype(dtype) Ab = zeros((kl+ku+1, n), dtype=dtype) # Form the banded storage Ab[2, :5] = A[0, 0] # diag Ab[1, 1:6] = A[0, 1] # sup1 Ab[0, 2:7] = A[0, 2] # sup2 Ab[3, :4] = A[1, 0] # sub1 x = rng.random(n).astype(dtype) y = rng.random(m).astype(dtype) alpha, beta = dtype(3), dtype(-5) func, = get_blas_funcs(('gbmv',), dtype=dtype) y1 = func(m=m, n=n, ku=ku, kl=kl, alpha=alpha, a=Ab, x=x, y=y, beta=beta) y2 = alpha * A.dot(x) + beta * y > assert_array_almost_equal(y1, y2) E AssertionError: E Arrays are not almost equal to 6 decimals E E Mismatched elements: 3 / 5 (60%) E Max absolute difference among violations: 2.088547 E Max relative difference among violations: 1.329778 E ACTUAL: array([-3.477353, -2.302718, -1.156049, 0.517949, -0.876604], E dtype=float32) E DESIRED: array([-3.477353, -3.219172, -2.022401, -1.570598, -0.876604], E dtype=float32) scipy/linalg/tests/test_blas.py:485: AssertionError _______________________ TestFBLAS2Simple.test_sbmv_hbmv ________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_sbmv_hbmv(self): rng = np.random.default_rng(1234) for ind, dtype in enumerate(DTYPES): n = 6 k = 2 A = zeros((n, n), dtype=dtype) Ab = zeros((k+1, n), dtype=dtype) # Form the array and its packed banded storage A[arange(n), arange(n)] = rng.random(n) for ind2 in range(1, k+1): temp = rng.random(n-ind2) A[arange(n-ind2), arange(ind2, n)] = temp Ab[-1-ind2, ind2:] = temp A = A.astype(dtype) A = A + A.T if ind < 2 else A + A.conj().T Ab[-1, :] = diag(A) x = rng.random(n).astype(dtype) y = rng.random(n).astype(dtype) alpha, beta = dtype(1.25), dtype(3) if ind > 1: func, = get_blas_funcs(('hbmv',), dtype=dtype) else: func, = get_blas_funcs(('sbmv',), dtype=dtype) y1 = func(k=k, alpha=alpha, a=Ab, x=x, y=y, beta=beta) y2 = alpha * A.dot(x) + beta * y > assert_array_almost_equal(y1, y2) E AssertionError: E Arrays are not almost equal to 6 decimals E E Mismatched elements: 2 / 6 (33.3%) E Max absolute difference among violations: 0.94232726 E Max relative difference among violations: 0.4198236 E ACTUAL: array([4.05448 , 3.186906, 4.290339, 1.693282, 3.95804 , 1.959588], E dtype=float32) E DESIRED: array([4.05448 , 2.244579, 4.290339, 1.416215, 3.95804 , 1.959588], E dtype=float32) scipy/linalg/tests/test_blas.py:519: AssertionError _______________________ TestHessian.test_float32[numpy] ________________________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = xp = def test_float32(self, xp): rng = np.random.default_rng(458912319542) x = xp.asarray(rng.random(3), dtype=xp.float32) res = hessian(optimize.rosen, x) ref = optimize.rosen_hess(x) mask = (ref != 0) > xp_assert_close(res.ddf[mask], ref[mask]) E AssertionError: E Not equal to tolerance rtol=0.00138107, atol=0 E E Mismatched elements: 6 / 7 (85.7%) E Max absolute difference among violations: 9.430041e+06 E Max relative difference among violations: 95946.7 E ACTUAL: array([-4.755468e+05, -4.363400e+06, 1.528350e+06, 4.055327e+05, E 2.321423e+06, -9.430139e+06, 2.000782e+02], dtype=float32) E DESIRED: array([1013.71423, -384.7074 , -384.7074 , -95.0007 , -98.28416, E -98.28416, 200. ], dtype=float32) scipy/differentiate/tests/test_differentiate.py:660: AssertionError __________________________ TestFBLAS2Simple.test_tbmv __________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_tbmv(self): rng = np.random.default_rng(1234) for ind, dtype in enumerate(DTYPES): n = 10 k = 3 x = rng.random(n).astype(dtype) A = zeros((n, n), dtype=dtype) # Banded upper triangular array for sup in range(k+1): A[arange(n-sup), arange(sup, n)] = rng.random(n-sup) # Add complex parts for c,z if ind > 1: A[nonzero(A)] += 1j * rng.random((k+1)*n-(k*(k+1)//2)).astype(dtype) # Form the banded storage Ab = zeros((k+1, n), dtype=dtype) for row in range(k+1): Ab[-row-1, row:] = diag(A, k=row) func, = get_blas_funcs(('tbmv',), dtype=dtype) y1 = func(k=k, a=Ab, x=x) y2 = A.dot(x) > assert_array_almost_equal(y1, y2) E AssertionError: E Arrays are not almost equal to 6 decimals E E Mismatched elements: 4 / 10 (40%) E Max absolute difference among violations: 1.2694142 E Max relative difference among violations: 1.2302793 E ACTUAL: array([0.931597, 1.115468, 1.163996, 0.708328, 0.534898, 1.201077, E 1.531751, 0.63249 , 0.166711, 0.229485], dtype=float32) E DESIRED: array([0.931597, 0.500147, 1.163996, 0.484109, 0.534898, 1.048065, E 1.531751, 1.901904, 0.166711, 0.229485], dtype=float32) scipy/linalg/tests/test_blas.py:631: AssertionError ______________ TestEigh.test_various_drivers_standard[ev-float32] ______________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = driver = 'ev', dtype_ = @pytest.mark.parametrize('dtype_', DTYPES) @pytest.mark.parametrize('driver', ("ev", "evd", "evr", "evx")) def test_various_drivers_standard(self, driver, dtype_): a = _random_hermitian_matrix(n=20, dtype=dtype_) w, v = eigh(a, driver=driver) > assert_allclose(a @ v - (v * w), 0., atol=1000*np.finfo(dtype_).eps, rtol=0.) E AssertionError: E Not equal to tolerance rtol=0, atol=0.000119209 E E Mismatched elements: 399 / 400 (99.8%) E Max absolute difference among violations: 1.42748475 E Max relative difference among violations: inf E ACTUAL: array([[ 9.342192e-02, -1.819146e-01, 2.205777e-02, 1.524931e-01, E -1.119286e-01, 5.805820e-01, 1.516515e-01, 4.212186e-04, E -3.004059e-02, 2.916394e-01, 8.737071e-02, -6.492929e-02,... E DESIRED: array(0.) scipy/linalg/tests/test_decomp.py:942: AssertionError _____________ TestEigh.test_various_drivers_standard[evd-float32] ______________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = driver = 'evd', dtype_ = @pytest.mark.parametrize('dtype_', DTYPES) @pytest.mark.parametrize('driver', ("ev", "evd", "evr", "evx")) def test_various_drivers_standard(self, driver, dtype_): a = _random_hermitian_matrix(n=20, dtype=dtype_) w, v = eigh(a, driver=driver) > assert_allclose(a @ v - (v * w), 0., atol=1000*np.finfo(dtype_).eps, rtol=0.) E AssertionError: E Not equal to tolerance rtol=0, atol=0.000119209 E E Mismatched elements: 400 / 400 (100%) E Max absolute difference among violations: 62.80361938 E Max relative difference among violations: inf E ACTUAL: array([[-2.967903e-01, -2.726185e-01, 6.232503e-01, -1.466874e-01, E -3.662112e-01, -1.432561e-01, -1.670814e-01, 1.393577e-01, E 3.112432e-03, -2.878844e-02, 3.910560e-01, -1.988045e-01,... E DESIRED: array(0.) scipy/linalg/tests/test_decomp.py:942: AssertionError _____________ TestEigh.test_various_drivers_standard[evr-float32] ______________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = driver = 'evr', dtype_ = @pytest.mark.parametrize('dtype_', DTYPES) @pytest.mark.parametrize('driver', ("ev", "evd", "evr", "evx")) def test_various_drivers_standard(self, driver, dtype_): a = _random_hermitian_matrix(n=20, dtype=dtype_) w, v = eigh(a, driver=driver) > assert_allclose(a @ v - (v * w), 0., atol=1000*np.finfo(dtype_).eps, rtol=0.) E AssertionError: E Not equal to tolerance rtol=0, atol=0.000119209 E E Mismatched elements: 400 / 400 (100%) E Max absolute difference among violations: 105.54970551 E Max relative difference among violations: inf E ACTUAL: array([[-3.102919e-01, 2.983966e-01, -9.843068e-02, -2.122418e-01, E 8.095239e-02, -6.063905e-01, 2.210600e-01, -4.108182e-01, E -6.132551e-01, 3.587706e-01, -4.049076e-01, -4.974234e-01,... E DESIRED: array(0.) scipy/linalg/tests/test_decomp.py:942: AssertionError _____________ TestEigh.test_various_drivers_standard[evx-float32] ______________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = driver = 'evx', dtype_ = @pytest.mark.parametrize('dtype_', DTYPES) @pytest.mark.parametrize('driver', ("ev", "evd", "evr", "evx")) def test_various_drivers_standard(self, driver, dtype_): a = _random_hermitian_matrix(n=20, dtype=dtype_) w, v = eigh(a, driver=driver) > assert_allclose(a @ v - (v * w), 0., atol=1000*np.finfo(dtype_).eps, rtol=0.) E AssertionError: E Not equal to tolerance rtol=0, atol=0.000119209 E E Mismatched elements: 400 / 400 (100%) E Max absolute difference among violations: 0.97623515 E Max relative difference among violations: inf E ACTUAL: array([[-2.241904e-02, -3.077250e-02, 2.497423e-01, 7.232299e-02, E -8.242464e-02, 6.426310e-02, -3.380539e-02, -4.648015e-03, E 3.578493e-02, 8.618274e-02, 3.668426e-02, 4.054008e-02,... E DESIRED: array(0.) scipy/linalg/tests/test_decomp.py:942: AssertionError ____________________________ TestQZ.test_qz_single _____________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_qz_single(self): rng = np.random.RandomState(12345) n = 5 A = rng.random([n, n]).astype(float32) B = rng.random([n, n]).astype(float32) AA, BB, Q, Z = qz(A, B) > assert_array_almost_equal(Q @ AA @ Z.T, A, decimal=5) E AssertionError: E Arrays are not almost equal to 5 decimals E E Mismatched elements: 25 / 25 (100%) E Max absolute difference among violations: 4.109984 E Max relative difference among violations: 15.699602 E ACTUAL: array([[ 1.9378 , 0.78157, 3.07137, -1.2851 , 0.31267], E [-0.89428, 1.13113, -3.45681, 0.93562, 0.6501 ], E [ 0.73806, 1.11506, 0.0098 , -0.25247, 0.23068],... E DESIRED: array([[0.92962, 0.31638, 0.18392, 0.20456, 0.56773], E [0.59554, 0.96451, 0.65318, 0.74891, 0.65357], E [0.74771, 0.96131, 0.00839, 0.10644, 0.2987 ],... scipy/linalg/tests/test_decomp.py:2329: AssertionError __________________________________ test_orth ___________________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 def test_orth(): dtypes = [np.float32, np.float64, np.complex64, np.complex128] sizes = [1, 2, 3, 10, 100] for dt, n in itertools.product(dtypes, sizes): > _check_orth(n, dt) scipy/linalg/tests/test_decomp.py:2958: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ n = 10, dtype = , skip_big = False def _check_orth(n, dtype, skip_big=False): X = np.ones((n, 2), dtype=float).astype(dtype) eps = np.finfo(dtype).eps tol = 1000 * eps Y = orth(X) assert_equal(Y.shape, (n, 1)) assert_allclose(Y, Y.mean(), atol=tol) Y = orth(X.T) assert_equal(Y.shape, (2, 1)) assert_allclose(Y, Y.mean(), atol=tol) if n > 5 and not skip_big: rng = np.random.RandomState(1) X = rng.rand(n, 5) @ rng.rand(5, n) X = X + 1e-4 * rng.rand(n, 1) @ rng.rand(1, n) X = X.astype(dtype) Y = orth(X, rcond=1e-3) > assert_equal(Y.shape, (n, 5)) E AssertionError: E Items are not equal: E item=1 E E ACTUAL: 9 E DESIRED: 5 scipy/linalg/tests/test_decomp.py:2931: AssertionError ________________________ TestNullSpace.test_null_space _________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_null_space(self): rng = np.random.RandomState(1) dtypes = [np.float32, np.float64, np.complex64, np.complex128] sizes = [1, 2, 3, 10, 100] for dt, n in itertools.product(dtypes, sizes): X = np.ones((2, n), dtype=dt) eps = np.finfo(dt).eps tol = 1000 * eps Y = null_space(X) assert_equal(Y.shape, (n, n-1)) assert_allclose(X @ Y, 0, atol=tol) Y = null_space(X.T) assert_equal(Y.shape, (2, 1)) assert_allclose(X.T @ Y, 0, atol=tol) X = rng.randn(1 + n//2, n) Y = null_space(X) assert_equal(Y.shape, (n, n - 1 - n//2)) assert_allclose(X @ Y, 0, atol=tol) if n > 5: rng = np.random.RandomState(1) X = rng.rand(n, 5) @ rng.rand(5, n) X = X + 1e-4 * rng.rand(n, 1) @ rng.rand(1, n) X = X.astype(dt) Y = null_space(X, rcond=1e-3) > assert_equal(Y.shape, (n, n - 5)) E AssertionError: E Items are not equal: E item=1 E E ACTUAL: 1 E DESIRED: 5 scipy/linalg/tests/test_decomp.py:3003: AssertionError ______________________ test_cossin[True-40-12-20-float32] ______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype_ = , m = 40, p = 12, q = 20, swap_sign = True @pytest.mark.parametrize('dtype_', DTYPES) @pytest.mark.parametrize('m, p, q', [ (2, 1, 1), (3, 2, 1), (3, 1, 2), (4, 2, 2), (4, 1, 2), (40, 12, 20), (40, 30, 1), (40, 1, 30), (100, 50, 1), (100, 50, 50), ]) @pytest.mark.parametrize('swap_sign', [True, False]) def test_cossin(dtype_, m, p, q, swap_sign): rng = default_rng(1708093570726217) if dtype_ in COMPLEX_DTYPES: x = np.array(unitary_group.rvs(m, random_state=rng), dtype=dtype_) else: x = np.array(ortho_group.rvs(m, random_state=rng), dtype=dtype_) u, cs, vh = cossin(x, p, q, swap_sign=swap_sign) > assert_allclose(x, u @ cs @ vh, rtol=0., atol=m*1e3*np.finfo(dtype_).eps) E AssertionError: E Not equal to tolerance rtol=0, atol=0.00476837 E E Mismatched elements: 1516 / 1600 (94.8%) E Max absolute difference among violations: 0.6755997 E Max relative difference among violations: 725.5781 E ACTUAL: array([[-0.023675, 0.401194, -0.053686, ..., 0.173375, 0.375826, E 0.015858], E [ 0.013268, -0.070994, -0.066108, ..., -0.156254, -0.061194,... E DESIRED: array([[-2.367542e-02, 4.011936e-01, -5.368587e-02, ..., 1.733750e-01, E 3.758263e-01, 1.585779e-02], E [-3.209841e-01, -6.434646e-02, -2.785044e-02, ..., -3.640836e-03,... scipy/linalg/tests/test_decomp_cossin.py:40: AssertionError ______________________ test_cossin[True-40-30-1-float32] _______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype_ = , m = 40, p = 30, q = 1, swap_sign = True @pytest.mark.parametrize('dtype_', DTYPES) @pytest.mark.parametrize('m, p, q', [ (2, 1, 1), (3, 2, 1), (3, 1, 2), (4, 2, 2), (4, 1, 2), (40, 12, 20), (40, 30, 1), (40, 1, 30), (100, 50, 1), (100, 50, 50), ]) @pytest.mark.parametrize('swap_sign', [True, False]) def test_cossin(dtype_, m, p, q, swap_sign): rng = default_rng(1708093570726217) if dtype_ in COMPLEX_DTYPES: x = np.array(unitary_group.rvs(m, random_state=rng), dtype=dtype_) else: x = np.array(ortho_group.rvs(m, random_state=rng), dtype=dtype_) u, cs, vh = cossin(x, p, q, swap_sign=swap_sign) > assert_allclose(x, u @ cs @ vh, rtol=0., atol=m*1e3*np.finfo(dtype_).eps) E AssertionError: E Not equal to tolerance rtol=0, atol=0.00476837 E E Mismatched elements: 1428 / 1600 (89.2%) E Max absolute difference among violations: 0.85984194 E Max relative difference among violations: 53.728577 E ACTUAL: array([[-0.023675, 0.401194, -0.053686, ..., 0.173375, 0.375826, E 0.015858], E [ 0.013268, -0.070994, -0.066108, ..., -0.156254, -0.061194,... E DESIRED: array([[-0.023675, -0.296142, 0.112337, ..., -0.025055, -0.212735, E -0.138287], E [ 0.013268, -0.097287, -0.080412, ..., -0.16671 , -0.049722,... scipy/linalg/tests/test_decomp_cossin.py:40: AssertionError ______________________ test_cossin[True-40-1-30-float32] _______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype_ = , m = 40, p = 1, q = 30, swap_sign = True @pytest.mark.parametrize('dtype_', DTYPES) @pytest.mark.parametrize('m, p, q', [ (2, 1, 1), (3, 2, 1), (3, 1, 2), (4, 2, 2), (4, 1, 2), (40, 12, 20), (40, 30, 1), (40, 1, 30), (100, 50, 1), (100, 50, 50), ]) @pytest.mark.parametrize('swap_sign', [True, False]) def test_cossin(dtype_, m, p, q, swap_sign): rng = default_rng(1708093570726217) if dtype_ in COMPLEX_DTYPES: x = np.array(unitary_group.rvs(m, random_state=rng), dtype=dtype_) else: x = np.array(ortho_group.rvs(m, random_state=rng), dtype=dtype_) u, cs, vh = cossin(x, p, q, swap_sign=swap_sign) > assert_allclose(x, u @ cs @ vh, rtol=0., atol=m*1e3*np.finfo(dtype_).eps) E AssertionError: E Not equal to tolerance rtol=0, atol=0.00476837 E E Mismatched elements: 1540 / 1600 (96.2%) E Max absolute difference among violations: 2.346482 E Max relative difference among violations: 583.29803 E ACTUAL: array([[-0.023675, 0.401194, -0.053686, ..., 0.173375, 0.375826, E 0.015858], E [ 0.013268, -0.070994, -0.066108, ..., -0.156254, -0.061194,... E DESIRED: array([[-0.023675, 0.401194, -0.053686, ..., 0.173375, 0.375826, E 0.015858], E [ 0.242677, 0.210725, -0.155684, ..., -0.002323, -0.236921,... scipy/linalg/tests/test_decomp_cossin.py:40: AssertionError ______________________ test_cossin[True-100-50-1-float32] ______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype_ = , m = 100, p = 50, q = 1, swap_sign = True @pytest.mark.parametrize('dtype_', DTYPES) @pytest.mark.parametrize('m, p, q', [ (2, 1, 1), (3, 2, 1), (3, 1, 2), (4, 2, 2), (4, 1, 2), (40, 12, 20), (40, 30, 1), (40, 1, 30), (100, 50, 1), (100, 50, 50), ]) @pytest.mark.parametrize('swap_sign', [True, False]) def test_cossin(dtype_, m, p, q, swap_sign): rng = default_rng(1708093570726217) if dtype_ in COMPLEX_DTYPES: x = np.array(unitary_group.rvs(m, random_state=rng), dtype=dtype_) else: x = np.array(ortho_group.rvs(m, random_state=rng), dtype=dtype_) u, cs, vh = cossin(x, p, q, swap_sign=swap_sign) > assert_allclose(x, u @ cs @ vh, rtol=0., atol=m*1e3*np.finfo(dtype_).eps) E AssertionError: E Not equal to tolerance rtol=0, atol=0.0119209 E E Mismatched elements: 5203 / 10000 (52%) E Max absolute difference among violations: 0.39734793 E Max relative difference among violations: 1249.2568 E ACTUAL: array([[-0.015377, 0.215435, -0.114384, ..., -0.10823 , -0.126455, E -0.056313], E [ 0.103618, -0.040978, 0.135694, ..., -0.047162, 0.025084,... E DESIRED: array([[-0.015377, 0.012008, 0.020515, ..., -0.090819, -0.023081, E -0.163705], E [ 0.103618, -0.010185, 0.127666, ..., -0.047846, 0.009101,... scipy/linalg/tests/test_decomp_cossin.py:40: AssertionError _____________________ test_cossin[True-100-50-50-float32] ______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype_ = , m = 100, p = 50, q = 50, swap_sign = True @pytest.mark.parametrize('dtype_', DTYPES) @pytest.mark.parametrize('m, p, q', [ (2, 1, 1), (3, 2, 1), (3, 1, 2), (4, 2, 2), (4, 1, 2), (40, 12, 20), (40, 30, 1), (40, 1, 30), (100, 50, 1), (100, 50, 50), ]) @pytest.mark.parametrize('swap_sign', [True, False]) def test_cossin(dtype_, m, p, q, swap_sign): rng = default_rng(1708093570726217) if dtype_ in COMPLEX_DTYPES: x = np.array(unitary_group.rvs(m, random_state=rng), dtype=dtype_) else: x = np.array(ortho_group.rvs(m, random_state=rng), dtype=dtype_) u, cs, vh = cossin(x, p, q, swap_sign=swap_sign) > assert_allclose(x, u @ cs @ vh, rtol=0., atol=m*1e3*np.finfo(dtype_).eps) E AssertionError: E Not equal to tolerance rtol=0, atol=0.0119209 E E Mismatched elements: 9767 / 10000 (97.7%) E Max absolute difference among violations: 26.633354 E Max relative difference among violations: 529.1048 E ACTUAL: array([[-0.015377, 0.215435, -0.114384, ..., -0.10823 , -0.126455, E -0.056313], E [ 0.103618, -0.040978, 0.135694, ..., -0.047162, 0.025084,... E DESIRED: array([[-0.015377, -0.168924, -0.199883, ..., -0.719213, -0.701625, E -0.224203], E [ 0.103618, -0.38945 , -0.16025 , ..., -0.074746, -0.407019,... scipy/linalg/tests/test_decomp_cossin.py:40: AssertionError _____________________ test_cossin[False-40-12-20-float32] ______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype_ = , m = 40, p = 12, q = 20, swap_sign = False @pytest.mark.parametrize('dtype_', DTYPES) @pytest.mark.parametrize('m, p, q', [ (2, 1, 1), (3, 2, 1), (3, 1, 2), (4, 2, 2), (4, 1, 2), (40, 12, 20), (40, 30, 1), (40, 1, 30), (100, 50, 1), (100, 50, 50), ]) @pytest.mark.parametrize('swap_sign', [True, False]) def test_cossin(dtype_, m, p, q, swap_sign): rng = default_rng(1708093570726217) if dtype_ in COMPLEX_DTYPES: x = np.array(unitary_group.rvs(m, random_state=rng), dtype=dtype_) else: x = np.array(ortho_group.rvs(m, random_state=rng), dtype=dtype_) u, cs, vh = cossin(x, p, q, swap_sign=swap_sign) > assert_allclose(x, u @ cs @ vh, rtol=0., atol=m*1e3*np.finfo(dtype_).eps) E AssertionError: E Not equal to tolerance rtol=0, atol=0.00476837 E E Mismatched elements: 1500 / 1600 (93.8%) E Max absolute difference among violations: 0.67477995 E Max relative difference among violations: 827.6242 E ACTUAL: array([[-0.023675, 0.401194, -0.053686, ..., 0.173375, 0.375826, E 0.015858], E [ 0.013268, -0.070994, -0.066108, ..., -0.156254, -0.061194,... E DESIRED: array([[-0.023675, 0.401194, -0.053686, ..., 0.173375, 0.375827, E 0.015858], E [-0.264036, 0.021651, 0.057519, ..., -0.212966, -0.04391 ,... scipy/linalg/tests/test_decomp_cossin.py:40: AssertionError ______________________ test_cossin[False-40-30-1-float32] ______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype_ = , m = 40, p = 30, q = 1, swap_sign = False @pytest.mark.parametrize('dtype_', DTYPES) @pytest.mark.parametrize('m, p, q', [ (2, 1, 1), (3, 2, 1), (3, 1, 2), (4, 2, 2), (4, 1, 2), (40, 12, 20), (40, 30, 1), (40, 1, 30), (100, 50, 1), (100, 50, 50), ]) @pytest.mark.parametrize('swap_sign', [True, False]) def test_cossin(dtype_, m, p, q, swap_sign): rng = default_rng(1708093570726217) if dtype_ in COMPLEX_DTYPES: x = np.array(unitary_group.rvs(m, random_state=rng), dtype=dtype_) else: x = np.array(ortho_group.rvs(m, random_state=rng), dtype=dtype_) u, cs, vh = cossin(x, p, q, swap_sign=swap_sign) > assert_allclose(x, u @ cs @ vh, rtol=0., atol=m*1e3*np.finfo(dtype_).eps) E AssertionError: E Not equal to tolerance rtol=0, atol=0.00476837 E E Mismatched elements: 1411 / 1600 (88.2%) E Max absolute difference among violations: 0.77131927 E Max relative difference among violations: 6328.584 E ACTUAL: array([[-0.023675, 0.401194, -0.053686, ..., 0.173375, 0.375826, E 0.015858], E [ 0.013268, -0.070994, -0.066108, ..., -0.156254, -0.061194,... E DESIRED: array([[-0.023675, -0.370126, 0.126279, ..., -0.008875, -0.234316, E -0.161735], E [ 0.013268, -0.010541, -0.093211, ..., -0.16265 , -0.05025 ,... scipy/linalg/tests/test_decomp_cossin.py:40: AssertionError ______________________ test_cossin[False-40-1-30-float32] ______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype_ = , m = 40, p = 1, q = 30, swap_sign = False @pytest.mark.parametrize('dtype_', DTYPES) @pytest.mark.parametrize('m, p, q', [ (2, 1, 1), (3, 2, 1), (3, 1, 2), (4, 2, 2), (4, 1, 2), (40, 12, 20), (40, 30, 1), (40, 1, 30), (100, 50, 1), (100, 50, 50), ]) @pytest.mark.parametrize('swap_sign', [True, False]) def test_cossin(dtype_, m, p, q, swap_sign): rng = default_rng(1708093570726217) if dtype_ in COMPLEX_DTYPES: x = np.array(unitary_group.rvs(m, random_state=rng), dtype=dtype_) else: x = np.array(ortho_group.rvs(m, random_state=rng), dtype=dtype_) u, cs, vh = cossin(x, p, q, swap_sign=swap_sign) > assert_allclose(x, u @ cs @ vh, rtol=0., atol=m*1e3*np.finfo(dtype_).eps) E AssertionError: E Not equal to tolerance rtol=0, atol=0.00476837 E E Mismatched elements: 1534 / 1600 (95.9%) E Max absolute difference among violations: 3.985679 E Max relative difference among violations: 727.28265 E ACTUAL: array([[-0.023675, 0.401194, -0.053686, ..., 0.173375, 0.375826, E 0.015858], E [ 0.013268, -0.070994, -0.066108, ..., -0.156254, -0.061194,... E DESIRED: array([[-0.023675, 0.401194, -0.053686, ..., 0.173375, 0.375826, E 0.015858], E [ 0.233985, -0.138723, 0.383454, ..., 0.117729, 0.181953,... scipy/linalg/tests/test_decomp_cossin.py:40: AssertionError _____________________ test_cossin[False-100-50-1-float32] ______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype_ = , m = 100, p = 50, q = 1, swap_sign = False @pytest.mark.parametrize('dtype_', DTYPES) @pytest.mark.parametrize('m, p, q', [ (2, 1, 1), (3, 2, 1), (3, 1, 2), (4, 2, 2), (4, 1, 2), (40, 12, 20), (40, 30, 1), (40, 1, 30), (100, 50, 1), (100, 50, 50), ]) @pytest.mark.parametrize('swap_sign', [True, False]) def test_cossin(dtype_, m, p, q, swap_sign): rng = default_rng(1708093570726217) if dtype_ in COMPLEX_DTYPES: x = np.array(unitary_group.rvs(m, random_state=rng), dtype=dtype_) else: x = np.array(ortho_group.rvs(m, random_state=rng), dtype=dtype_) u, cs, vh = cossin(x, p, q, swap_sign=swap_sign) > assert_allclose(x, u @ cs @ vh, rtol=0., atol=m*1e3*np.finfo(dtype_).eps) E AssertionError: E Not equal to tolerance rtol=0, atol=0.0119209 E E Mismatched elements: 5514 / 10000 (55.1%) E Max absolute difference among violations: 0.39641154 E Max relative difference among violations: 10247.267 E ACTUAL: array([[-0.015377, 0.215435, -0.114384, ..., -0.10823 , -0.126455, E -0.056313], E [ 0.103618, -0.040978, 0.135694, ..., -0.047162, 0.025084,... E DESIRED: array([[-0.015377, -0.004886, 0.016865, ..., -0.089511, -0.028338, E -0.151985], E [ 0.103618, -0.021705, 0.137051, ..., -0.062413, 0.015603,... scipy/linalg/tests/test_decomp_cossin.py:40: AssertionError _____________________ test_cossin[False-100-50-50-float32] _____________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype_ = , m = 100, p = 50, q = 50, swap_sign = False @pytest.mark.parametrize('dtype_', DTYPES) @pytest.mark.parametrize('m, p, q', [ (2, 1, 1), (3, 2, 1), (3, 1, 2), (4, 2, 2), (4, 1, 2), (40, 12, 20), (40, 30, 1), (40, 1, 30), (100, 50, 1), (100, 50, 50), ]) @pytest.mark.parametrize('swap_sign', [True, False]) def test_cossin(dtype_, m, p, q, swap_sign): rng = default_rng(1708093570726217) if dtype_ in COMPLEX_DTYPES: x = np.array(unitary_group.rvs(m, random_state=rng), dtype=dtype_) else: x = np.array(ortho_group.rvs(m, random_state=rng), dtype=dtype_) u, cs, vh = cossin(x, p, q, swap_sign=swap_sign) > assert_allclose(x, u @ cs @ vh, rtol=0., atol=m*1e3*np.finfo(dtype_).eps) E AssertionError: E Not equal to tolerance rtol=0, atol=0.0119209 E E Mismatched elements: 9757 / 10000 (97.6%) E Max absolute difference among violations: 17.122278 E Max relative difference among violations: 1999.9557 E ACTUAL: array([[-0.015377, 0.215435, -0.114384, ..., -0.10823 , -0.126455, E -0.056313], E [ 0.103618, -0.040978, 0.135694, ..., -0.047162, 0.025084,... E DESIRED: array([[-0.015376, 0.181708, 0.879086, ..., 1.64327 , -1.821804, E 1.003828], E [ 0.103617, -0.253405, -1.621675, ..., -1.385363, 0.297315,... scipy/linalg/tests/test_decomp_cossin.py:40: AssertionError ________________________ TestQRdelete_f.test_sqr_1_row _________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_sqr_1_row(self): a, q, r = self.generate('sqr') for row in range(r.shape[0]): q1, r1 = qr_delete(q, r, row, overwrite_qr=False) a1 = np.delete(a, row, 0) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:113: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 1.86636209e-01, -9.81281877e-01, 9.97084677e-02, 2.43976146e-01, 3.21597546e-01, -1.22556813e-01, ..., -3.63466412e-01, -4.10013050e-01, -4.89894420e-01, -5.63417673e-01, -2.10072145e-01]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 49 / 49 (100%) E Max absolute difference among violations: 0.66633558 E Max relative difference among violations: 0.66633558 E ACTUAL: array([[ 1.021831, -0.087624, 0.00591 , 0.039166, 0.065602, 0.027344, E -0.003921], E [-0.087624, 1.328236, 0.044168, -0.089793, -0.185572, -0.037453,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRdelete_f.test_sqr_p_row _________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_sqr_p_row(self): a, q, r = self.generate('sqr') for ndel in range(2, 6): for row in range(a.shape[0]-ndel): q1, r1 = qr_delete(q, r, row, ndel, overwrite_qr=False) a1 = np.delete(a, slice(row, row+ndel), 0) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:121: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.09932342, -0.27382082, -0.344083 , 0.08006003, -0.1292142 , -0.22073951], [ 0.50747466, 0...140583], [ 0.34019896, -0.29698104, 0.31548667, 0.34444696, -0.6283778 , 0.45258236]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 36 / 36 (100%) E Max absolute difference among violations: 0.78378686 E Max relative difference among violations: 0.78378686 E ACTUAL: array([[ 0.998498, 0.01002 , 0.003457, -0.010568, 0.028605, -0.021412], E [ 0.01002 , 1.006002, -0.143376, -0.019685, -0.022003, 0.029848], E [ 0.003457, -0.143376, 0.261373, 0.097956, -0.172846, 0.09824 ],... E DESIRED: array([[1., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRdelete_f.test_sqr_1_col _________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_sqr_1_col(self): a, q, r = self.generate('sqr') for col in range(r.shape[1]): q1, r1 = qr_delete(q, r, col, which='col', overwrite_qr=False) a1 = np.delete(a, col, 1) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:128: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.71757275, 0.32545704, -0.11414485, -0.04048553, 0.5156725 , -0.06631657, -0.29257995, -0.4075364 ...45, 0.31398094, -0.25817102, -0.2170475 , -0.5990111 , -0.5976071 , 0.06356712, -0.12110416]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 63 / 64 (98.4%) E Max absolute difference among violations: 0.59742817 E Max relative difference among violations: 0.59742817 E ACTUAL: array([[ 1. , -0.078286, 0.057625, 0.04917 , 0.006046, 0.07738 , E 0.03843 , 0.03497 ], E [-0.078286, 0.859309, -0.518793, -0.444028, 0.247565, -0.122049,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRdelete_f.test_sqr_p_col _________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_sqr_p_col(self): a, q, r = self.generate('sqr') for ndel in range(2, 6): for col in range(r.shape[1]-ndel): q1, r1 = qr_delete(q, r, col, ndel, which='col', overwrite_qr=False) a1 = np.delete(a, slice(col, col+ndel), 1) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:137: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.41101846, 0.35108933, -0.2825328 , -0.42115656, -0.1596351 , 0.22833662, 0.4275741 , -0.5896336 ...57, 0.08023989, -0.0829244 , 0.6801252 , 0.3978853 , -0.12976867, 0.524279 , -0.32001686]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.89083426 E Max relative difference among violations: 0.89083426 E ACTUAL: array([[ 0.882892, 0.246297, -0.128235, 0.110353, 0.07333 , -0.101825, E -0.15081 , 0.190417], E [ 0.246297, 0.257901, -0.153786, 0.026664, -0.014446, 0.10001 ,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRdelete_f.test_tall_1_row ________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_tall_1_row(self): a, q, r = self.generate('tall') for row in range(r.shape[0]): q1, r1 = qr_delete(q, r, row, overwrite_qr=False) a1 = np.delete(a, row, 0) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:144: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-3.16314042e-01, 3.19479942e-01, 7.03149974e-01, 3.23822111e-01, -2.34059498e-01, -2.26062909e-03, ..., 5.81114769e-01, 3.19474131e-01, 4.32925135e-01, -2.17818588e-01, 1.64425045e-01]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 121 / 121 (100%) E Max absolute difference among violations: 0.45172849 E Max relative difference among violations: 0.28236765 E ACTUAL: array([[ 1.010507, 0.015744, 0.02453 , 0.040837, 0.004725, 0.053486, E 0.035302, -0.036095, 0.04301 , -0.034739, -0.037778], E [ 0.015744, 0.972233, 0.036262, 0.082164, 0.095898, 0.089535,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRdelete_f.test_tall_p_row ________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_tall_p_row(self): a, q, r = self.generate('tall') for ndel in range(2, 6): for row in range(a.shape[0]-ndel): q1, r1 = qr_delete(q, r, row, ndel, overwrite_qr=False) a1 = np.delete(a, slice(row, row+ndel), 0) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:152: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.24696156, 0.03442599, 0.38612595, 0.5270506 , -0.12669533, -0.24438667, -0.05417787, -0.10955369....15577179, -0.15467376, -0.07737822, 0.58125645, -0.2470024 , -0.4315974 , 0.2603494 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 100 / 100 (100%) E Max absolute difference among violations: 0.52669135 E Max relative difference among violations: 0.52669135 E ACTUAL: array([[ 1.087998, 0.014213, 0.068311, 0.068897, -0.108689, 0.085847, E 0.083735, 0.015239, -0.117213, -0.003929], E [ 0.014213, 0.940565, -0.036925, 0.043893, 0.064743, -0.056576,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRdelete_f.test_tall_1_col ________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_tall_1_col(self): a, q, r = self.generate('tall') for col in range(r.shape[1]): q1, r1 = qr_delete(q, r, col, which='col', overwrite_qr=False) a1 = np.delete(a, col, 1) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:159: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.5129236 , 0.18851633, 0.337314 , -0.0441196 , -0.12753233, -0.2632717 , 0.20964359, -0.54046607... -0.44714117, 0.30242503, -0.01750351, -0.10283814, -0.0338793 , -0.05673063, 0.64890796]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 139 / 144 (96.5%) E Max absolute difference among violations: 0.64773828 E Max relative difference among violations: 0.37683636 E ACTUAL: array([[ 1.000000e+00, 2.411770e-02, -3.756972e-03, 4.032309e-02, E -4.732940e-02, 7.161894e-02, -4.517871e-02, 1.498640e-02, E 1.201961e-01, -3.408195e-03, -3.086936e-08, 5.005348e-08],... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRdelete_f.test_tall_p_col ________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_tall_p_col(self): a, q, r = self.generate('tall') for ndel in range(2, 6): for col in range(r.shape[1]-ndel): q1, r1 = qr_delete(q, r, col, ndel, which='col', overwrite_qr=False) a1 = np.delete(a, slice(col, col+ndel), 1) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:168: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-2.32417360e-01, -3.77174050e-01, 5.72815649e-02, 3.31627838e-02, 5.39877772e-01, 2.26244226e-01, ...9043e-01, -1.75035112e-02, -1.02838144e-01, -3.38793024e-02, -5.67306317e-02, 6.48907959e-01]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 144 / 144 (100%) E Max absolute difference among violations: 0.57282019 E Max relative difference among violations: 0.37582827 E ACTUAL: array([[ 0.925413, 0.152698, -0.087986, -0.087832, 0.068373, 0.074873, E 0.11176 , -0.031052, -0.016692, -0.342067, -0.131134, 0.006717], E [ 0.152698, 0.624172, 0.059967, 0.243586, -0.066541, -0.080077,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRdelete_f.test_fat_1_row _________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_fat_1_row(self): a, q, r = self.generate('fat') for row in range(r.shape[0]): q1, r1 = qr_delete(q, r, row, overwrite_qr=False) a1 = np.delete(a, row, 0) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:175: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-8.1758261e-02, 4.5078856e-01, 2.2530787e-02, 3.4362692e-01, 4.7712708e-01, -5.7660729e-01], ...1.0442426e-01, 7.2471625e-01, -2.5878775e-01, 2.4741794e-01, -2.0822719e-01, 2.7625912e-01]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 36 / 36 (100%) E Max absolute difference among violations: 0.96687555 E Max relative difference among violations: 0.66224754 E ACTUAL: array([[ 0.839216, 0.255542, 0.531388, 0.075416, -0.130127, 0.026889], E [ 0.255542, 0.835012, 0.040314, 0.330709, 0.18962 , 0.073362], E [ 0.531388, 0.040314, 1.186897, -0.966876, -0.071234, 0.061015],... E DESIRED: array([[1., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRdelete_f.test_fat_p_row _________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_fat_p_row(self): a, q, r = self.generate('fat') for ndel in range(2, 6): for row in range(a.shape[0]-ndel): q1, r1 = qr_delete(q, r, row, ndel, overwrite_qr=False) a1 = np.delete(a, slice(row, row+ndel), 0) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:183: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.4694624 , -0.3983922 , -0.41845673, 0.07427007, -0.40310222], [ 0.3519064 , -0.06486727, 0.0092725...4110741 , -0.06216772], [ 0.11762901, -0.74032474, 0.2529251 , -0.36905038, 0.01569368]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 25 / 25 (100%) E Max absolute difference among violations: 0.85621417 E Max relative difference among violations: 0.21397984 E ACTUAL: array([[ 0.85955 , -0.222668, -0.494119, -0.166652, -0.055498], E [-0.222668, 0.876523, 0.271839, -0.036756, -0.047601], E [-0.494119, 0.271839, 1.21398 , -0.856214, 0.02292 ],... E DESIRED: array([[1., 0., 0., 0., 0.], E [0., 1., 0., 0., 0.], E [0., 0., 1., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRdelete_f.test_fat_1_col _________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_fat_1_col(self): a, q, r = self.generate('fat') for col in range(r.shape[1]): q1, r1 = qr_delete(q, r, col, which='col', overwrite_qr=False) a1 = np.delete(a, col, 1) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:190: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.57653385, -0.00771517, 0.44871545, -0.14140046, -0.58830607, 0.14899907, 0.6187282 ], [-0... [-0.58015525, 0.24955639, 0.02681254, 0.17397785, 0.20131269, -0.39649603, -0.40688038]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 49 / 49 (100%) E Max absolute difference among violations: 1.60311389 E Max relative difference among violations: 1.60311389 E ACTUAL: array([[ 1.633285, -0.27105 , -0.844477, 0.889111, 0.445796, -0.052748, E -0.263671], E [-0.27105 , 0.497191, 0.748993, -0.174673, -0.080696, -0.061603,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRdelete_f.test_fat_p_col _________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_fat_p_col(self): a, q, r = self.generate('fat') for ndel in range(2, 6): for col in range(r.shape[1]-ndel): q1, r1 = qr_delete(q, r, col, ndel, which='col', overwrite_qr=False) a1 = np.delete(a, slice(col, col+ndel), 1) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:199: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.3394487 , 0.04246562, -0.624225 , 0.5647264 , 0.3105046 , -0.61508864, 0.06760904], [-0... [-0.1315716 , 0.4386418 , -0.28044355, -0.23652735, 0.1362758 , 0.46738008, 0.46022457]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 49 / 49 (100%) E Max absolute difference among violations: 2.69633389 E Max relative difference among violations: 2.69633389 E ACTUAL: array([[ 6.208894e-01, -4.125924e-01, 3.722369e-01, -2.107652e-01, E 1.306194e-01, 4.105542e-01, 1.072725e-01], E [-4.125924e-01, 8.882169e-01, 2.904918e-01, 4.670248e-01,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ______________________ TestQRdelete_f.test_economic_1_row ______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_economic_1_row(self): # this test always starts and ends with an economic decomp. a, q, r = self.generate('tall', 'economic') for row in range(r.shape[0]): q1, r1 = qr_delete(q, r, row, overwrite_qr=False) a1 = np.delete(a, row, 0) > check_qr(q1, r1, a1, self.rtol, self.atol, False) scipy/linalg/tests/test_decomp_update.py:207: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.32127067, -0.3076041 , 0.70385903, 0.3221093 , 0.22295514, -0.01798256, 0.09694107], [-0... [-0.11137632, 0.02667632, 0.3593314 , 0.03537534, -0.24639489, 0.07552385, 0.6074347 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 49 / 49 (100%) E Max absolute difference among violations: 0.34920144 E Max relative difference among violations: 0.34920144 E ACTUAL: array([[ 1.001039, -0.003015, 0.015215, 0.012717, 0.007755, -0.018026, E 0.01008 ], E [-0.003015, 1.007855, 0.009269, -0.01134 , 0.060397, -0.014731,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _________________ TestQRdelete_f.test_economic_p_row_economic __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_economic_p_row_economic(self): # (12, 7) - (3, 7) = (9,7) --> stays economic > self.base_economic_p_row_xxx(3) scipy/linalg/tests/test_decomp_update.py:222: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:218: in base_economic_p_row_xxx check_qr(q1, r1, a1, self.rtol, self.atol, False) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-6.17993236e-01, 1.81283399e-01, 1.57339707e-01, -1.12972334e-01, 2.32643694e-01, 3.37844312e-01, ..., -9.64868069e-03, 1.60456002e-02, 1.30385518e-01, 6.25984728e-01, 3.62964362e-01]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 49 / 49 (100%) E Max absolute difference among violations: 0.64155298 E Max relative difference among violations: 0.64155298 E ACTUAL: array([[ 0.969947, 0.03767 , -0.234968, 0.13223 , 0.001176, 0.024499, E 0.035053], E [ 0.03767 , 1.030372, 0.009795, -0.044533, 0.059905, -0.02198 ,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ____________________ TestQRdelete_f.test_economic_p_row_sqr ____________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_economic_p_row_sqr(self): # (12, 7) - (5, 7) = (7, 7) --> becomes square > self.base_economic_p_row_xxx(5) scipy/linalg/tests/test_decomp_update.py:226: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:218: in base_economic_p_row_xxx check_qr(q1, r1, a1, self.rtol, self.atol, False) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-7.9701766e-02, 4.4999206e-01, 5.9157144e-02, -6.5838128e-02, 3.2523778e-01, -6.9859958e-01, 1.398...2.9390585e-02, 7.0210546e-04, 1.3982168e-01, 3.1668636e-01, 5.8486819e-01, 3.0707735e-01]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 49 / 49 (100%) E Max absolute difference among violations: 0.69027427 E Max relative difference among violations: 0.69027427 E ACTUAL: array([[ 9.086320e-01, 5.093727e-02, -3.040335e-01, 1.651325e-01, E 2.822400e-02, 7.598256e-03, 4.152654e-02], E [ 5.093727e-02, 1.017312e+00, 4.087294e-02, -7.984526e-02,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ____________________ TestQRdelete_f.test_economic_p_row_fat ____________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_economic_p_row_fat(self): # (12, 7) - (7,7) = (5, 7) --> becomes fat > self.base_economic_p_row_xxx(7) scipy/linalg/tests/test_decomp_update.py:230: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:218: in base_economic_p_row_xxx check_qr(q1, r1, a1, self.rtol, self.atol, False) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.27182987, 0.81914926, -0.12144474, 0.19598211, -0.29222313], [ 0.52491885, 0.17519228, -0.2937673...7366439 , -0.24942276], [-0.19873503, 0.24564287, -0.02326675, -0.07531009, -0.50068045]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 25 / 25 (100%) E Max absolute difference among violations: 0.67726523 E Max relative difference among violations: 0.67726523 E ACTUAL: array([[ 0.907722, -0.065162, -0.308063, 0.160132, 0.02544 ], E [-0.065162, 0.973527, -0.084623, 0.079061, -0.03138 ], E [-0.308063, -0.084623, 0.322735, 0.306872, -0.056766],... E DESIRED: array([[1., 0., 0., 0., 0.], E [0., 1., 0., 0., 0.], E [0., 0., 1., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ______________________ TestQRdelete_f.test_economic_1_col ______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_economic_1_col(self): a, q, r = self.generate('tall', 'economic') for col in range(r.shape[1]): q1, r1 = qr_delete(q, r, col, which='col', overwrite_qr=False) a1 = np.delete(a, col, 1) > check_qr(q1, r1, a1, self.rtol, self.atol, False) scipy/linalg/tests/test_decomp_update.py:237: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.5129236 , 0.18851633, 0.337314 , -0.03804769, -0.11731276, -0.25028378], [-0.10798456, -0...412195], [-0.10603084, -0.29460573, 0.11698506, 0.27037084, -0.02707662, -0.47070122]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 35 / 36 (97.2%) E Max absolute difference among violations: 0.37683636 E Max relative difference among violations: 0.37683636 E ACTUAL: array([[ 1. , 0.024118, -0.003757, 0.039852, -0.048122, -0.006399], E [ 0.024118, 0.929056, 0.154952, -0.096947, -0.10634 , 0.163832], E [-0.003757, 0.154952, 0.623164, 0.039656, 0.199832, -0.147898],... E DESIRED: array([[1., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ______________________ TestQRdelete_f.test_economic_p_col ______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_economic_p_col(self): a, q, r = self.generate('tall', 'economic') for ndel in range(2, 6): for col in range(r.shape[1]-ndel): q1, r1 = qr_delete(q, r, col, ndel, which='col', overwrite_qr=False) a1 = np.delete(a, slice(col, col+ndel), 1) > check_qr(q1, r1, a1, self.rtol, self.atol, False) scipy/linalg/tests/test_decomp_update.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.23241736, -0.37717405, 0.05121209, 0.02311178, 0.53040904], [ 0.77963287, 0.0374815 , 0.1901487...50518626, 0.266761 ], [ 0.2842663 , -0.12746863, -0.26682904, 0.00103317, 0.39374727]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 25 / 25 (100%) E Max absolute difference among violations: 0.37582827 E Max relative difference among violations: 0.37582827 E ACTUAL: array([[ 0.925413, 0.152698, -0.099145, -0.106312, 0.110709], E [ 0.152698, 0.624172, 0.036292, 0.204379, -0.077119], E [-0.099145, 0.036292, 0.972853, -0.012075, 0.034771],... E DESIRED: array([[1., 0., 0., 0., 0.], E [0., 1., 0., 0., 0.], E [0., 0., 1., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRdelete_f.test_Mx1_1_row _________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_Mx1_1_row(self): a, q, r = self.generate('Mx1') for row in range(r.shape[0]): q1, r1 = qr_delete(q, r, row, overwrite_qr=False) a1 = np.delete(a, row, 0) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:253: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ q = array([[ 5.4598510e-01, -8.3779484e-01, 2.9802322e-08, 1.4901161e-08, 7.4505806e-09, 7.4505806e-09, -1.490...2.2529265e-01, 2.3097792e-01, 2.9083246e-01, 2.1222143e-01, 1.9056059e-01, 7.8131080e-01]], dtype=float32) r = array([[1.7882825], [0. ], [0. ], [0. ], [0. ], [0. ], [0. ]], dtype=float32) a = array([[0.9763755 ], [0.73179656], [0.6848747 ], [0.3976276 ], [0.31758112], [0.773892 ], [0.61821574]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def check_qr(q, r, a, rtol, atol, assert_sqr=True): assert_unitary(q, rtol, atol, assert_sqr) assert_upper_tri(r, rtol, atol) > assert_allclose(q.dot(r), a, rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 3 / 7 (42.9%) E Max absolute difference among violations: 2.6757975 E Max relative difference among violations: 2.7405412 E ACTUAL: array([[-1.699422e+00], E [ 1.057803e-08], E [-1.332374e-08],... E DESIRED: array([[0.976376], E [0.731797], E [0.684875],... scipy/linalg/tests/test_decomp_update.py:32: AssertionError ________________________ TestQRdelete_f.test_Mx1_p_row _________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_Mx1_p_row(self): a, q, r = self.generate('Mx1') for ndel in range(2, 6): for row in range(a.shape[0]-ndel): q1, r1 = qr_delete(q, r, row, ndel, overwrite_qr=False) a1 = np.delete(a, slice(row, row+ndel), 0) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:261: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ q = array([[ 4.8844603e-01, -6.8451911e-01, 5.4115993e-01, 3.8474632e-09, 2.7205673e-09, -3.3320009e-09], ...4.1263521e-01, 6.7804649e-02, -2.8667387e-01, -5.2474707e-01, -4.4423366e-01, 5.1985538e-01]], dtype=float32) r = array([[1.498214], [0. ], [0. ], [0. ], [0. ], [0. ]], dtype=float32) a = array([[0.73179656], [0.6848747 ], [0.3976276 ], [0.31758112], [0.773892 ], [0.61821574]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def check_qr(q, r, a, rtol, atol, assert_sqr=True): assert_unitary(q, rtol, atol, assert_sqr) assert_upper_tri(r, rtol, atol) > assert_allclose(q.dot(r), a, rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 3 / 6 (50%) E Max absolute difference among violations: 0.8350198 E Max relative difference among violations: 2.1000047 E ACTUAL: array([[-0.037578], E [ 0.684875], E [-0.437392],... E DESIRED: array([[0.731797], E [0.684875], E [0.397628],... scipy/linalg/tests/test_decomp_update.py:32: AssertionError ____________________ TestQRdelete_f.test_delete_last_p_col _____________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_delete_last_p_col(self): a, q, r = self.generate('tall', 'full') q1, r1 = qr_delete(q, r, 0, a.shape[1], 'col') > assert_unitary(q1) scipy/linalg/tests/test_decomp_update.py:328: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.19536638, 0.583947 , 0.06250694, -0.18595868, 0.05481176, 0.15734994, 0.31379938, -0.54046607... 0.06941481, 0.5169681 , -0.01750351, -0.10283814, -0.0338793 , -0.05673063, 0.64890796]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 116 / 144 (80.6%) E Max absolute difference among violations: 0.70918322 E Max relative difference among violations: 0.34245902 E ACTUAL: array([[ 1.000000e+00, -4.356157e-08, -2.102427e-08, 1.137667e-08, E -1.508646e-08, -1.974917e-08, -4.952290e-08, 4.698272e-08, E 6.386185e-08, 4.735954e-08, 4.777427e-09, 6.624254e-08],... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError __________________ TestQRdelete_f.test_non_unit_strides_1_row __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_unit_strides_1_row(self): > self.base_non_simple_strides(make_strided, [0], 1, 'row', True) scipy/linalg/tests/test_decomp_update.py:415: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:385: in base_non_simple_strides check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 1.86636209e-01, -9.81281877e-01, 9.97084677e-02, 2.43976146e-01, 3.21597546e-01, -1.22556813e-01, ..., -3.63466412e-01, -4.10013050e-01, -4.89894420e-01, -5.63417673e-01, -2.10072145e-01]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 49 / 49 (100%) E Max absolute difference among violations: 0.66633558 E Max relative difference among violations: 0.66633558 E ACTUAL: array([[ 1.021831, -0.087624, 0.00591 , 0.039166, 0.065602, 0.027344, E -0.003921], E [-0.087624, 1.328236, 0.044168, -0.089793, -0.185572, -0.037453,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError __________________ TestQRdelete_f.test_non_unit_strides_p_row __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_unit_strides_p_row(self): > self.base_non_simple_strides(make_strided, [0], 3, 'row', True) scipy/linalg/tests/test_decomp_update.py:418: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:385: in base_non_simple_strides check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.49353617, -0.05053553, -0.02836575, -0.05463055, 0.08630504], [ 0.36415505, 0.38180676, 0.3685434...01808354, -0.208296 ], [ 0.34079638, 0.3730473 , 0.21997404, 0.3505682 , 0.7709345 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 25 / 25 (100%) E Max absolute difference among violations: 0.83582284 E Max relative difference among violations: 0.83582284 E ACTUAL: array([[ 0.985904, -0.039639, -0.067694, 0.003824, -0.007086], E [-0.039639, 0.961582, -0.110572, 0.066439, 0.051852], E [-0.067694, -0.110572, 0.781219, 0.019949, 0.128647],... E DESIRED: array([[1., 0., 0., 0., 0.], E [0., 1., 0., 0., 0.], E [0., 0., 1., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError __________________ TestQRdelete_f.test_non_unit_strides_1_col __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_unit_strides_1_col(self): > self.base_non_simple_strides(make_strided, [0], 1, 'col', True) scipy/linalg/tests/test_decomp_update.py:421: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:385: in base_non_simple_strides check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.71757275, 0.32545704, -0.11414485, -0.04048553, 0.5156725 , -0.06631657, -0.29257995, -0.4075364 ...45, 0.31398094, -0.25817102, -0.2170475 , -0.5990111 , -0.5976071 , 0.06356712, -0.12110416]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 63 / 64 (98.4%) E Max absolute difference among violations: 0.59742817 E Max relative difference among violations: 0.59742817 E ACTUAL: array([[ 1. , -0.078286, 0.057625, 0.04917 , 0.006046, 0.07738 , E 0.03843 , 0.03497 ], E [-0.078286, 0.859309, -0.518793, -0.444028, 0.247565, -0.122049,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError __________________ TestQRdelete_f.test_non_unit_strides_p_col __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_unit_strides_p_col(self): > self.base_non_simple_strides(make_strided, [0], 3, 'col', False) scipy/linalg/tests/test_decomp_update.py:424: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:385: in base_non_simple_strides check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.03614428, -0.0734404 , 0.2755021 , 0.14243439, 0.49390158, 0.590088 , -0.6800376 , 0.00484298...38, -0.04191552, -0.69054323, -0.39697495, 0.02572207, 0.5891486 , 0.00667419, -0.21916038]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.92120699 E Max relative difference among violations: 0.92120699 E ACTUAL: array([[ 0.244846, 0.124679, -0.087489, -0.059943, 0.226459, -0.190705, E 0.119177, 0.086889], E [ 0.124679, 0.078793, -0.083952, -0.034695, 0.122237, -0.179742,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ____________________ TestQRdelete_f.test_neg_strides_1_row _____________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_neg_strides_1_row(self): > self.base_non_simple_strides(negate_strides, [0], 1, 'row', False) scipy/linalg/tests/test_decomp_update.py:427: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:385: in base_non_simple_strides check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 1.86636209e-01, -9.81281877e-01, 9.97084677e-02, 2.43976146e-01, 3.21597546e-01, -1.22556813e-01, ..., -3.63466412e-01, -4.10013050e-01, -4.89894420e-01, -5.63417673e-01, -2.10072145e-01]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 49 / 49 (100%) E Max absolute difference among violations: 0.66633558 E Max relative difference among violations: 0.66633558 E ACTUAL: array([[ 1.021831, -0.087624, 0.00591 , 0.039166, 0.065602, 0.027344, E -0.003921], E [-0.087624, 1.328236, 0.044168, -0.089793, -0.185572, -0.037453,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ____________________ TestQRdelete_f.test_neg_strides_p_row _____________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_neg_strides_p_row(self): > self.base_non_simple_strides(negate_strides, [0], 3, 'row', False) scipy/linalg/tests/test_decomp_update.py:430: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:385: in base_non_simple_strides check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.49353617, -0.05053553, -0.02836575, -0.05463055, 0.08630504], [ 0.36415505, 0.38180676, 0.3685434...01808354, -0.208296 ], [ 0.34079638, 0.3730473 , 0.21997404, 0.3505682 , 0.7709345 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 25 / 25 (100%) E Max absolute difference among violations: 0.83582284 E Max relative difference among violations: 0.83582284 E ACTUAL: array([[ 0.985904, -0.039639, -0.067694, 0.003824, -0.007086], E [-0.039639, 0.961582, -0.110572, 0.066439, 0.051852], E [-0.067694, -0.110572, 0.781219, 0.019949, 0.128647],... E DESIRED: array([[1., 0., 0., 0., 0.], E [0., 1., 0., 0., 0.], E [0., 0., 1., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ____________________ TestQRdelete_f.test_neg_strides_1_col _____________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_neg_strides_1_col(self): > self.base_non_simple_strides(negate_strides, [0], 1, 'col', False) scipy/linalg/tests/test_decomp_update.py:433: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:385: in base_non_simple_strides check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.71757275, 0.32545704, -0.11414485, -0.04048553, 0.5156725 , -0.06631657, -0.29257995, -0.4075364 ...45, 0.31398094, -0.25817102, -0.2170475 , -0.5990111 , -0.5976071 , 0.06356712, -0.12110416]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 63 / 64 (98.4%) E Max absolute difference among violations: 0.59742817 E Max relative difference among violations: 0.59742817 E ACTUAL: array([[ 1. , -0.078286, 0.057625, 0.04917 , 0.006046, 0.07738 , E 0.03843 , 0.03497 ], E [-0.078286, 0.859309, -0.518793, -0.444028, 0.247565, -0.122049,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ____________________ TestQRdelete_f.test_neg_strides_p_col _____________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_neg_strides_p_col(self): > self.base_non_simple_strides(negate_strides, [0], 3, 'col', False) scipy/linalg/tests/test_decomp_update.py:436: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:385: in base_non_simple_strides check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.03614428, -0.0734404 , 0.2755021 , 0.14243439, 0.49390158, 0.590088 , -0.6800376 , 0.00484298...38, -0.04191552, -0.69054323, -0.39697495, 0.02572207, 0.5891486 , 0.00667419, -0.21916038]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.92120699 E Max relative difference among violations: 0.92120699 E ACTUAL: array([[ 0.244846, 0.124679, -0.087489, -0.059943, 0.226459, -0.190705, E 0.119177, 0.086889], E [ 0.124679, 0.078793, -0.083952, -0.034695, 0.122237, -0.179742,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________ TestQRdelete_f.test_non_itemize_strides_1_row _________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_itemize_strides_1_row(self): > self.base_non_simple_strides(nonitemsize_strides, [0], 1, 'row', False) scipy/linalg/tests/test_decomp_update.py:439: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:385: in base_non_simple_strides check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 1.86636209e-01, -9.81281877e-01, 9.97084677e-02, 2.43976146e-01, 3.21597546e-01, -1.22556813e-01, ..., -3.63466412e-01, -4.10013050e-01, -4.89894420e-01, -5.63417673e-01, -2.10072145e-01]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 49 / 49 (100%) E Max absolute difference among violations: 0.66633558 E Max relative difference among violations: 0.66633558 E ACTUAL: array([[ 1.021831, -0.087624, 0.00591 , 0.039166, 0.065602, 0.027344, E -0.003921], E [-0.087624, 1.328236, 0.044168, -0.089793, -0.185572, -0.037453,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________ TestQRdelete_f.test_non_itemize_strides_p_row _________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_itemize_strides_p_row(self): > self.base_non_simple_strides(nonitemsize_strides, [0], 3, 'row', False) scipy/linalg/tests/test_decomp_update.py:442: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:385: in base_non_simple_strides check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.49353617, -0.05053553, -0.02836575, -0.05463055, 0.08630504], [ 0.36415505, 0.38180676, 0.3685434...01808354, -0.208296 ], [ 0.34079638, 0.3730473 , 0.21997404, 0.3505682 , 0.7709345 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 25 / 25 (100%) E Max absolute difference among violations: 0.83582284 E Max relative difference among violations: 0.83582284 E ACTUAL: array([[ 0.985904, -0.039639, -0.067694, 0.003824, -0.007086], E [-0.039639, 0.961582, -0.110572, 0.066439, 0.051852], E [-0.067694, -0.110572, 0.781219, 0.019949, 0.128647],... E DESIRED: array([[1., 0., 0., 0., 0.], E [0., 1., 0., 0., 0.], E [0., 0., 1., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________ TestQRdelete_f.test_non_itemize_strides_1_col _________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_itemize_strides_1_col(self): > self.base_non_simple_strides(nonitemsize_strides, [0], 1, 'col', False) scipy/linalg/tests/test_decomp_update.py:445: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:385: in base_non_simple_strides check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.71757275, 0.32545704, -0.11414485, -0.04048553, 0.5156725 , -0.06631657, -0.29257995, -0.4075364 ...45, 0.31398094, -0.25817102, -0.2170475 , -0.5990111 , -0.5976071 , 0.06356712, -0.12110416]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 63 / 64 (98.4%) E Max absolute difference among violations: 0.59742817 E Max relative difference among violations: 0.59742817 E ACTUAL: array([[ 1. , -0.078286, 0.057625, 0.04917 , 0.006046, 0.07738 , E 0.03843 , 0.03497 ], E [-0.078286, 0.859309, -0.518793, -0.444028, 0.247565, -0.122049,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________ TestQRdelete_f.test_non_itemize_strides_p_col _________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_itemize_strides_p_col(self): > self.base_non_simple_strides(nonitemsize_strides, [0], 3, 'col', False) scipy/linalg/tests/test_decomp_update.py:448: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:385: in base_non_simple_strides check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.03614428, -0.0734404 , 0.2755021 , 0.14243439, 0.49390158, 0.590088 , -0.6800376 , 0.00484298...38, -0.04191552, -0.69054323, -0.39697495, 0.02572207, 0.5891486 , 0.00667419, -0.21916038]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.92120699 E Max relative difference among violations: 0.92120699 E ACTUAL: array([[ 0.244846, 0.124679, -0.087489, -0.059943, 0.226459, -0.190705, E 0.119177, 0.086889], E [ 0.124679, 0.078793, -0.083952, -0.034695, 0.122237, -0.179742,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _______________ TestQRdelete_f.test_non_native_byte_order_1_row ________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_native_byte_order_1_row(self): > self.base_non_simple_strides(make_nonnative, [0], 1, 'row', False) scipy/linalg/tests/test_decomp_update.py:451: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:385: in base_non_simple_strides check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 1.86636209e-01, -9.81281877e-01, 9.97084677e-02, 2.43976146e-01, 3.21597546e-01, -1.22556813e-01, ..., -3.63466412e-01, -4.10013050e-01, -4.89894420e-01, -5.63417673e-01, -2.10072145e-01]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 49 / 49 (100%) E Max absolute difference among violations: 0.66633558 E Max relative difference among violations: 0.66633558 E ACTUAL: array([[ 1.021831, -0.087624, 0.00591 , 0.039166, 0.065602, 0.027344, E -0.003921], E [-0.087624, 1.328236, 0.044168, -0.089793, -0.185572, -0.037453,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _______________ TestQRdelete_f.test_non_native_byte_order_p_row ________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_native_byte_order_p_row(self): > self.base_non_simple_strides(make_nonnative, [0], 3, 'row', False) scipy/linalg/tests/test_decomp_update.py:454: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:385: in base_non_simple_strides check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.49353617, -0.05053553, -0.02836575, -0.05463055, 0.08630504], [ 0.36415505, 0.38180676, 0.3685434...01808354, -0.208296 ], [ 0.34079638, 0.3730473 , 0.21997404, 0.3505682 , 0.7709345 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 25 / 25 (100%) E Max absolute difference among violations: 0.83582284 E Max relative difference among violations: 0.83582284 E ACTUAL: array([[ 0.985904, -0.039639, -0.067694, 0.003824, -0.007086], E [-0.039639, 0.961582, -0.110572, 0.066439, 0.051852], E [-0.067694, -0.110572, 0.781219, 0.019949, 0.128647],... E DESIRED: array([[1., 0., 0., 0., 0.], E [0., 1., 0., 0., 0.], E [0., 0., 1., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _______________ TestQRdelete_f.test_non_native_byte_order_1_col ________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_native_byte_order_1_col(self): > self.base_non_simple_strides(make_nonnative, [0], 1, 'col', False) scipy/linalg/tests/test_decomp_update.py:457: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:385: in base_non_simple_strides check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.71757275, 0.32545704, -0.11414485, -0.04048553, 0.5156725 , -0.06631657, -0.29257995, -0.4075364 ...45, 0.31398094, -0.25817102, -0.2170475 , -0.5990111 , -0.5976071 , 0.06356712, -0.12110416]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 63 / 64 (98.4%) E Max absolute difference among violations: 0.59742817 E Max relative difference among violations: 0.59742817 E ACTUAL: array([[ 1. , -0.078286, 0.057625, 0.04917 , 0.006046, 0.07738 , E 0.03843 , 0.03497 ], E [-0.078286, 0.859309, -0.518793, -0.444028, 0.247565, -0.122049,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _______________ TestQRdelete_f.test_non_native_byte_order_p_col ________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_native_byte_order_p_col(self): > self.base_non_simple_strides(make_nonnative, [0], 3, 'col', False) scipy/linalg/tests/test_decomp_update.py:460: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:385: in base_non_simple_strides check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.03614428, -0.0734404 , 0.2755021 , 0.14243439, 0.49390158, 0.590088 , -0.6800376 , 0.00484298...38, -0.04191552, -0.69054323, -0.39697495, 0.02572207, 0.5891486 , 0.00667419, -0.21916038]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.92120699 E Max relative difference among violations: 0.92120699 E ACTUAL: array([[ 0.244846, 0.124679, -0.087489, -0.059943, 0.226459, -0.190705, E 0.119177, 0.086889], E [ 0.124679, 0.078793, -0.083952, -0.034695, 0.122237, -0.179742,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError __________________________ TestQRdelete_f.test_neg_k ___________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_neg_k(self): a, q, r = self.generate('sqr') for k, p, w in itertools.product([-3, -7], [1, 3], ['row', 'col']): q1, r1 = qr_delete(q, r, k, p, w, overwrite_qr=False) if w == 'row': a1 = np.delete(a, slice(k+a.shape[0], k+p+a.shape[0]), 0) else: a1 = np.delete(a, slice(k+a.shape[0], k+p+a.shape[1]), 1) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:470: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.37958533, -0.66628104, -0.47307548, -0.32146955, 0.31731668, 0.11828659, 0.30324605], [-0... [-0.5032697 , 0.14700805, -0.17373511, -0.16604163, 0.14034961, -0.74130756, -0.33195317]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 49 / 49 (100%) E Max absolute difference among violations: 0.64856702 E Max relative difference among violations: 0.38750011 E ACTUAL: array([[ 1.032074e+00, 1.089843e-02, 8.905759e-02, 9.176420e-02, E -6.916822e-02, 2.354438e-02, -1.997723e-02], E [ 1.089843e-02, 9.278526e-01, -1.607775e-04, -1.371663e-02,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ____________________ TestQRdelete_f.test_overwrite_qr_1_row ____________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_overwrite_qr_1_row(self): # any positively strided q and r. > self.base_overwrite_qr('row', 1, True, True) scipy/linalg/tests/test_decomp_update.py:512: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:490: in base_overwrite_qr check_qr(q1, r1, a1, self.rtol, self.atol, assert_sqr) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.31651604, 0.80760187, -0.12710178, -0.04059696, 0.22409604, 0.03393085, -0.1460938 ], [-0... [-0.13995564, 0.0958629 , -0.23257051, -0.27292284, -0.6568193 , -0.56504405, -0.09674032]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 49 / 49 (100%) E Max absolute difference among violations: 0.81583539 E Max relative difference among violations: 0.81583539 E ACTUAL: array([[ 1.520521, 0.161683, -0.183084, -0.226019, 0.012856, -0.061865, E -0.071287], E [ 0.161683, 1.02836 , -0.062666, -0.075213, -0.078643, -0.078572,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _______________ TestQRdelete_f.test_overwrite_economic_qr_1_row ________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_overwrite_economic_qr_1_row(self): # Any contiguous q and positively strided r. > self.base_overwrite_qr('row', 1, True, True, 'economic') scipy/linalg/tests/test_decomp_update.py:516: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:490: in base_overwrite_qr check_qr(q1, r1, a1, self.rtol, self.atol, assert_sqr) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.31651604, 0.80760187, -0.12710178, -0.04059696, 0.22409604, 0.03393085, -0.1460938 ], [-0... [-0.13995564, 0.0958629 , -0.23257051, -0.27292284, -0.6568193 , -0.56504405, -0.09674032]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 49 / 49 (100%) E Max absolute difference among violations: 0.81583539 E Max relative difference among violations: 0.81583539 E ACTUAL: array([[ 1.520521, 0.161683, -0.183084, -0.226019, 0.012856, -0.061865, E -0.071287], E [ 0.161683, 1.02836 , -0.062666, -0.075213, -0.078643, -0.078572,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ____________________ TestQRdelete_f.test_overwrite_qr_1_col ____________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_overwrite_qr_1_col(self): # any positively strided q and r. # full and eco share code paths > self.base_overwrite_qr('col', 1, True, True) scipy/linalg/tests/test_decomp_update.py:521: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:490: in base_overwrite_qr check_qr(q1, r1, a1, self.rtol, self.atol, assert_sqr) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.22000468, -0.7565924 , 0.44830325, 0.03819099, 0.33334422, 0.24286757, -0.27974144, -0.29305148...7 , -0.08638804, 0.26226413, 0.01755659, -0.62385327, -0.49693757, -0.29401547, -0.33437252]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 48 / 64 (75%) E Max absolute difference among violations: 0.99090639 E Max relative difference among violations: 0.99090639 E ACTUAL: array([[ 1.000000e+00, 1.993327e-08, -5.795695e-09, -3.550749e-08, E -8.893592e-09, -1.370973e-08, -3.093076e-08, 6.203862e-09], E [ 1.993327e-08, 1.000000e+00, -1.084555e-01, -3.044586e-03,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ____________________ TestQRdelete_f.test_overwrite_qr_p_row ____________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_overwrite_qr_p_row(self): # any positively strided q and r. > self.base_overwrite_qr('row', 3, True, True) scipy/linalg/tests/test_decomp_update.py:525: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:490: in base_overwrite_qr check_qr(q1, r1, a1, self.rtol, self.atol, assert_sqr) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.04828444, -0.7387781 , -0.15743524, 0.07584007, 0.13095038], [-0.7786973 , -0.3615889 , 0.1188188...27462924, 0.69817686], [-0.51320404, 0.3051136 , -0.19777909, 0.2062102 , -0.61611485]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 25 / 25 (100%) E Max absolute difference among violations: 0.83441629 E Max relative difference among violations: 0.83441629 E ACTUAL: array([[ 1.173422, -0.051454, -0.041821, 0.164762, 0.023587], E [-0.051454, 0.931102, 0.011739, -0.062164, 0.046518], E [-0.041821, 0.011739, 0.236835, -0.058198, 0.129532],... E DESIRED: array([[1., 0., 0., 0., 0.], E [0., 1., 0., 0., 0.], E [0., 0., 1., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _______________ TestQRdelete_f.test_overwrite_economic_qr_p_row ________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_overwrite_economic_qr_p_row(self): # any contiguous q and positively strided r > self.base_overwrite_qr('row', 3, True, True, 'economic') scipy/linalg/tests/test_decomp_update.py:529: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:490: in base_overwrite_qr check_qr(q1, r1, a1, self.rtol, self.atol, assert_sqr) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.04828444, -0.7387781 , -0.15743524, 0.07584007, 0.13095038], [-0.7786973 , -0.3615889 , 0.1188188...27462924, 0.69817686], [-0.51320404, 0.3051136 , -0.19777909, 0.2062102 , -0.61611485]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 25 / 25 (100%) E Max absolute difference among violations: 0.83441629 E Max relative difference among violations: 0.83441629 E ACTUAL: array([[ 1.173422, -0.051454, -0.041821, 0.164762, 0.023587], E [-0.051454, 0.931102, 0.011739, -0.062164, 0.046518], E [-0.041821, 0.011739, 0.236835, -0.058198, 0.129532],... E DESIRED: array([[1., 0., 0., 0., 0.], E [0., 1., 0., 0., 0.], E [0., 0., 1., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ____________________ TestQRdelete_f.test_overwrite_qr_p_col ____________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_overwrite_qr_p_col(self): # only F ordered q and r can be overwritten for cols # full and eco share code paths > self.base_overwrite_qr('col', 3, False, True) scipy/linalg/tests/test_decomp_update.py:534: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:490: in base_overwrite_qr check_qr(q1, r1, a1, self.rtol, self.atol, assert_sqr) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-2.2000468e-01, -7.5659239e-01, 4.4830325e-01, -3.4093902e-02, -4.2405149e-01, 7.5465322e-02, -2.529...413e-01, -2.5536854e-02, 1.2837110e-01, -8.2175446e-01, 3.3251172e-01, -1.7810786e-01]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 48 / 64 (75%) E Max absolute difference among violations: 0.99107946 E Max relative difference among violations: 0.99107946 E ACTUAL: array([[ 1.000000e+00, 1.993327e-08, -5.795695e-09, 2.608776e-08, E -1.963744e-08, -4.316530e-08, -1.342949e-09, 8.390931e-09], E [ 1.993327e-08, 1.000000e+00, -1.084555e-01, 3.656902e-03,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRinsert_f.test_sqr_1_row _________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_sqr_1_row(self): a, q, r, u = self.generate('sqr', which='row') for row in range(r.shape[0] + 1): q1, r1 = qr_insert(q, r, u, row) a1 = np.insert(a, row, u, 0) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:665: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.1135952 , -0.44500527, 0.39401913, 0.3946652 , 0.33878452, -0.401867 , -0.26911116, -0.27005482....2021717 , 0.11099365, 0.05850238, -0.35630798, 0.7136941 , 0.2471318 , -0.39366376]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 63 / 81 (77.8%) E Max absolute difference among violations: 0.72401667 E Max relative difference among violations: 0.72401667 E ACTUAL: array([[ 9.999999e-01, 7.686160e-09, -1.435937e-08, -6.996192e-09, E 2.378585e-08, -3.035893e-09, 3.213603e-08, -6.730215e-09, E -1.153305e-08],... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRinsert_f.test_sqr_p_row _________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_sqr_p_row(self): # sqr + rows --> fat always a, q, r, u = self.generate('sqr', which='row', p=3) for row in range(r.shape[0] + 1): q1, r1 = qr_insert(q, r, u, row) a1 = np.insert(a, np.full(3, row, np.intp), u, 0) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:673: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.09559663, 0.40973 , 0.09273495, -0.11701024, -0.01064075, 0.5447078 , 0.06086876, 0.61177605...191287 , -0.01765817, -0.04987694, 0.24217178, -0.66842157, -0.46752933, -0.18228841]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 99 / 121 (81.8%) E Max absolute difference among violations: 0.66013843 E Max relative difference among violations: 0.36160505 E ACTUAL: array([[ 9.999996e-01, 9.649158e-08, 3.305073e-08, -4.325999e-08, E 4.538149e-08, 5.146523e-09, -3.538601e-08, -7.976871e-09, E 1.169297e-09, 3.598380e-08, 1.381775e-10],... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRinsert_f.test_sqr_1_col _________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_sqr_1_col(self): a, q, r, u = self.generate('sqr', which='col') for col in range(r.shape[1] + 1): q1, r1 = qr_insert(q, r, u, col, 'col', overwrite_qru=False) a1 = np.insert(a, col, u, 1) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:680: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.10327542, 0.25801167, 0.9410847 , -0.2730402 , -0.2486015 , -0.2339887 , 0.03311411, -0.04928516...9 , -0.19846725, -0.12940702, -0.43081075, -0.2771651 , -0.23746143, -0.5953567 , -0.17541432]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.61626399 E Max relative difference among violations: 0.3833611 E ACTUAL: array([[ 1.052064, 0.088305, 0.059766, -0.05278 , -0.099685, -0.121396, E -0.014999, 0.003865], E [ 0.088305, 1.149774, 0.101368, -0.089519, -0.169076, -0.205899,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRinsert_f.test_sqr_p_col _________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_sqr_p_col(self): # sqr + cols --> fat always a, q, r, u = self.generate('sqr', which='col', p=3) for col in range(r.shape[1] + 1): q1, r1 = qr_insert(q, r, u, col, 'col', overwrite_qru=False) a1 = np.insert(a, np.full(3, col, np.intp), u, 1) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:688: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.00666839, -0.380012 , 0.6631341 , 0.32196206, 0.64931434, 0.02637718, -0.02590949, 0.21603242...87, 0.72825116, 0.49726722, -0.2975424 , 0.22813314, -0.0462536 , -0.08627897, 0.01588483]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.97517603 E Max relative difference among violations: 0.97517603 E ACTUAL: array([[ 1.141679, 0.052153, 0.285684, 0.165805, 0.07162 , -0.008002, E 0.004182, 0.104325], E [ 0.052153, 0.932698, 0.200856, 0.037478, 0.015709, -0.14353 ,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRinsert_f.test_tall_1_row ________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_tall_1_row(self): a, q, r, u = self.generate('tall', which='row') for row in range(r.shape[0] + 1): q1, r1 = qr_insert(q, r, u, row) a1 = np.insert(a, row, u, 0) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:695: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-1.01011604e-01, 3.69080395e-01, 3.71353865e-01, 4.31410909e-01, 7.11561367e-02, 3.10607821e-01, ..., -1.02838144e-01, -3.38793024e-02, -5.67306317e-02, 6.48907959e-01, -1.67225704e-01]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 139 / 169 (82.2%) E Max absolute difference among violations: 0.70912433 E Max relative difference among violations: 0.36279929 E ACTUAL: array([[ 1.000000e+00, -1.063983e-08, 5.285329e-09, 3.164400e-08, E -1.496846e-08, -4.361508e-09, -5.088212e-08, 5.979250e-08, E 3.544339e-08, 3.536233e-08, 1.801236e-10, 8.794696e-08,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRinsert_f.test_tall_p_row ________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_tall_p_row(self): # tall + rows --> tall always a, q, r, u = self.generate('tall', which='row', p=3) for row in range(r.shape[0] + 1): q1, r1 = qr_insert(q, r, u, row) a1 = np.insert(a, np.full(3, row, np.intp), u, 0) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:703: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.09156428, -0.34903857, -0.0374104 , -0.0535732 , -0.2077518 , 0.04772111, 0.00694111, 0. ....10283814, -0.0338793 , -0.05673063, 0.64890796, 0.0186973 , -0.08666246, -0.01702794]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 191 / 225 (84.9%) E Max absolute difference among violations: 0.56827027 E Max relative difference among violations: 0.34520912 E ACTUAL: array([[ 9.999999e-01, 3.786436e-09, -2.737544e-09, -2.167121e-09, E 2.532896e-09, -4.738019e-08, -4.524019e-08, -4.407959e-08, E -3.408024e-08, -4.536830e-08, 1.951244e-08, -6.470709e-08,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRinsert_f.test_tall_1_col ________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_tall_1_col(self): a, q, r, u = self.generate('tall', which='col') for col in range(r.shape[1] + 1): q1, r1 = qr_insert(q, r, u, col, 'col', overwrite_qru=False) a1 = np.insert(a, col, u, 1) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:710: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.0311444 , -0.5297203 , 0.64025956, -0.05753465, 0.24046437, -0.0315139 , 0.47032464, 0.14321211... -0.2479584 , 0.08422579, 0.5203617 , 0.15218297, 0.33479548, 0.44763473, 0.30782235]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 144 / 144 (100%) E Max absolute difference among violations: 0.49309742 E Max relative difference among violations: 0.34507287 E ACTUAL: array([[ 1.074814, -0.160674, 0.0835 , -0.149103, 0.016088, -0.04998 , E 0.016806, 0.158524, -0.168006, 0.018427, -0.020117, 0.039215], E [-0.160674, 1.345073, -0.17933 , 0.320221, -0.034551, 0.107339,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _____________________ TestQRinsert_f.test_tall_p_col_tall ______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_tall_p_col_tall(self): # 12x7 + 12x3 = 12x10 --> stays tall > self.base_tall_p_col_xxx(3) scipy/linalg/tests/test_decomp_update.py:725: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:721: in base_tall_p_col_xxx check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.01337993, 0.514598 , -0.20331407, 0.19304886, 0.5461875 , -0.06521768, 0.39233023, 0.13751037... -0.20606126, 0.17513426, -0.08132706, -0.12323293, -0.05302526, -0.25103292, 0.44463214]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 144 / 144 (100%) E Max absolute difference among violations: 0.78488433 E Max relative difference among violations: 0.78488433 E ACTUAL: array([[ 1.038829, 0.179194, 0.057119, 0.0154 , 0.021443, -0.053349, E 0.007428, 0.055154, -0.04044 , 0.032131, -0.055361, -0.097504], E [ 0.179194, 1.784884, 0.136528, 0.036538, 0.029965, -0.13436 ,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ______________________ TestQRinsert_f.test_tall_p_col_sqr ______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_tall_p_col_sqr(self): # 12x7 + 12x5 = 12x12 --> becomes sqr > self.base_tall_p_col_xxx(5) scipy/linalg/tests/test_decomp_update.py:729: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:721: in base_tall_p_col_xxx check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.14862493, -0.41561866, 0.21464624, 0.15832838, 0.08116661, 0.03379957, 0.63969815, -0.29438865... 0.2252359 , -0.26527327, -0.10733213, -0.11648908, -0.1999945 , -0.22417036, -0.03882923]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 144 / 144 (100%) E Max absolute difference among violations: 0.79605654 E Max relative difference among violations: 0.79605654 E ACTUAL: array([[ 1.117878e+00, 2.210004e-01, -5.045983e-02, 1.654391e-01, E -1.150449e-01, -5.018784e-02, -5.528835e-02, 3.133931e-02, E 6.762729e-02, -1.084355e-01, -4.808075e-03, 4.260934e-02],... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ______________________ TestQRinsert_f.test_tall_p_col_fat ______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_tall_p_col_fat(self): # 12x7 + 12x7 = 12x14 --> becomes fat > self.base_tall_p_col_xxx(7) scipy/linalg/tests/test_decomp_update.py:733: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:721: in base_tall_p_col_xxx check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.08621246, -0.3651652 , 0.17948836, -0.44893003, 0.19859003, 0.18026856, -0.08279069, 0.40576807... 0.635688 , -0.20850247, 0.2580139 , 0.45041358, 0.11454023, 0.02432197, -0.00705618]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 144 / 144 (100%) E Max absolute difference among violations: 0.75515795 E Max relative difference among violations: 0.75515795 E ACTUAL: array([[ 1.015732, 0.032896, -0.022875, -0.053206, 0.012177, -0.111266, E 0.005121, -0.031298, -0.001724, 0.039778, -0.037699, 0.074683], E [ 0.032896, 1.075683, -0.003784, -0.170789, -0.02021 , 0.057639,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRinsert_f.test_fat_1_row _________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_fat_1_row(self): a, q, r, u = self.generate('fat', which='row') for row in range(r.shape[0] + 1): q1, r1 = qr_insert(q, r, u, row) a1 = np.insert(a, row, u, 0) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:740: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.12201956, -0.5654955 , 0.56048375, 0.07532763, -0.08601974, 0.5123064 , 0.24532431, 0.12437169...76, -0.46624237, 0.00592449, 0.02383994, 0.03438823, -0.69383144, 0.23814961, 0.1707845 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 63 / 64 (98.4%) E Max absolute difference among violations: 1.78916717 E Max relative difference among violations: 1.78916717 E ACTUAL: array([[ 1. , 0.453399, 0.580357, 0.348085, 0.023678, -0.141019, E -0.067528, -0.034235], E [ 0.453399, 1.270285, 0.137252, 0.928571, -0.335164, -0.051306,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ______________________ TestQRinsert_f.test_fat_p_row_fat _______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_fat_p_row_fat(self): # 7x12 + 3x12 = 10x12 --> stays fat > self.base_fat_p_row_xxx(3) scipy/linalg/tests/test_decomp_update.py:755: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:751: in base_fat_p_row_xxx check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 9.82286260e-02, 4.42208648e-01, -4.38665897e-01, -4.30537388e-02, 1.04965596e-02, -4.46968675e-02, ..., 1.45745426e-01, -5.98012567e-01, -1.80948496e-01, 2.45694920e-01, 2.64735878e-01]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 99 / 100 (99%) E Max absolute difference among violations: 1.87223816 E Max relative difference among violations: 1.87223816 E ACTUAL: array([[ 1. , 0.31158 , 0.501464, 0.251753, 0.132557, -0.06338 , E 0.012442, -0.003022, 0.046553, -0.10554 ], E [ 0.31158 , 0.966893, -0.005742, 0.700959, 0.011851, -0.368301,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ______________________ TestQRinsert_f.test_fat_p_row_sqr _______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_fat_p_row_sqr(self): # 7x12 + 5x12 = 12x12 --> becomes sqr > self.base_fat_p_row_xxx(5) scipy/linalg/tests/test_decomp_update.py:759: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:751: in base_fat_p_row_xxx check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 9.62664112e-02, 3.45670372e-01, -3.01305860e-01, 1.11911789e-01, 4.14381437e-02, -1.63144153e-02, ...8091e-01, -4.44236621e-02, 2.55971216e-02, 9.21135843e-02, -5.32819033e-02, 6.70755729e-02]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 142 / 144 (98.6%) E Max absolute difference among violations: 2.13082147 E Max relative difference among violations: 2.13082147 E ACTUAL: array([[ 1.000000e+00, 2.438784e-01, 4.953957e-01, 2.748781e-01, E -2.102900e-01, -3.035279e-02, 5.898500e-03, 2.279279e-06, E 4.819476e-02, -1.097520e-02, -3.296540e-02, 1.214940e-02],... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ______________________ TestQRinsert_f.test_fat_p_row_tall ______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_fat_p_row_tall(self): # 7x12 + 7x12 = 14x12 --> becomes tall > self.base_fat_p_row_xxx(7) scipy/linalg/tests/test_decomp_update.py:763: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:751: in base_fat_p_row_xxx check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 9.27717760e-02, 3.18872958e-01, -2.58792281e-01, -8.37501287e-02, 1.05502725e-01, -8.66920426e-02, ..., -1.90039262e-01, 2.82982677e-01, 4.06551547e-02, -2.32773647e-02, 1.09475672e-01]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 195 / 196 (99.5%) E Max absolute difference among violations: 0.81259078 E Max relative difference among violations: 0.58842206 E ACTUAL: array([[ 1. , 0.212549, 0.502821, 0.18422 , 0.182105, -0.10769 , E 0.026081, -0.037186, 0.086031, -0.050552, 0.036812, -0.051975, E 0.026247, 0.072361],... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRinsert_f.test_fat_1_col _________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_fat_1_col(self): a, q, r, u = self.generate('fat', which='col') for col in range(r.shape[1] + 1): q1, r1 = qr_insert(q, r, u, col, 'col', overwrite_qru=False) a1 = np.insert(a, col, u, 1) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:770: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.66762173, -0.19771484, 0.13158691, 0.08017986, -0.59732926, -0.01634439, 0.6627945 ], [-0... [-0.2629608 , -0.0913155 , 0.5417088 , -0.29647735, -0.03908505, -0.10850108, -0.5665678 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 49 / 49 (100%) E Max absolute difference among violations: 1.98867702 E Max relative difference among violations: 1.98867702 E ACTUAL: array([[ 2.988677, 0.795186, 0.284327, 0.454274, 0.490651, 0.242082, E -0.461116], E [ 0.795186, 1.093083, 0.366609, 0.881662, 0.104721, 0.178204,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRinsert_f.test_fat_p_col _________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_fat_p_col(self): # fat + cols --> fat always a, q, r, u = self.generate('fat', which='col', p=3) for col in range(r.shape[1] + 1): q1, r1 = qr_insert(q, r, u, col, 'col', overwrite_qru=False) a1 = np.insert(a, np.full(3, col, np.intp), u, 1) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:778: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.63550574, 0.49632162, -0.41457266, 0.34647742, -0.12474631, 0.0350772 , -0.5882245 ], [-0... [-0.366337 , 0.04489942, 0.04276865, 0.11942488, 0.485378 , 0.27686936, 0.5732144 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 49 / 49 (100%) E Max absolute difference among violations: 2.14948845 E Max relative difference among violations: 2.14948845 E ACTUAL: array([[ 3.149488, 0.214311, 0.380242, -0.593581, 0.441424, -0.465993, E 0.647325], E [ 0.214311, 1.252254, -0.146844, -0.263499, 0.14582 , -0.406825,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ______________________ TestQRinsert_f.test_economic_1_row ______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_economic_1_row(self): a, q, r, u = self.generate('tall', 'economic', 'row') for row in range(r.shape[0] + 1): q1, r1 = qr_insert(q, r, u, row, overwrite_qru=False) a1 = np.insert(a, row, u, 0) > check_qr(q1, r1, a1, self.rtol, self.atol, False) scipy/linalg/tests/test_decomp_update.py:785: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-1.01011604e-01, 3.69080395e-01, 3.71353865e-01, 4.31410909e-01, 7.11561367e-02, 3.10607821e-01, ..., 3.19043815e-01, -4.46561463e-02, -2.62499422e-01, 5.65769151e-03, 5.37475109e-01]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 35 / 49 (71.4%) E Max absolute difference among violations: 0.36279929 E Max relative difference among violations: 0.36279929 E ACTUAL: array([[ 1.000000e+00, -1.063983e-08, 5.285329e-09, 3.164400e-08, E -1.160019e-08, 1.075782e-08, -4.206351e-08], E [-1.063983e-08, 1.000000e+00, 4.591615e-02, 1.268310e-02,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ______________________ TestQRinsert_f.test_economic_p_row ______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_economic_p_row(self): # tall + rows --> tall always a, q, r, u = self.generate('tall', 'economic', 'row', 3) for row in range(r.shape[0] + 1): q1, r1 = qr_insert(q, r, u, row, overwrite_qru=False) a1 = np.insert(a, np.full(3, row, np.intp), u, 0) > check_qr(q1, r1, a1, self.rtol, self.atol, False) scipy/linalg/tests/test_decomp_update.py:793: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.09156428, -0.34359837, -0.30314764, -0.35027397, -0.18535185, -0.3997676 , -0.00307265], [ 0... [ 0.10361984, -0.00551815, -0.28413853, 0.08281597, 0.18291363, -0.09887903, -0.54712963]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 35 / 49 (71.4%) E Max absolute difference among violations: 0.37803966 E Max relative difference among violations: 0.37803966 E ACTUAL: array([[ 9.999999e-01, -6.544654e-09, 4.027396e-09, 6.404110e-09, E -1.857690e-08, -3.131798e-08, -6.097240e-08], E [-6.544654e-09, 9.999998e-01, 4.162273e-02, 7.974449e-03,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ______________________ TestQRinsert_f.test_economic_1_col ______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_economic_1_col(self): a, q, r, u = self.generate('tall', 'economic', which='col') for col in range(r.shape[1] + 1): q1, r1 = qr_insert(q, r, u.copy(), col, 'col', overwrite_qru=False) a1 = np.insert(a, col, u, 1) > check_qr(q1, r1, a1, self.rtol, self.atol, False) scipy/linalg/tests/test_decomp_update.py:800: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.06551243, -0.32538494, 0.6165906 , -0.05950067, 0.21926829, -0.00200099, 0.3530958 , 0.24025542...34, 0.17549056, -0.00158235, -0.3594578 , -0.0684569 , -0.21368313, -0.03704247, 0.57358766]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.34159762 E Max relative difference among violations: 0.34159762 E ACTUAL: array([[ 1.007862, -0.017113, 0.022369, -0.042683, 0.009894, -0.00594 , E -0.009544, 0.031688], E [-0.017113, 1.037251, -0.048691, 0.092909, -0.021535, 0.012931,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ____________________ TestQRinsert_f.test_economic_p_col_eco ____________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_economic_p_col_eco(self): # 12x7 + 12x3 = 12x10 --> stays eco > self.base_economic_p_col_xxx(3) scipy/linalg/tests/test_decomp_update.py:823: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:819: in base_economic_p_col_xxx check_qr(q1, r1, a1, self.rtol, self.atol, False) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.07578386, 0.41390043, 0.01923664, 0.25299394, 0.5514239 , 0.04375244, 0.3505421 , -0.55052733....3696534 , -0.06463973, -0.21163131, 0.15947942, 0.05054672, -0.02386867, -0.23241022]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 100 / 100 (100%) E Max absolute difference among violations: 0.33464742 E Max relative difference among violations: 0.33464742 E ACTUAL: array([[ 1.002092, 0.011246, -0.141254, -0.078902, -0.009248, -0.081922, E 0.031727, 0.128095, -0.077832, 0.031806], E [ 0.011246, 1.210646, -0.010943, -0.122275, -0.02766 , -0.128023,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ____________________ TestQRinsert_f.test_economic_p_col_sqr ____________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_economic_p_col_sqr(self): # 12x7 + 12x5 = 12x12 --> becomes sqr > self.base_economic_p_col_xxx(5) scipy/linalg/tests/test_decomp_update.py:827: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:819: in base_economic_p_col_xxx check_qr(q1, r1, a1, self.rtol, self.atol, False) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.12012934, -0.49831605, -0.34289306, -0.16268422, 0.19938958, 0.09494951, -0.5590236 , 0.00819416... 0.4609811 , 0.35600522, -0.10467038, -0.21665928, -0.17563382, -0.0780932 , 0.34601644]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 144 / 144 (100%) E Max absolute difference among violations: 0.63859135 E Max relative difference among violations: 0.25652891 E ACTUAL: array([[ 1.072548, 0.094393, 0.217187, 0.082002, -0.351464, -0.07111 , E -0.043131, 0.051992, 0.147308, 0.132206, -0.638591, -0.119118], E [ 0.094393, 1.048881, 0.36846 , -0.220524, -0.159824, -0.002107,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ____________________ TestQRinsert_f.test_economic_p_col_fat ____________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_economic_p_col_fat(self): # 12x7 + 12x7 = 12x14 --> becomes fat > self.base_economic_p_col_xxx(7) scipy/linalg/tests/test_decomp_update.py:831: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:819: in base_economic_p_col_xxx check_qr(q1, r1, a1, self.rtol, self.atol, False) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.12378646, -0.33144233, -0.00452932, -0.62187684, -0.05287169, 0.11484028, -0.11312262, -0.3774885 ... 0.63337076, 0.24421266, -0.32294118, -0.21063492, -0.07419264, -0.27672875, 0.27152002]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 144 / 144 (100%) E Max absolute difference among violations: 0.52156854 E Max relative difference among violations: 0.52156854 E ACTUAL: array([[ 1.033338e+00, -2.449279e-02, 1.080253e-01, 1.642744e-01, E 7.543694e-02, -2.619883e-01, 6.337129e-02, 9.705444e-02, E 1.171373e-01, -2.190964e-03, -8.329057e-02, 1.461342e-01],... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError __________________ TestQRinsert_f.test_non_unit_strides_1_row __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_unit_strides_1_row(self): > self.base_non_simple_strides(make_strided, 0, 1, 'row') scipy/linalg/tests/test_decomp_update.py:1006: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:975: in base_non_simple_strides check_qr(q1, r1, ai, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.1135952 , -0.44500527, 0.39401913, 0.3946652 , 0.33878452, -0.401867 , -0.26911116, -0.27005482....2021717 , 0.11099365, 0.05850238, -0.35630798, 0.7136941 , 0.2471318 , -0.39366376]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 63 / 81 (77.8%) E Max absolute difference among violations: 0.72401667 E Max relative difference among violations: 0.72401667 E ACTUAL: array([[ 9.999999e-01, 7.686160e-09, -1.435937e-08, -6.996192e-09, E 2.378585e-08, -3.035893e-09, 3.213603e-08, -6.730215e-09, E -1.153305e-08],... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError __________________ TestQRinsert_f.test_non_unit_strides_p_row __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_unit_strides_p_row(self): > self.base_non_simple_strides(make_strided, 0, 3, 'row') scipy/linalg/tests/test_decomp_update.py:1009: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:975: in base_non_simple_strides check_qr(q1, r1, ai, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.09559663, 0.40973 , 0.09273495, -0.11701024, -0.01064075, 0.5447078 , 0.06086876, 0.61177605...191287 , -0.01765817, -0.04987694, 0.24217178, -0.66842157, -0.46752933, -0.18228841]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 99 / 121 (81.8%) E Max absolute difference among violations: 0.66013843 E Max relative difference among violations: 0.36160505 E ACTUAL: array([[ 9.999996e-01, 9.649158e-08, 3.305073e-08, -4.325999e-08, E 4.538149e-08, 5.146523e-09, -3.538601e-08, -7.976871e-09, E 1.169297e-09, 3.598380e-08, 1.381775e-10],... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError __________________ TestQRinsert_f.test_non_unit_strides_1_col __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_unit_strides_1_col(self): > self.base_non_simple_strides(make_strided, 0, 1, 'col') scipy/linalg/tests/test_decomp_update.py:1012: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:975: in base_non_simple_strides check_qr(q1, r1, ai, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.10327542, 0.25801167, 0.9410847 , -0.2730402 , -0.2486015 , -0.2339887 , 0.03311411, -0.04928516...9 , -0.19846725, -0.12940702, -0.43081075, -0.2771651 , -0.23746143, -0.5953567 , -0.17541432]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.61626399 E Max relative difference among violations: 0.3833611 E ACTUAL: array([[ 1.052064, 0.088305, 0.059766, -0.05278 , -0.099685, -0.121396, E -0.014999, 0.003865], E [ 0.088305, 1.149774, 0.101368, -0.089519, -0.169076, -0.205899,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError __________________ TestQRinsert_f.test_non_unit_strides_p_col __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_unit_strides_p_col(self): > self.base_non_simple_strides(make_strided, 0, 3, 'col') scipy/linalg/tests/test_decomp_update.py:1015: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:975: in base_non_simple_strides check_qr(q1, r1, ai, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.00666839, -0.380012 , 0.6631341 , 0.32196206, 0.64931434, 0.02637718, -0.02590949, 0.21603242...87, 0.72825116, 0.49726722, -0.2975424 , 0.22813314, -0.0462536 , -0.08627897, 0.01588483]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.97517603 E Max relative difference among violations: 0.97517603 E ACTUAL: array([[ 1.141679, 0.052153, 0.285684, 0.165805, 0.07162 , -0.008002, E 0.004182, 0.104325], E [ 0.052153, 0.932698, 0.200856, 0.037478, 0.015709, -0.14353 ,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ____________________ TestQRinsert_f.test_neg_strides_1_row _____________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_neg_strides_1_row(self): > self.base_non_simple_strides(negate_strides, 0, 1, 'row') scipy/linalg/tests/test_decomp_update.py:1018: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:975: in base_non_simple_strides check_qr(q1, r1, ai, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.1135952 , -0.44500527, 0.39401913, 0.3946652 , 0.33878452, -0.401867 , -0.26911116, -0.27005482....2021717 , 0.11099365, 0.05850238, -0.35630798, 0.7136941 , 0.2471318 , -0.39366376]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 63 / 81 (77.8%) E Max absolute difference among violations: 0.72401667 E Max relative difference among violations: 0.72401667 E ACTUAL: array([[ 9.999999e-01, 7.686160e-09, -1.435937e-08, -6.996192e-09, E 2.378585e-08, -3.035893e-09, 3.213603e-08, -6.730215e-09, E -1.153305e-08],... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ____________________ TestQRinsert_f.test_neg_strides_p_row _____________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_neg_strides_p_row(self): > self.base_non_simple_strides(negate_strides, 0, 3, 'row') scipy/linalg/tests/test_decomp_update.py:1021: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:975: in base_non_simple_strides check_qr(q1, r1, ai, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.09559663, 0.40973 , 0.09273495, -0.11701024, -0.01064075, 0.5447078 , 0.06086876, 0.61177605...191287 , -0.01765817, -0.04987694, 0.24217178, -0.66842157, -0.46752933, -0.18228841]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 99 / 121 (81.8%) E Max absolute difference among violations: 0.66013843 E Max relative difference among violations: 0.36160505 E ACTUAL: array([[ 9.999996e-01, 9.649158e-08, 3.305073e-08, -4.325999e-08, E 4.538149e-08, 5.146523e-09, -3.538601e-08, -7.976871e-09, E 1.169297e-09, 3.598380e-08, 1.381775e-10],... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ____________________ TestQRinsert_f.test_neg_strides_1_col _____________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_neg_strides_1_col(self): > self.base_non_simple_strides(negate_strides, 0, 1, 'col') scipy/linalg/tests/test_decomp_update.py:1024: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:975: in base_non_simple_strides check_qr(q1, r1, ai, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.10327542, 0.25801167, 0.9410847 , -0.2730402 , -0.2486015 , -0.2339887 , 0.03311411, -0.04928516...9 , -0.19846725, -0.12940702, -0.43081075, -0.2771651 , -0.23746143, -0.5953567 , -0.17541432]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.61626399 E Max relative difference among violations: 0.3833611 E ACTUAL: array([[ 1.052064, 0.088305, 0.059766, -0.05278 , -0.099685, -0.121396, E -0.014999, 0.003865], E [ 0.088305, 1.149774, 0.101368, -0.089519, -0.169076, -0.205899,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ____________________ TestQRinsert_f.test_neg_strides_p_col _____________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_neg_strides_p_col(self): > self.base_non_simple_strides(negate_strides, 0, 3, 'col') scipy/linalg/tests/test_decomp_update.py:1027: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:975: in base_non_simple_strides check_qr(q1, r1, ai, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.00666839, -0.380012 , 0.6631341 , 0.32196206, 0.64931434, 0.02637718, -0.02590949, 0.21603242...87, 0.72825116, 0.49726722, -0.2975424 , 0.22813314, -0.0462536 , -0.08627897, 0.01588483]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.97517603 E Max relative difference among violations: 0.97517603 E ACTUAL: array([[ 1.141679, 0.052153, 0.285684, 0.165805, 0.07162 , -0.008002, E 0.004182, 0.104325], E [ 0.052153, 0.932698, 0.200856, 0.037478, 0.015709, -0.14353 ,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________ TestQRinsert_f.test_non_itemsize_strides_1_row ________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_itemsize_strides_1_row(self): > self.base_non_simple_strides(nonitemsize_strides, 0, 1, 'row') scipy/linalg/tests/test_decomp_update.py:1030: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:975: in base_non_simple_strides check_qr(q1, r1, ai, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.1135952 , -0.44500527, 0.39401913, 0.3946652 , 0.33878452, -0.401867 , -0.26911116, -0.27005482....2021717 , 0.11099365, 0.05850238, -0.35630798, 0.7136941 , 0.2471318 , -0.39366376]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 63 / 81 (77.8%) E Max absolute difference among violations: 0.72401667 E Max relative difference among violations: 0.72401667 E ACTUAL: array([[ 9.999999e-01, 7.686160e-09, -1.435937e-08, -6.996192e-09, E 2.378585e-08, -3.035893e-09, 3.213603e-08, -6.730215e-09, E -1.153305e-08],... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________ TestQRinsert_f.test_non_itemsize_strides_p_row ________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_itemsize_strides_p_row(self): > self.base_non_simple_strides(nonitemsize_strides, 0, 3, 'row') scipy/linalg/tests/test_decomp_update.py:1033: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:975: in base_non_simple_strides check_qr(q1, r1, ai, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.09559663, 0.40973 , 0.09273495, -0.11701024, -0.01064075, 0.5447078 , 0.06086876, 0.61177605...191287 , -0.01765817, -0.04987694, 0.24217178, -0.66842157, -0.46752933, -0.18228841]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 99 / 121 (81.8%) E Max absolute difference among violations: 0.66013843 E Max relative difference among violations: 0.36160505 E ACTUAL: array([[ 9.999996e-01, 9.649158e-08, 3.305073e-08, -4.325999e-08, E 4.538149e-08, 5.146523e-09, -3.538601e-08, -7.976871e-09, E 1.169297e-09, 3.598380e-08, 1.381775e-10],... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________ TestQRinsert_f.test_non_itemsize_strides_1_col ________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_itemsize_strides_1_col(self): > self.base_non_simple_strides(nonitemsize_strides, 0, 1, 'col') scipy/linalg/tests/test_decomp_update.py:1036: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:975: in base_non_simple_strides check_qr(q1, r1, ai, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.10327542, 0.25801167, 0.9410847 , -0.27304024, -0.24860153, -0.23398872, 0.03311414, -0.04928518...9 , -0.19846731, -0.12940703, -0.43081072, -0.27716509, -0.23746142, -0.5953567 , -0.1754143 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.61626399 E Max relative difference among violations: 0.38336104 E ACTUAL: array([[ 1.052064, 0.088305, 0.059766, -0.05278 , -0.099685, -0.121396, E -0.014999, 0.003866], E [ 0.088305, 1.149774, 0.101368, -0.089519, -0.169076, -0.205899,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________ TestQRinsert_f.test_non_itemsize_strides_p_col ________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_itemsize_strides_p_col(self): > self.base_non_simple_strides(nonitemsize_strides, 0, 3, 'col') scipy/linalg/tests/test_decomp_update.py:1039: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:975: in base_non_simple_strides check_qr(q1, r1, ai, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.00666839, -0.380012 , 0.6631341 , 0.32196206, 0.64931434, 0.02637718, -0.02590949, 0.21603242...87, 0.72825116, 0.49726722, -0.2975424 , 0.22813314, -0.0462536 , -0.08627897, 0.01588483]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.97517603 E Max relative difference among violations: 0.97517603 E ACTUAL: array([[ 1.141679, 0.052153, 0.285684, 0.165805, 0.07162 , -0.008002, E 0.004182, 0.104325], E [ 0.052153, 0.932698, 0.200856, 0.037478, 0.015709, -0.14353 ,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _______________ TestQRinsert_f.test_non_native_byte_order_1_row ________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_native_byte_order_1_row(self): > self.base_non_simple_strides(make_nonnative, 0, 1, 'row') scipy/linalg/tests/test_decomp_update.py:1042: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:975: in base_non_simple_strides check_qr(q1, r1, ai, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.1135952 , -0.44500527, 0.39401913, 0.3946652 , 0.33878452, -0.401867 , -0.26911116, -0.27005482....2021717 , 0.11099365, 0.05850238, -0.35630798, 0.7136941 , 0.2471318 , -0.39366376]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 63 / 81 (77.8%) E Max absolute difference among violations: 0.72401667 E Max relative difference among violations: 0.72401667 E ACTUAL: array([[ 9.999999e-01, 7.686160e-09, -1.435937e-08, -6.996192e-09, E 2.378585e-08, -3.035893e-09, 3.213603e-08, -6.730215e-09, E -1.153305e-08],... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _______________ TestQRinsert_f.test_non_native_byte_order_p_row ________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_native_byte_order_p_row(self): > self.base_non_simple_strides(make_nonnative, 0, 3, 'row') scipy/linalg/tests/test_decomp_update.py:1045: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:975: in base_non_simple_strides check_qr(q1, r1, ai, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.09559663, 0.40973 , 0.09273495, -0.11701024, -0.01064075, 0.5447078 , 0.06086876, 0.61177605...191287 , -0.01765817, -0.04987694, 0.24217178, -0.66842157, -0.46752933, -0.18228841]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 99 / 121 (81.8%) E Max absolute difference among violations: 0.66013843 E Max relative difference among violations: 0.36160505 E ACTUAL: array([[ 9.999996e-01, 9.649158e-08, 3.305073e-08, -4.325999e-08, E 4.538149e-08, 5.146523e-09, -3.538601e-08, -7.976871e-09, E 1.169297e-09, 3.598380e-08, 1.381775e-10],... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _______________ TestQRinsert_f.test_non_native_byte_order_1_col ________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_native_byte_order_1_col(self): > self.base_non_simple_strides(make_nonnative, 0, 1, 'col') scipy/linalg/tests/test_decomp_update.py:1048: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:975: in base_non_simple_strides check_qr(q1, r1, ai, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.10327542, 0.25801167, 0.9410847 , -0.2730402 , -0.2486015 , -0.2339887 , 0.03311411, -0.04928516...9 , -0.19846725, -0.12940702, -0.43081075, -0.2771651 , -0.23746143, -0.5953567 , -0.17541432]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.61626399 E Max relative difference among violations: 0.3833611 E ACTUAL: array([[ 1.052064, 0.088305, 0.059766, -0.05278 , -0.099685, -0.121396, E -0.014999, 0.003865], E [ 0.088305, 1.149774, 0.101368, -0.089519, -0.169076, -0.205899,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _______________ TestQRinsert_f.test_non_native_byte_order_p_col ________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_native_byte_order_p_col(self): > self.base_non_simple_strides(make_nonnative, 0, 3, 'col') scipy/linalg/tests/test_decomp_update.py:1051: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:975: in base_non_simple_strides check_qr(q1, r1, ai, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.00666839, -0.380012 , 0.6631341 , 0.32196206, 0.64931434, 0.02637718, -0.02590949, 0.21603242...87, 0.72825116, 0.49726722, -0.2975424 , 0.22813314, -0.0462536 , -0.08627897, 0.01588483]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.97517603 E Max relative difference among violations: 0.97517603 E ACTUAL: array([[ 1.141679, 0.052153, 0.285684, 0.165805, 0.07162 , -0.008002, E 0.004182, 0.104325], E [ 0.052153, 0.932698, 0.200856, 0.037478, 0.015709, -0.14353 ,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ___________________ TestQRinsert_f.test_overwrite_qu_rank_1 ____________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_overwrite_qu_rank_1(self): # when inserting rows, the size of both Q and R change, so only # column inserts can overwrite q. Only complex column inserts # with C ordered Q overwrite u. Any contiguous Q is overwritten # when inserting 1 column a, q0, r, u, = self.generate('sqr', which='col', p=1) q = q0.copy('C') u0 = u.copy() # don't overwrite q1, r1 = qr_insert(q, r, u, 0, 'col', overwrite_qru=False) a1 = np.insert(a, 0, u0, 1) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:1064: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.10327542, 0.25801167, 0.9410847 , -0.27304024, -0.24860153, -0.23398872, 0.03311414, -0.04928518...9 , -0.19846731, -0.12940703, -0.43081072, -0.27716509, -0.23746142, -0.5953567 , -0.1754143 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.61626399 E Max relative difference among violations: 0.38336104 E ACTUAL: array([[ 1.052064, 0.088305, 0.059766, -0.05278 , -0.099685, -0.121396, E -0.014999, 0.003866], E [ 0.088305, 1.149774, 0.101368, -0.089519, -0.169076, -0.205899,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ___________________ TestQRinsert_f.test_overwrite_qu_rank_p ____________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_overwrite_qu_rank_p(self): # when inserting rows, the size of both Q and R change, so only # column inserts can potentially overwrite Q. In practice, only # F ordered Q are overwritten with a rank p update. a, q0, r, u, = self.generate('sqr', which='col', p=3) q = q0.copy('F') a1 = np.insert(a, np.zeros(3, np.intp), u, 1) # don't overwrite q1, r1 = qr_insert(q, r, u, 0, 'col', overwrite_qru=False) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:1096: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.00666839, -0.380012 , 0.6631341 , 0.32196206, 0.64931434, 0.02637718, -0.02590949, 0.21603242...87, 0.72825116, 0.49726722, -0.2975424 , 0.22813314, -0.0462536 , -0.08627897, 0.01588483]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.97517603 E Max relative difference among violations: 0.97517603 E ACTUAL: array([[ 1.141679, 0.052153, 0.285684, 0.165805, 0.07162 , -0.008002, E 0.004182, 0.104325], E [ 0.052153, 0.932698, 0.200856, 0.037478, 0.015709, -0.14353 ,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRupdate_f.test_sqr_rank_1 ________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_sqr_rank_1(self): a, q, r, u, v = self.generate('sqr') q1, r1 = qr_update(q, r, u, v, False) a1 = a + np.outer(u, v.conj()) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:1203: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.235446 , -0.7472333 , -0.47104985, -0.09222251, 0.01516287, 0.32909536, -0.22041652, -0.39522612...85, -0.09492972, -0.2919113 , -0.1671437 , 0.10477744, -0.6621692 , 0.48179972, -0.3221929 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.71731421 E Max relative difference among violations: 0.71731421 E ACTUAL: array([[ 9.996892e-01, 8.775246e-04, 2.510063e-02, -5.614717e-03, E 5.922739e-03, -2.055545e-03, -1.468975e-03, 5.322317e-03], E [ 8.775246e-04, 1.017898e+00, 2.473123e-01, 4.329927e-02,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRupdate_f.test_sqr_rank_p ________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_sqr_rank_p(self): # test ndim = 2, rank 1 updates here too for p in [1, 2, 3, 5]: a, q, r, u, v = self.generate('sqr', p=p) if p == 1: u = u.reshape(u.size, 1) v = v.reshape(v.size, 1) q1, r1 = qr_update(q, r, u, v, False) a1 = a + np.dot(u, v.T.conj()) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:1214: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.235446 , -0.7472333 , -0.47104985, -0.09222251, 0.01516287, 0.32909536, -0.22041652, -0.39522612...85, -0.09492972, -0.2919113 , -0.1671437 , 0.10477744, -0.6621692 , 0.48179972, -0.3221929 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.71731421 E Max relative difference among violations: 0.71731421 E ACTUAL: array([[ 9.996892e-01, 8.775246e-04, 2.510063e-02, -5.614717e-03, E 5.922739e-03, -2.055545e-03, -1.468975e-03, 5.322317e-03], E [ 8.775246e-04, 1.017898e+00, 2.473123e-01, 4.329927e-02,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _______________________ TestQRupdate_f.test_tall_rank_1 ________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_tall_rank_1(self): a, q, r, u, v = self.generate('tall') q1, r1 = qr_update(q, r, u, v, False) a1 = a + np.outer(u, v.conj()) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:1220: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.3351599 , 0.4905965 , 0.0941866 , -0.21442172, -0.0099242 , 0.05948289, 0.31971866, 0.23468748... 0.08516375, 0.50919324, -0.12379064, 0.03804135, 0.30755574, 0.5582295 , 0.10825184]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 144 / 144 (100%) E Max absolute difference among violations: 0.49904123 E Max relative difference among violations: 0.30451721 E ACTUAL: array([[ 1.109735e+00, 6.502759e-02, -6.778850e-02, 2.341995e-02, E 8.668511e-02, 1.612506e-01, -1.853554e-01, -2.151809e-01, E 1.364252e-01, 7.199360e-04, -2.790941e-02, -1.063429e-01],... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _______________________ TestQRupdate_f.test_tall_rank_p ________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_tall_rank_p(self): for p in [1, 2, 3, 5]: a, q, r, u, v = self.generate('tall', p=p) if p == 1: u = u.reshape(u.size, 1) v = v.reshape(v.size, 1) q1, r1 = qr_update(q, r, u, v, False) a1 = a + np.dot(u, v.T.conj()) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:1230: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.3351599 , 0.4905965 , 0.0941866 , -0.21442172, -0.0099242 , 0.05948289, 0.31971866, 0.23468748... 0.08516375, 0.50919324, -0.12379064, 0.03804135, 0.30755574, 0.5582295 , 0.10825184]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 144 / 144 (100%) E Max absolute difference among violations: 0.49904123 E Max relative difference among violations: 0.30451721 E ACTUAL: array([[ 1.109735e+00, 6.502759e-02, -6.778850e-02, 2.341995e-02, E 8.668511e-02, 1.612506e-01, -1.853554e-01, -2.151809e-01, E 1.364252e-01, 7.199360e-04, -2.790941e-02, -1.063429e-01],... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRupdate_f.test_fat_rank_1 ________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_fat_rank_1(self): a, q, r, u, v = self.generate('fat') q1, r1 = qr_update(q, r, u, v, False) a1 = a + np.outer(u, v.conj()) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:1236: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.51834255, -0.40771556, -0.05749685, -0.53943616, 0.21343362, 0.6708396 , 0.2830759 ], [-0... [-0.19094819, -0.48117682, 0.37253866, 0.14303124, -0.01909361, -0.21073706, -0.56667745]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 49 / 49 (100%) E Max absolute difference among violations: 1.27798033 E Max relative difference among violations: 1.27798033 E ACTUAL: array([[ 1.869089, 0.647646, 0.153266, 0.81189 , 0.260279, -0.253176, E -0.107186], E [ 0.647646, 1.00227 , -0.348898, 0.789099, 0.362132, -0.265226,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ________________________ TestQRupdate_f.test_fat_rank_p ________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_fat_rank_p(self): for p in [1, 2, 3, 5]: a, q, r, u, v = self.generate('fat', p=p) if p == 1: u = u.reshape(u.size, 1) v = v.reshape(v.size, 1) q1, r1 = qr_update(q, r, u, v, False) a1 = a + np.dot(u, v.T.conj()) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:1246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.51834255, -0.40771556, -0.05749685, -0.53943616, 0.21343362, 0.6708396 , 0.2830759 ], [-0... [-0.19094819, -0.48117682, 0.37253866, 0.14303124, -0.01909361, -0.21073706, -0.56667745]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 49 / 49 (100%) E Max absolute difference among violations: 1.27798033 E Max relative difference among violations: 1.27798033 E ACTUAL: array([[ 1.869089, 0.647646, 0.153266, 0.81189 , 0.260279, -0.253176, E -0.107186], E [ 0.647646, 1.00227 , -0.348898, 0.789099, 0.362132, -0.265226,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _____________________ TestQRupdate_f.test_economic_rank_1 ______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_economic_rank_1(self): a, q, r, u, v = self.generate('tall', 'economic') q1, r1 = qr_update(q, r, u, v, False) a1 = a + np.outer(u, v.conj()) > check_qr(q1, r1, a1, self.rtol, self.atol, False) scipy/linalg/tests/test_decomp_update.py:1252: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.29180977, 0.54031974, 0.13198516, -0.1590436 , 0.02636115, 0.09330878, 0.3111623 ], [-0... [-0.19966167, -0.08521093, 0.30892152, 0.02844676, -0.23190486, 0.11021613, 0.54404 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 49 / 49 (100%) E Max absolute difference among violations: 0.28033626 E Max relative difference among violations: 0.28033626 E ACTUAL: array([[ 1.041459, 0.020443, -0.066749, -0.003876, 0.017476, 0.077828, E -0.073119], E [ 0.020443, 0.994427, -0.023674, 0.017134, 0.077575, -0.014978,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _____________________ TestQRupdate_f.test_economic_rank_p ______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_economic_rank_p(self): for p in [1, 2, 3, 5]: a, q, r, u, v = self.generate('tall', 'economic', p) if p == 1: u = u.reshape(u.size, 1) v = v.reshape(v.size, 1) q1, r1 = qr_update(q, r, u, v, False) a1 = a + np.dot(u, v.T.conj()) > check_qr(q1, r1, a1, self.rtol, self.atol, False) scipy/linalg/tests/test_decomp_update.py:1262: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.29180977, 0.54031974, 0.13198516, -0.1590436 , 0.02636115, 0.09330878, 0.3111623 ], [-0... [-0.19966167, -0.08521093, 0.30892152, 0.02844676, -0.23190486, 0.11021613, 0.54404 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 49 / 49 (100%) E Max absolute difference among violations: 0.28033626 E Max relative difference among violations: 0.28033626 E ACTUAL: array([[ 1.041459, 0.020443, -0.066749, -0.003876, 0.017476, 0.077828, E -0.073119], E [ 0.020443, 0.994427, -0.023674, 0.017134, 0.077575, -0.014978,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _________________ TestQRupdate_f.test_non_unit_strides_rank_1 __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_unit_strides_rank_1(self): > self.base_non_simple_strides(make_strided, 'full', 1, True) scipy/linalg/tests/test_decomp_update.py:1413: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:1355: in base_non_simple_strides check_qr(q1, r1, aup, self.rtol, self.atol, assert_sqr) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.235446 , -0.7472333 , -0.47104985, -0.09222255, 0.01516291, 0.32909918, -0.22041434, -0.39522415...85, -0.09492974, -0.2919113 , -0.16714373, 0.10477749, -0.662161 , 0.48180866, -0.3221963 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.71731415 E Max relative difference among violations: 0.71731415 E ACTUAL: array([[ 9.996893e-01, 8.775186e-04, 2.510061e-02, -5.614714e-03, E 5.922723e-03, -2.055594e-03, -1.468993e-03, 5.322267e-03], E [ 8.775186e-04, 1.017898e+00, 2.473123e-01, 4.329928e-02,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _____________ TestQRupdate_f.test_non_unit_strides_economic_rank_1 _____________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_unit_strides_economic_rank_1(self): > self.base_non_simple_strides(make_strided, 'economic', 1, True) scipy/linalg/tests/test_decomp_update.py:1416: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:1355: in base_non_simple_strides check_qr(q1, r1, aup, self.rtol, self.atol, assert_sqr) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.235446 , -0.7472333 , -0.47104985, -0.09222255, 0.01516291, 0.32909918, -0.22041434, -0.39522415...85, -0.09492974, -0.2919113 , -0.16714373, 0.10477749, -0.662161 , 0.48180866, -0.3221963 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.71731415 E Max relative difference among violations: 0.71731415 E ACTUAL: array([[ 9.996893e-01, 8.775186e-04, 2.510061e-02, -5.614714e-03, E 5.922723e-03, -2.055594e-03, -1.468993e-03, 5.322267e-03], E [ 8.775186e-04, 1.017898e+00, 2.473123e-01, 4.329928e-02,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _________________ TestQRupdate_f.test_non_unit_strides_rank_p __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_unit_strides_rank_p(self): > self.base_non_simple_strides(make_strided, 'full', 3, False) scipy/linalg/tests/test_decomp_update.py:1419: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:1355: in base_non_simple_strides check_qr(q1, r1, aup, self.rtol, self.atol, assert_sqr) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.30720037, 0.19104503, -0.1193153 , 0.99096185, -0.13845782, 0.05411208, -0.07869459, 0.04585595...8 , 0.16748545, -0.00109003, -0.1978583 , -0.62627685, -0.00758024, -0.5222621 , 0.33573395]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.98527836 E Max relative difference among violations: 0.98527836 E ACTUAL: array([[ 1.003452, -0.009762, 0.001856, 0.032934, -0.0221 , -0.002921, E -0.016563, 0.043321], E [-0.009762, 1.101462, -0.037299, -0.257264, 0.106627, -0.005761,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _____________ TestQRupdate_f.test_non_unit_strides_economic_rank_p _____________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_unit_strides_economic_rank_p(self): > self.base_non_simple_strides(make_strided, 'economic', 3, False) scipy/linalg/tests/test_decomp_update.py:1422: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:1355: in base_non_simple_strides check_qr(q1, r1, aup, self.rtol, self.atol, assert_sqr) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.30720037, 0.19104503, -0.1193153 , 0.99096185, -0.13845782, 0.05411208, -0.07869459, 0.04585595...8 , 0.16748545, -0.00109003, -0.1978583 , -0.62627685, -0.00758024, -0.5222621 , 0.33573395]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.98527836 E Max relative difference among violations: 0.98527836 E ACTUAL: array([[ 1.003452, -0.009762, 0.001856, 0.032934, -0.0221 , -0.002921, E -0.016563, 0.043321], E [-0.009762, 1.101462, -0.037299, -0.257264, 0.106627, -0.005761,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ____________________ TestQRupdate_f.test_neg_strides_rank_1 ____________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_neg_strides_rank_1(self): > self.base_non_simple_strides(negate_strides, 'full', 1, False) scipy/linalg/tests/test_decomp_update.py:1425: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:1355: in base_non_simple_strides check_qr(q1, r1, aup, self.rtol, self.atol, assert_sqr) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.235446 , -0.7472333 , -0.47104985, -0.09222251, 0.01516287, 0.32909536, -0.22041652, -0.39522612...85, -0.09492972, -0.2919113 , -0.1671437 , 0.10477744, -0.6621692 , 0.48179972, -0.3221929 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.71731421 E Max relative difference among violations: 0.71731421 E ACTUAL: array([[ 9.996892e-01, 8.775246e-04, 2.510063e-02, -5.614717e-03, E 5.922739e-03, -2.055545e-03, -1.468975e-03, 5.322317e-03], E [ 8.775246e-04, 1.017898e+00, 2.473123e-01, 4.329927e-02,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _______________ TestQRupdate_f.test_neg_strides_economic_rank_1 ________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_neg_strides_economic_rank_1(self): > self.base_non_simple_strides(negate_strides, 'economic', 1, False) scipy/linalg/tests/test_decomp_update.py:1428: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:1355: in base_non_simple_strides check_qr(q1, r1, aup, self.rtol, self.atol, assert_sqr) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.235446 , -0.7472333 , -0.47104985, -0.09222251, 0.01516287, 0.32909536, -0.22041652, -0.39522612...85, -0.09492972, -0.2919113 , -0.1671437 , 0.10477744, -0.6621692 , 0.48179972, -0.3221929 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.71731421 E Max relative difference among violations: 0.71731421 E ACTUAL: array([[ 9.996892e-01, 8.775246e-04, 2.510063e-02, -5.614717e-03, E 5.922739e-03, -2.055545e-03, -1.468975e-03, 5.322317e-03], E [ 8.775246e-04, 1.017898e+00, 2.473123e-01, 4.329927e-02,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ____________________ TestQRupdate_f.test_neg_strides_rank_p ____________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_neg_strides_rank_p(self): > self.base_non_simple_strides(negate_strides, 'full', 3, False) scipy/linalg/tests/test_decomp_update.py:1431: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:1355: in base_non_simple_strides check_qr(q1, r1, aup, self.rtol, self.atol, assert_sqr) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.30720037, 0.19104503, -0.1193153 , 0.99096185, -0.13845782, 0.05411208, -0.07869459, 0.04585595...8 , 0.16748545, -0.00109003, -0.1978583 , -0.62627685, -0.00758024, -0.5222621 , 0.33573395]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.98527836 E Max relative difference among violations: 0.98527836 E ACTUAL: array([[ 1.003452, -0.009762, 0.001856, 0.032934, -0.0221 , -0.002921, E -0.016563, 0.043321], E [-0.009762, 1.101462, -0.037299, -0.257264, 0.106627, -0.005761,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _______________ TestQRupdate_f.test_neg_strides_economic_rank_p ________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_neg_strides_economic_rank_p(self): > self.base_non_simple_strides(negate_strides, 'economic', 3, False) scipy/linalg/tests/test_decomp_update.py:1434: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:1355: in base_non_simple_strides check_qr(q1, r1, aup, self.rtol, self.atol, assert_sqr) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.30720037, 0.19104503, -0.1193153 , 0.99096185, -0.13845782, 0.05411208, -0.07869459, 0.04585595...8 , 0.16748545, -0.00109003, -0.1978583 , -0.62627685, -0.00758024, -0.5222621 , 0.33573395]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.98527836 E Max relative difference among violations: 0.98527836 E ACTUAL: array([[ 1.003452, -0.009762, 0.001856, 0.032934, -0.0221 , -0.002921, E -0.016563, 0.043321], E [-0.009762, 1.101462, -0.037299, -0.257264, 0.106627, -0.005761,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _______________ TestQRupdate_f.test_non_itemsize_strides_rank_1 ________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_itemsize_strides_rank_1(self): > self.base_non_simple_strides(nonitemsize_strides, 'full', 1, False) scipy/linalg/tests/test_decomp_update.py:1437: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:1355: in base_non_simple_strides check_qr(q1, r1, aup, self.rtol, self.atol, assert_sqr) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.235446 , -0.7472333 , -0.47104985, -0.09222255, 0.01516291, 0.32909918, -0.22041434, -0.39522415...85, -0.09492974, -0.2919113 , -0.16714373, 0.10477749, -0.662161 , 0.48180866, -0.3221963 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.71731415 E Max relative difference among violations: 0.71731415 E ACTUAL: array([[ 9.996893e-01, 8.775186e-04, 2.510061e-02, -5.614714e-03, E 5.922723e-03, -2.055594e-03, -1.468993e-03, 5.322267e-03], E [ 8.775186e-04, 1.017898e+00, 2.473123e-01, 4.329928e-02,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ___________ TestQRupdate_f.test_non_itemsize_strides_economic_rank_1 ___________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_itemsize_strides_economic_rank_1(self): > self.base_non_simple_strides(nonitemsize_strides, 'economic', 1, False) scipy/linalg/tests/test_decomp_update.py:1440: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:1355: in base_non_simple_strides check_qr(q1, r1, aup, self.rtol, self.atol, assert_sqr) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.235446 , -0.7472333 , -0.47104985, -0.09222255, 0.01516291, 0.32909918, -0.22041434, -0.39522415...85, -0.09492974, -0.2919113 , -0.16714373, 0.10477749, -0.662161 , 0.48180866, -0.3221963 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.71731415 E Max relative difference among violations: 0.71731415 E ACTUAL: array([[ 9.996893e-01, 8.775186e-04, 2.510061e-02, -5.614714e-03, E 5.922723e-03, -2.055594e-03, -1.468993e-03, 5.322267e-03], E [ 8.775186e-04, 1.017898e+00, 2.473123e-01, 4.329928e-02,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _______________ TestQRupdate_f.test_non_itemsize_strides_rank_p ________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_itemsize_strides_rank_p(self): > self.base_non_simple_strides(nonitemsize_strides, 'full', 3, False) scipy/linalg/tests/test_decomp_update.py:1443: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:1355: in base_non_simple_strides check_qr(q1, r1, aup, self.rtol, self.atol, assert_sqr) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.30720037, 0.19104503, -0.1193153 , 0.99096185, -0.13845782, 0.05411208, -0.07869459, 0.04585595...8 , 0.16748545, -0.00109003, -0.1978583 , -0.62627685, -0.00758024, -0.5222621 , 0.33573395]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.98527836 E Max relative difference among violations: 0.98527836 E ACTUAL: array([[ 1.003452, -0.009762, 0.001856, 0.032934, -0.0221 , -0.002921, E -0.016563, 0.043321], E [-0.009762, 1.101462, -0.037299, -0.257264, 0.106627, -0.005761,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ___________ TestQRupdate_f.test_non_itemsize_strides_economic_rank_p ___________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_itemsize_strides_economic_rank_p(self): > self.base_non_simple_strides(nonitemsize_strides, 'economic', 3, False) scipy/linalg/tests/test_decomp_update.py:1446: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:1355: in base_non_simple_strides check_qr(q1, r1, aup, self.rtol, self.atol, assert_sqr) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.30720037, 0.19104503, -0.1193153 , 0.99096185, -0.13845782, 0.05411208, -0.07869459, 0.04585595...8 , 0.16748545, -0.00109003, -0.1978583 , -0.62627685, -0.00758024, -0.5222621 , 0.33573395]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.98527836 E Max relative difference among violations: 0.98527836 E ACTUAL: array([[ 1.003452, -0.009762, 0.001856, 0.032934, -0.0221 , -0.002921, E -0.016563, 0.043321], E [-0.009762, 1.101462, -0.037299, -0.257264, 0.106627, -0.005761,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _______________ TestQRupdate_f.test_non_native_byte_order_rank_1 _______________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_native_byte_order_rank_1(self): > self.base_non_simple_strides(make_nonnative, 'full', 1, False) scipy/linalg/tests/test_decomp_update.py:1449: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:1355: in base_non_simple_strides check_qr(q1, r1, aup, self.rtol, self.atol, assert_sqr) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.235446 , -0.7472333 , -0.47104985, -0.09222251, 0.01516287, 0.32909536, -0.22041652, -0.39522612...85, -0.09492972, -0.2919113 , -0.1671437 , 0.10477744, -0.6621692 , 0.48179972, -0.3221929 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.71731421 E Max relative difference among violations: 0.71731421 E ACTUAL: array([[ 9.996892e-01, 8.775246e-04, 2.510063e-02, -5.614717e-03, E 5.922739e-03, -2.055545e-03, -1.468975e-03, 5.322317e-03], E [ 8.775246e-04, 1.017898e+00, 2.473123e-01, 4.329927e-02,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError __________ TestQRupdate_f.test_non_native_byte_order_economic_rank_1 ___________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_native_byte_order_economic_rank_1(self): > self.base_non_simple_strides(make_nonnative, 'economic', 1, False) scipy/linalg/tests/test_decomp_update.py:1452: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:1355: in base_non_simple_strides check_qr(q1, r1, aup, self.rtol, self.atol, assert_sqr) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.235446 , -0.7472333 , -0.47104985, -0.09222251, 0.01516287, 0.32909536, -0.22041652, -0.39522612...85, -0.09492972, -0.2919113 , -0.1671437 , 0.10477744, -0.6621692 , 0.48179972, -0.3221929 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.71731421 E Max relative difference among violations: 0.71731421 E ACTUAL: array([[ 9.996892e-01, 8.775246e-04, 2.510063e-02, -5.614717e-03, E 5.922739e-03, -2.055545e-03, -1.468975e-03, 5.322317e-03], E [ 8.775246e-04, 1.017898e+00, 2.473123e-01, 4.329927e-02,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError _______________ TestQRupdate_f.test_non_native_byte_order_rank_p _______________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_native_byte_order_rank_p(self): > self.base_non_simple_strides(make_nonnative, 'full', 3, False) scipy/linalg/tests/test_decomp_update.py:1455: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:1355: in base_non_simple_strides check_qr(q1, r1, aup, self.rtol, self.atol, assert_sqr) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.30720037, 0.19104503, -0.1193153 , 0.99096185, -0.13845782, 0.05411208, -0.07869459, 0.04585595...8 , 0.16748545, -0.00109003, -0.1978583 , -0.62627685, -0.00758024, -0.5222621 , 0.33573395]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.98527836 E Max relative difference among violations: 0.98527836 E ACTUAL: array([[ 1.003452, -0.009762, 0.001856, 0.032934, -0.0221 , -0.002921, E -0.016563, 0.043321], E [-0.009762, 1.101462, -0.037299, -0.257264, 0.106627, -0.005761,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError __________ TestQRupdate_f.test_non_native_byte_order_economic_rank_p ___________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_non_native_byte_order_economic_rank_p(self): > self.base_non_simple_strides(make_nonnative, 'economic', 3, False) scipy/linalg/tests/test_decomp_update.py:1458: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:1355: in base_non_simple_strides check_qr(q1, r1, aup, self.rtol, self.atol, assert_sqr) scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.30720037, 0.19104503, -0.1193153 , 0.99096185, -0.13845782, 0.05411208, -0.07869459, 0.04585595...8 , 0.16748545, -0.00109003, -0.1978583 , -0.62627685, -0.00758024, -0.5222621 , 0.33573395]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.98527836 E Max relative difference among violations: 0.98527836 E ACTUAL: array([[ 1.003452, -0.009762, 0.001856, 0.032934, -0.0221 , -0.002921, E -0.016563, 0.043321], E [-0.009762, 1.101462, -0.037299, -0.257264, 0.106627, -0.005761,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError __________________ TestQRupdate_f.test_overwrite_qruv_rank_1 ___________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_overwrite_qruv_rank_1(self): # Any positive strided q, r, u, and v can be overwritten for a rank 1 # update, only checking C and F contiguous. a, q0, r0, u0, v0 = self.generate('sqr') a1 = a + np.outer(u0, v0.conj()) q = q0.copy('F') r = r0.copy('F') u = u0.copy('F') v = v0.copy('F') # don't overwrite q1, r1 = qr_update(q, r, u, v, False) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:1472: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.235446 , -0.7472333 , -0.47104985, -0.09222251, 0.01516287, 0.32909536, -0.22041652, -0.39522612...85, -0.09492972, -0.2919113 , -0.1671437 , 0.10477744, -0.6621692 , 0.48179972, -0.3221929 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.71731421 E Max relative difference among violations: 0.71731421 E ACTUAL: array([[ 9.996892e-01, 8.775246e-04, 2.510063e-02, -5.614717e-03, E 5.922739e-03, -2.055545e-03, -1.468975e-03, 5.322317e-03], E [ 8.775246e-04, 1.017898e+00, 2.473123e-01, 4.329927e-02,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError ______________ TestQRupdate_f.test_overwrite_qruv_rank_1_economic ______________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_overwrite_qruv_rank_1_economic(self): # updating economic decompositions can overwrite any contiguous r, # and positively strided r and u. V is only ever read. # only checking C and F contiguous. a, q0, r0, u0, v0 = self.generate('tall', 'economic') a1 = a + np.outer(u0, v0.conj()) q = q0.copy('F') r = r0.copy('F') u = u0.copy('F') v = v0.copy('F') # don't overwrite q1, r1 = qr_update(q, r, u, v, False) > check_qr(q1, r1, a1, self.rtol, self.atol, False) scipy/linalg/tests/test_decomp_update.py:1503: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[-0.29180977, 0.54031974, 0.13198516, -0.1590436 , 0.02636115, 0.09330878, 0.3111623 ], [-0... [-0.19966167, -0.08521093, 0.30892152, 0.02844676, -0.23190486, 0.11021613, 0.54404 ]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = False def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 49 / 49 (100%) E Max absolute difference among violations: 0.28033626 E Max relative difference among violations: 0.28033626 E ACTUAL: array([[ 1.041459, 0.020443, -0.066749, -0.003876, 0.017476, 0.077828, E -0.073119], E [ 0.020443, 0.994427, -0.023674, 0.017134, 0.077575, -0.014978,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError __________________ TestQRupdate_f.test_overwrite_qruv_rank_p ___________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_overwrite_qruv_rank_p(self): # for rank p updates, q r must be F contiguous, v must be C (v.T --> F) # and u can be C or F, but is only overwritten if Q is C and complex a, q0, r0, u0, v0 = self.generate('sqr', p=3) a1 = a + np.dot(u0, v0.T.conj()) q = q0.copy('F') r = r0.copy('F') u = u0.copy('F') v = v0.copy('C') # don't overwrite q1, r1 = qr_update(q, r, u, v, False) > check_qr(q1, r1, a1, self.rtol, self.atol) scipy/linalg/tests/test_decomp_update.py:1533: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/linalg/tests/test_decomp_update.py:30: in check_qr assert_unitary(q, rtol, atol, assert_sqr) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 0.30720037, 0.19104503, -0.1193153 , 0.99096185, -0.13845782, 0.05411208, -0.07869459, 0.04585595...8 , 0.16748545, -0.00109003, -0.1978583 , -0.62627685, -0.00758024, -0.5222621 , 0.33573395]], dtype=float32) rtol = 0.0001, atol = np.float32(1.1920929e-06), assert_sqr = True def assert_unitary(a, rtol=None, atol=None, assert_sqr=True): if rtol is None: rtol = 10.0 ** -(np.finfo(a.dtype).precision-2) if atol is None: atol = 10*np.finfo(a.dtype).eps if assert_sqr: assert_(a.shape[0] == a.shape[1], 'unitary matrices must be square') aTa = np.dot(a.T.conj(), a) > assert_allclose(aTa, np.eye(a.shape[1]), rtol=rtol, atol=atol) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=1.19209e-06 E E Mismatched elements: 64 / 64 (100%) E Max absolute difference among violations: 0.98527836 E Max relative difference among violations: 0.98527836 E ACTUAL: array([[ 1.003452, -0.009762, 0.001856, 0.032934, -0.0221 , -0.002921, E -0.016563, 0.043321], E [-0.009762, 1.101462, -0.037299, -0.257264, 0.106627, -0.005761,... E DESIRED: array([[1., 0., 0., 0., 0., 0., 0., 0.], E [0., 1., 0., 0., 0., 0., 0., 0.], E [0., 0., 1., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_decomp_update.py:19: AssertionError __________________________________ test_sygst __________________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 def test_sygst(): seed(1234) for ind, dtype in enumerate(REAL_DTYPES): # DTYPES = sygst n = 10 potrf, sygst, syevd, sygvd = get_lapack_funcs(('potrf', 'sygst', 'syevd', 'sygvd'), dtype=dtype) A = rand(n, n).astype(dtype) A = (A + A.T)/2 # B must be positive definite B = rand(n, n).astype(dtype) B = (B + B.T)/2 + 2 * np.eye(n, dtype=dtype) # Perform eig (sygvd) eig_gvd, _, info = sygvd(A, B) assert_(info == 0) # Convert to std problem potrf b, info = potrf(B) assert_(info == 0) a, info = sygst(A, b) assert_(info == 0) eig, _, info = syevd(a) assert_(info == 0) > assert_allclose(eig, eig_gvd, rtol=1.2e-4) E AssertionError: E Not equal to tolerance rtol=0.00012, atol=0 E E Mismatched elements: 10 / 10 (100%) E Max absolute difference among violations: 0.3436904 E Max relative difference among violations: 0.42114577 E ACTUAL: array([-0.464165, -0.431457, -0.256438, -0.179315, -0.001689, 0.130162, E 0.222885, 0.363867, 0.487346, 1.159775], dtype=float32) E DESIRED: array([-0.492723, -0.430307, -0.268378, -0.172003, -0.001805, 0.157856, E 0.216959, 0.288146, 0.508969, 0.816084], dtype=float32) scipy/linalg/tests/test_lapack.py:1085: AssertionError _______________________________ test_ormrz_unmrz _______________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 def test_ormrz_unmrz(): """ This test performs a matrix multiplication with an arbitrary m x n matrix C and a unitary matrix Q without explicitly forming the array. The array data is encoded in the rectangular part of A which is obtained from ?TZRZF. Q size is inferred by m, n, side keywords. """ rng = np.random.RandomState(1234) qm, qn, cn = 10, 15, 15 for ind, dtype in enumerate(DTYPES): tzrzf, tzrzf_lw = get_lapack_funcs(('tzrzf', 'tzrzf_lwork'), dtype=dtype) lwork_rz = _compute_lwork(tzrzf_lw, qm, qn) if ind < 2: A = triu(rng.rand(qm, qn).astype(dtype)) C = rng.rand(cn, cn).astype(dtype) orun_mrz, orun_mrz_lw = get_lapack_funcs(('ormrz', 'ormrz_lwork'), dtype=dtype) else: A = triu((rng.rand(qm, qn) + rng.rand(qm, qn)*1j).astype(dtype)) C = (rng.rand(cn, cn) + rand(cn, cn)*1j).astype(dtype) orun_mrz, orun_mrz_lw = get_lapack_funcs(('unmrz', 'unmrz_lwork'), dtype=dtype) lwork_mrz = _compute_lwork(orun_mrz_lw, cn, cn) rz, tau, info = tzrzf(A, lwork=lwork_rz) # Get Q manually for comparison V = np.hstack((np.eye(qm, dtype=dtype), rz[:, qm:])) Id = np.eye(qn, dtype=dtype) ref = [Id-tau[x]*V[[x], :].T.dot(V[[x], :].conj()) for x in range(qm)] Q = reduce(np.dot, ref) # Now that we have Q, we can test whether lapack results agree with # each case of CQ, CQ^H, QC, and QC^H trans = 'T' if ind < 2 else 'C' tol = 10*np.spacing(dtype(1.0).real) cq, info = orun_mrz(rz, tau, C, lwork=lwork_mrz) assert_(info == 0) > assert_allclose(cq - Q.dot(C), zeros_like(C), atol=tol, rtol=0.) E AssertionError: E Not equal to tolerance rtol=0, atol=1.19209e-06 E E Mismatched elements: 135 / 225 (60%) E Max absolute difference among violations: 2.4379804 E Max relative difference among violations: inf E ACTUAL: array([[ 4.734925e-01, -1.154251e+00, 0.000000e+00, 3.647794e-01, E 4.599952e-01, 3.373585e-01, -5.960464e-08, -1.315878e-01, E 4.073185e-01, -4.596658e-01, 1.192093e-07, 1.845680e-01,... E DESIRED: array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], E [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],... scipy/linalg/tests/test_lapack.py:1235: AssertionError __________________________________ test_pftrf __________________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 def test_pftrf(): """ Test Cholesky factorization of a positive definite Rectangular Full Packed (RFP) format array """ rng = np.random.RandomState(1234) for ind, dtype in enumerate(DTYPES): n = 20 if ind > 1: A = (rng.rand(n, n) + rng.rand(n, n)*1j).astype(dtype) A = A + A.conj().T + n*eye(n) else: A = (rng.rand(n, n)).astype(dtype) A = A + A.T + n*eye(n) pftrf, trttf, tfttr = get_lapack_funcs(('pftrf', 'trttf', 'tfttr'), dtype=dtype) # Get the original array from TP Afp, info = trttf(A) Achol_rfp, info = pftrf(n, Afp) assert_(info == 0) A_chol_r, _ = tfttr(n, Achol_rfp) Achol = cholesky(A) > assert_array_almost_equal(A_chol_r, Achol) E AssertionError: E Arrays are not almost equal to 6 decimals E E Mismatched elements: 19 / 400 (4.75%) E Max absolute difference among violations: 0.02787516 E Max relative difference among violations: 0.33682547 E ACTUAL: array([[ 4.514758e+00, 2.186152e-01, 1.102023e-01, 2.371355e-01, E 2.695314e-01, 2.302912e-01, 2.221875e-01, 1.796820e-01, E 2.569119e-01, 3.319578e-01, 2.961080e-01, 1.936801e-01,... E DESIRED: array([[ 4.514758e+00, 2.186152e-01, 1.102024e-01, 2.371355e-01, E 2.695314e-01, 2.302912e-01, 2.221875e-01, 1.796820e-01, E 2.569119e-01, 3.319578e-01, 2.961080e-01, 1.936801e-01,... scipy/linalg/tests/test_lapack.py:1375: AssertionError __________________________________ test_pftri __________________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 def test_pftri(): """ Test Cholesky factorization of a positive definite Rectangular Full Packed (RFP) format array to find its inverse """ rng = np.random.RandomState(1234) for ind, dtype in enumerate(DTYPES): n = 20 if ind > 1: A = (rng.rand(n, n) + rng.rand(n, n)*1j).astype(dtype) A = A + A.conj().T + n*eye(n) else: A = (rng.rand(n, n)).astype(dtype) A = A + A.T + n*eye(n) pftri, pftrf, trttf, tfttr = get_lapack_funcs(('pftri', 'pftrf', 'trttf', 'tfttr'), dtype=dtype) # Get the original array from TP Afp, info = trttf(A) A_chol_rfp, info = pftrf(n, Afp) A_inv_rfp, info = pftri(n, A_chol_rfp) assert_(info == 0) A_inv_r, _ = tfttr(n, A_inv_rfp) Ainv = inv(A) > assert_array_almost_equal(A_inv_r, triu(Ainv), decimal=4 if ind % 2 == 0 else 6) E AssertionError: E Arrays are not almost equal to 4 decimals E E Mismatched elements: 9 / 400 (2.25%) E Max absolute difference among violations: 0.00297624 E Max relative difference among violations: 5.7780758 E ACTUAL: array([[ 5.0566e-02, -1.0022e-03, 2.1531e-04, -1.5319e-03, -1.5974e-03, E -2.5366e-03, -1.5801e-03, -5.9768e-04, -1.4246e-03, -2.5942e-03, E -2.0837e-03, -9.8602e-04, -7.3794e-04, -1.9972e-03, 1.7774e-04,... E DESIRED: array([[ 5.0565e-02, -1.0042e-03, 2.1366e-04, -1.5335e-03, -1.5981e-03, E -1.4567e-03, -1.5799e-03, -5.9890e-04, -1.4266e-03, -2.5949e-03, E -2.0850e-03, -9.8616e-04, -7.3829e-04, -1.9978e-03, 1.7069e-04,... scipy/linalg/tests/test_lapack.py:1406: AssertionError __________________________________ test_pftrs __________________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 def test_pftrs(): """ Test Cholesky factorization of a positive definite Rectangular Full Packed (RFP) format array and solve a linear system """ rng = np.random.RandomState(1234) for ind, dtype in enumerate(DTYPES): n = 20 if ind > 1: A = (rng.rand(n, n) + rng.rand(n, n)*1j).astype(dtype) A = A + A.conj().T + n*eye(n) else: A = (rng.rand(n, n)).astype(dtype) A = A + A.T + n*eye(n) B = ones((n, 3), dtype=dtype) Bf1 = ones((n+2, 3), dtype=dtype) Bf2 = ones((n-2, 3), dtype=dtype) pftrs, pftrf, trttf, tfttr = get_lapack_funcs(('pftrs', 'pftrf', 'trttf', 'tfttr'), dtype=dtype) # Get the original array from TP Afp, info = trttf(A) A_chol_rfp, info = pftrf(n, Afp) # larger B arrays shouldn't segfault soln, info = pftrs(n, A_chol_rfp, Bf1) assert_(info == 0) assert_raises(Exception, pftrs, n, A_chol_rfp, Bf2) soln, info = pftrs(n, A_chol_rfp, B) assert_(info == 0) > assert_array_almost_equal(solve(A, B), soln, decimal=4 if ind % 2 == 0 else 6) E AssertionError: E Arrays are not almost equal to 4 decimals E E Mismatched elements: 9 / 60 (15%) E Max absolute difference among violations: 0.00032152 E Max relative difference among violations: 0.01221225 E ACTUAL: array([[0.0252, 0.0252, 0.0252], E [0.0225, 0.0225, 0.0225], E [0.0238, 0.0238, 0.0238],... E DESIRED: array([[0.0252, 0.0252, 0.0252], E [0.0225, 0.0225, 0.0225], E [0.0238, 0.0238, 0.0238],... scipy/linalg/tests/test_lapack.py:1443: AssertionError _______________________ TestBlockedQR.test_tpqrt_tpmqrt ________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 self = def test_tpqrt_tpmqrt(self): rng = np.random.RandomState(1234) for ind, dtype in enumerate(DTYPES): n = 20 if ind > 1: A = (rng.rand(n, n) + rng.rand(n, n)*1j).astype(dtype) B = (rng.rand(n, n) + rng.rand(n, n)*1j).astype(dtype) else: A = (rng.rand(n, n)).astype(dtype) B = (rng.rand(n, n)).astype(dtype) tol = 100*np.spacing(dtype(1.0).real) tpqrt, tpmqrt = get_lapack_funcs(('tpqrt', 'tpmqrt'), dtype=dtype) # Test for the range of pentagonal B, from square to upper # triangular for l in (0, n // 2, n): a, b, t, info = tpqrt(l, n, A, B) assert info == 0 # Check that lower triangular part of A has not been modified assert_equal(np.tril(a, -1), np.tril(A, -1)) # Check that elements not part of the pentagonal portion of B # have not been modified. assert_equal(np.tril(b, l - n - 1), np.tril(B, l - n - 1)) # Extract pentagonal portion of B B_pent, b_pent = np.triu(B, l - n), np.triu(b, l - n) # Generate elementary reflectors v = np.concatenate((np.eye(n, dtype=dtype), b_pent)) # Generate the block Householder transform I - VTV^H Q = np.eye(2 * n, dtype=dtype) - v @ t @ v.T.conj() R = np.concatenate((np.triu(a), np.zeros_like(a))) # Test columns of Q are orthogonal > assert_allclose(Q.T.conj() @ Q, np.eye(2 * n, dtype=dtype), atol=tol, rtol=0.) E AssertionError: E Not equal to tolerance rtol=0, atol=1.19209e-05 E E Mismatched elements: 972 / 1600 (60.8%) E Max absolute difference among violations: 0.40908474 E Max relative difference among violations: 0.3650732 E ACTUAL: array([[ 1.000000e+00, 1.913031e-08, 9.803866e-09, ..., 3.200866e-08, E -6.158855e-09, -1.821046e-08], E [ 1.913031e-08, 1.000000e+00, -1.598386e-08, ..., 9.218550e-09,... E DESIRED: array([[1., 0., 0., ..., 0., 0., 0.], E [0., 1., 0., ..., 0., 0., 0.], E [0., 0., 1., ..., 0., 0., 0.],... scipy/linalg/tests/test_lapack.py:1613: AssertionError __________________________________ test_pstrf __________________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 def test_pstrf(): rng = np.random.RandomState(1234) for ind, dtype in enumerate(DTYPES): # DTYPES = pstrf n = 10 r = 2 pstrf = get_lapack_funcs('pstrf', dtype=dtype) # Create positive semidefinite A if ind > 1: A = rng.rand(n, n-r).astype(dtype) + 1j * rng.rand(n, n-r).astype(dtype) A = A @ A.conj().T else: A = rng.rand(n, n-r).astype(dtype) A = A @ A.T c, piv, r_c, info = pstrf(A) U = triu(c) U[r_c - n:, r_c - n:] = 0. assert_equal(info, 1) # python-dbg 3.5.2 runs cause trouble with the following assertion. # assert_equal(r_c, n - r) single_atol = 1000 * np.finfo(np.float32).eps double_atol = 1000 * np.finfo(np.float64).eps atol = single_atol if ind in [0, 2] else double_atol > assert_allclose(A[piv-1][:, piv-1], U.conj().T @ U, rtol=0., atol=atol) E AssertionError: E Not equal to tolerance rtol=0, atol=0.000119209 E E Mismatched elements: 28 / 100 (28%) E Max absolute difference among violations: 274.16406 E Max relative difference among violations: 10.488507 E ACTUAL: array([[3.894413, 1.987093, 3.039686, 2.144394, 1.443457, 3.335639, E 3.29344 , 2.492172, 2.448231, 1.927169], E [1.987093, 2.276403, 2.075857, 1.862579, 1.406468, 2.276239,... E DESIRED: array([[ 3.894413e+00, 1.987093e+00, 3.039686e+00, 2.144394e+00, E 1.443458e+00, 3.335639e+00, 3.293440e+00, 2.492172e+00, E 2.448231e+00, 1.927169e+00],... scipy/linalg/tests/test_lapack.py:1686: AssertionError __________________________________ test_pstf2 __________________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 def test_pstf2(): rng = np.random.RandomState(1234) for ind, dtype in enumerate(DTYPES): # DTYPES = pstf2 n = 10 r = 2 pstf2 = get_lapack_funcs('pstf2', dtype=dtype) # Create positive semidefinite A if ind > 1: A = rng.rand(n, n-r).astype(dtype) + 1j * rng.rand(n, n-r).astype(dtype) A = A @ A.conj().T else: A = rng.rand(n, n-r).astype(dtype) A = A @ A.T c, piv, r_c, info = pstf2(A) U = triu(c) U[r_c - n:, r_c - n:] = 0. assert_equal(info, 1) # python-dbg 3.5.2 runs cause trouble with the commented assertions. # assert_equal(r_c, n - r) single_atol = 1000 * np.finfo(np.float32).eps double_atol = 1000 * np.finfo(np.float64).eps atol = single_atol if ind in [0, 2] else double_atol > assert_allclose(A[piv-1][:, piv-1], U.conj().T @ U, rtol=0., atol=atol) E AssertionError: E Not equal to tolerance rtol=0, atol=0.000119209 E E Mismatched elements: 28 / 100 (28%) E Max absolute difference among violations: 274.16406 E Max relative difference among violations: 10.488507 E ACTUAL: array([[3.894413, 1.987093, 3.039686, 2.144394, 1.443457, 3.335639, E 3.29344 , 2.492172, 2.448231, 1.927169], E [1.987093, 2.276403, 2.075857, 1.862579, 1.406468, 2.276239,... E DESIRED: array([[ 3.894413e+00, 1.987093e+00, 3.039686e+00, 2.144394e+00, E 1.443458e+00, 3.335639e+00, 3.293440e+00, 2.492172e+00, E 2.448231e+00, 1.927169e+00],... scipy/linalg/tests/test_lapack.py:1726: AssertionError _________________ test_gejsv_general[0-0-0-0-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 0, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-0-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 0, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-0-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 0, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-0-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 0, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-0-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 0, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-0-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 0, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-0-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 0, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-0-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 0, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-0-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 0, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-0-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 0, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-0-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 0, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-0-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 0, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-1-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 1, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-1-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 1, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-1-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 1, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-1-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 1, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-1-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 1, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-1-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 1, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-1-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 1, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-1-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 1, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-1-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 1, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-1-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 1, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-1-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 1, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-1-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 1, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-2-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 2, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-2-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 2, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-2-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 2, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-2-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 2, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-2-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 2, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.6494236 E Max relative difference among violations: 0.35241348 E ACTUAL: array([2.810819, 0.901935, 0.697707, 0.407347, 0.108692], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-2-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 2, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.28716063 E Max relative difference among violations: 0.5635021 E ACTUAL: array([2.329011, 0.801297, 0.660293, 0.283336, 0.020761], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-2-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 2, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.6494236 E Max relative difference among violations: 0.35241348 E ACTUAL: array([2.810819, 0.901935, 0.697707, 0.407347, 0.108692], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-2-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 2, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.28716063 E Max relative difference among violations: 0.5635021 E ACTUAL: array([2.329011, 0.801297, 0.660293, 0.283336, 0.020761], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-2-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 2, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-2-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 2, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-2-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 2, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-2-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 2, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-3-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 3, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-3-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 3, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _____________________ test_dtype_preservation[float32-AAA] _____________________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 method = dtype = @pytest.mark.parametrize("method", [AAA, FloaterHormannInterpolator]) @pytest.mark.parametrize("dtype", [np.float32, np.float64, np.complex64, np.complex128]) def test_dtype_preservation(method, dtype): rtol = np.finfo(dtype).eps ** 0.75 * 100 if method is FloaterHormannInterpolator: rtol *= 100 rng = np.random.default_rng(59846294526092468) z = np.linspace(-1, 1, dtype=dtype) r = method(z, np.sin(z)) z2 = rng.uniform(-1, 1, size=100).astype(dtype) > assert_allclose(r(z2), np.sin(z2), rtol=rtol) E AssertionError: E Not equal to tolerance rtol=0.000641553, atol=0 E E Mismatched elements: 75 / 100 (75%) E Max absolute difference among violations: 19.31524 E Max relative difference among violations: 301.23752 E ACTUAL: array([ 3.506705e-01, 5.175316e-01, 5.600419e-01, -1.961499e+00, E 1.643592e-01, 5.271081e-01, 8.458119e-01, 7.987648e-01, E -8.004861e-01, 4.966585e-01, 4.660985e-01, 4.111855e-01,... E DESIRED: array([ 0.35067 , 0.469861, 0.610555, -0.185773, 0.164359, 0.526628, E -0.154904, 0.617454, -0.800486, 0.506904, -0.783407, -0.222406, E 0.042876, 0.492409, -0.150858, 0.037863, 0.143936, 0.515936,... scipy/interpolate/tests/test_bary_rational.py:52: AssertionError _________ test_dtype_preservation[float32-FloaterHormannInterpolator] __________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 method = dtype = @pytest.mark.parametrize("method", [AAA, FloaterHormannInterpolator]) @pytest.mark.parametrize("dtype", [np.float32, np.float64, np.complex64, np.complex128]) def test_dtype_preservation(method, dtype): rtol = np.finfo(dtype).eps ** 0.75 * 100 if method is FloaterHormannInterpolator: rtol *= 100 rng = np.random.default_rng(59846294526092468) z = np.linspace(-1, 1, dtype=dtype) r = method(z, np.sin(z)) z2 = rng.uniform(-1, 1, size=100).astype(dtype) > assert_allclose(r(z2), np.sin(z2), rtol=rtol) E AssertionError: E Not equal to tolerance rtol=0.0641553, atol=0 E E Mismatched elements: 46 / 100 (46%) E Max absolute difference among violations: 0.11631572 E Max relative difference among violations: 11.672767 E ACTUAL: array([ 0.35067 , 0.526731, 0.610556, -0.101779, 0.164359, 0.591002, E -0.154904, 0.674078, -0.800486, 0.58268 , -0.783407, -0.142078, E 0.042876, 0.565457, -0.150858, 0.126867, 0.143936, 0.591381,... E DESIRED: array([ 0.35067 , 0.469861, 0.610555, -0.185773, 0.164359, 0.526628, E -0.154904, 0.617454, -0.800486, 0.506904, -0.783407, -0.222406, E 0.042876, 0.492409, -0.150858, 0.037863, 0.143936, 0.515936,... scipy/interpolate/tests/test_bary_rational.py:52: AssertionError _________________ test_gejsv_general[0-0-0-3-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 3, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-3-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 3, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-3-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 3, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.6494236 E Max relative difference among violations: 0.35241348 E ACTUAL: array([2.810819, 0.901935, 0.697707, 0.407347, 0.108692], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-3-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 3, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.28716063 E Max relative difference among violations: 0.5635021 E ACTUAL: array([2.329011, 0.801297, 0.660293, 0.283336, 0.020761], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-3-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 3, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.6494236 E Max relative difference among violations: 0.35241348 E ACTUAL: array([2.810819, 0.901935, 0.697707, 0.407347, 0.108692], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-3-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 3, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.28716063 E Max relative difference among violations: 0.5635021 E ACTUAL: array([2.329011, 0.801297, 0.660293, 0.283336, 0.020761], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-3-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 3, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-3-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 3, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-3-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 3, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-0-3-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 3, jobv = 0 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-1-0-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 0, jobv = 1 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-1-0-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 0, jobv = 1 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-1-0-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 0, jobv = 1 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-1-0-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 0, jobv = 1 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-1-0-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 0, jobv = 1 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-1-0-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 0, jobv = 1 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-1-0-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 0, jobv = 1 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-1-0-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 0, jobv = 1 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-1-0-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 0, jobv = 1 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-1-0-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 0, jobv = 1 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-1-0-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 0, jobv = 1 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-1-0-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 0, jobv = 1 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-1-1-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 1, jobv = 1 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-1-1-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 1, jobv = 1 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-1-1-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 1, jobv = 1 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-1-1-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 1, jobv = 1 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-1-1-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 1, jobv = 1 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-1-1-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 1, jobv = 1 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-1-1-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 1, jobv = 1 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-1-1-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 1, jobv = 1 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-1-1-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 1, jobv = 1 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-1-1-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 1, jobv = 1 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-1-1-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 1, jobv = 1 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-1-1-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 1, jobv = 1 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-0-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 0, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-0-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 0, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-0-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 0, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-0-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 0, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-0-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 0, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-0-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 0, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-0-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 0, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-0-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 0, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-0-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 0, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-0-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 0, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-0-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 0, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-0-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 0, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-1-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 1, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-1-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 1, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-1-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 1, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-1-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 1, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-1-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 1, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-1-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 1, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-1-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 1, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-1-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 1, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-1-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 1, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-1-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 1, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-1-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 1, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-1-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 1, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-2-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 2, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-2-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 2, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-2-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 2, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-2-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 2, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-2-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 2, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-2-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 2, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-2-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 2, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-2-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 2, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-2-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 2, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-2-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 2, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-2-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 2, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-2-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 2, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-3-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 3, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-3-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 3, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-3-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 3, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-3-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 3, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-3-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 3, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-3-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 3, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-3-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 3, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-3-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 3, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-3-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 3, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-3-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 3, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-3-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 3, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-2-3-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 3, jobv = 2 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-0-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 0, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-0-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 0, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-0-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 0, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-0-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 0, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-0-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 0, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-0-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 0, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-0-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 0, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-0-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 0, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-0-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 0, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-0-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 0, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-0-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 0, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-0-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 0, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-1-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 1, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-1-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 1, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-1-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 1, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-1-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 1, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-1-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 1, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-1-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 1, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-1-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 1, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-1-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 1, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-1-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 1, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-1-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 1, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-1-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 1, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-1-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 1, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-2-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 2, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-2-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 2, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-2-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 2, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-2-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 2, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-2-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 2, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-2-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 2, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-2-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 2, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-2-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 2, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-2-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 2, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-2-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 2, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-2-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 2, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-2-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 2, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-3-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 3, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-3-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 3, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-3-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 3, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-3-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 3, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-3-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 3, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-3-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 3, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-3-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 3, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-3-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 3, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-3-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 3, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-3-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 3, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-3-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 3, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-0-3-3-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 3, jobv = 3 jobr = 0, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-0-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 0, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-0-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 0, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-0-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 0, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-0-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 0, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-0-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 0, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-0-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 0, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-0-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 0, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-0-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 0, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-0-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 0, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-0-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 0, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-0-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 0, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-0-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 0, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-1-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 1, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-1-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 1, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-1-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 1, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-1-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 1, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-1-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 1, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-1-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 1, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-1-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 1, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-1-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 1, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-1-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 1, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-1-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 1, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-1-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 1, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-1-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 1, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-2-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 2, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-2-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 2, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-2-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 2, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-2-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 2, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-2-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 2, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.6494236 E Max relative difference among violations: 0.35241348 E ACTUAL: array([2.810819, 0.901935, 0.697707, 0.407347, 0.108692], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-2-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 2, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.28716063 E Max relative difference among violations: 0.5635021 E ACTUAL: array([2.329011, 0.801297, 0.660293, 0.283336, 0.020761], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-2-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 2, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.6494236 E Max relative difference among violations: 0.35241348 E ACTUAL: array([2.810819, 0.901935, 0.697707, 0.407347, 0.108692], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-2-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 2, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.28716063 E Max relative difference among violations: 0.5635021 E ACTUAL: array([2.329011, 0.801297, 0.660293, 0.283336, 0.020761], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-2-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 2, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-2-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 2, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-2-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 2, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-2-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 2, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-3-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 3, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-3-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 3, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-3-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 3, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-3-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 3, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-3-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 3, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.6494236 E Max relative difference among violations: 0.35241348 E ACTUAL: array([2.810819, 0.901935, 0.697707, 0.407347, 0.108692], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-3-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 3, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.28716063 E Max relative difference among violations: 0.5635021 E ACTUAL: array([2.329011, 0.801297, 0.660293, 0.283336, 0.020761], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-3-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 3, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.6494236 E Max relative difference among violations: 0.35241348 E ACTUAL: array([2.810819, 0.901935, 0.697707, 0.407347, 0.108692], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-3-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 3, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.28716063 E Max relative difference among violations: 0.5635021 E ACTUAL: array([2.329011, 0.801297, 0.660293, 0.283336, 0.020761], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-3-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 3, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-3-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 3, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-3-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 3, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-0-3-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 3, jobv = 0 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-1-0-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 0, jobv = 1 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-1-0-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 0, jobv = 1 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-1-0-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 0, jobv = 1 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-1-0-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 0, jobv = 1 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-1-0-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 0, jobv = 1 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-1-0-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 0, jobv = 1 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-1-0-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 0, jobv = 1 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-1-0-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 0, jobv = 1 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-1-0-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 0, jobv = 1 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-1-0-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 0, jobv = 1 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-1-0-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 0, jobv = 1 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-1-0-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 0, jobv = 1 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-1-1-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 1, jobv = 1 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-1-1-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 1, jobv = 1 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-1-1-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 1, jobv = 1 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-1-1-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 1, jobv = 1 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-1-1-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 1, jobv = 1 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-1-1-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 1, jobv = 1 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-1-1-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 1, jobv = 1 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-1-1-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 1, jobv = 1 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-1-1-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 1, jobv = 1 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-1-1-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 1, jobv = 1 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-1-1-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 1, jobv = 1 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-1-1-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 1, jobv = 1 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-0-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 0, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-0-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 0, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-0-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 0, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-0-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 0, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-0-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 0, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-0-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 0, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-0-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 0, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-0-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 0, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-0-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 0, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-0-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 0, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-0-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 0, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-0-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 0, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-1-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 1, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-1-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 1, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-1-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 1, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-1-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 1, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-1-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 1, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-1-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 1, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-1-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 1, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-1-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 1, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-1-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 1, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-1-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 1, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-1-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 1, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-1-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 1, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-2-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 2, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-2-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 2, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-2-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 2, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-2-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 2, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-2-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 2, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-2-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 2, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-2-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 2, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-2-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 2, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-2-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 2, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-2-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 2, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-2-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 2, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-2-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 2, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-3-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 3, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-3-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 3, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-3-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 3, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-3-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 3, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-3-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 3, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-3-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 3, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-3-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 3, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-3-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 3, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-3-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 3, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-3-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 3, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-3-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 3, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-2-3-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 3, jobv = 2 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-0-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 0, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-0-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 0, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-0-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 0, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-0-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 0, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-0-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 0, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-0-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 0, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-0-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 0, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-0-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 0, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-0-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 0, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-0-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 0, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-0-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 0, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-0-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 0, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-1-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 1, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-1-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 1, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-1-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 1, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-1-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 1, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-1-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 1, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-1-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 1, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-1-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 1, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-1-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 1, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-1-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 1, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-1-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 1, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-1-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 1, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-1-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 1, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-2-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 2, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-2-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 2, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-2-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 2, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-2-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 2, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-2-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 2, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-2-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 2, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-2-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 2, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-2-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 2, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-2-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 2, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-2-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 2, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-2-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 2, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-2-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 2, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-3-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 3, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-3-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 3, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-3-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 3, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-3-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 3, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-3-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 3, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-3-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 3, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-3-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 3, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-3-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 3, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-3-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 3, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-3-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 3, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-3-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 3, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[0-1-3-3-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 3, jobv = 3 jobr = 1, jobp = 0, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-0-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 0, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-0-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 0, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-0-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 0, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-0-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 0, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-0-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 0, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-0-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 0, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-0-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 0, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-0-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 0, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-0-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 0, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-0-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 0, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-0-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 0, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-0-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 0, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-1-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 1, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-1-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 1, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-1-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 1, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-1-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 1, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-1-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 1, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-1-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 1, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-1-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 1, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-1-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 1, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-1-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 1, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-1-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 1, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-1-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 1, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-1-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 1, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-2-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 2, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-2-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 2, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-2-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 2, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-2-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 2, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-2-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 2, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.6494236 E Max relative difference among violations: 0.35241348 E ACTUAL: array([2.810819, 0.901935, 0.697707, 0.407347, 0.108692], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-2-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 2, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.28716063 E Max relative difference among violations: 0.5635021 E ACTUAL: array([2.329011, 0.801297, 0.660293, 0.283336, 0.020761], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-2-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 2, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.6494236 E Max relative difference among violations: 0.35241348 E ACTUAL: array([2.810819, 0.901935, 0.697707, 0.407347, 0.108692], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-2-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 2, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.28716063 E Max relative difference among violations: 0.5635021 E ACTUAL: array([2.329011, 0.801297, 0.660293, 0.283336, 0.020761], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-2-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 2, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-2-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 2, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-2-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 2, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-2-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 2, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-3-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 3, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-3-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 3, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-3-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 3, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-3-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 3, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-3-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 3, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.6494236 E Max relative difference among violations: 0.35241348 E ACTUAL: array([2.810819, 0.901935, 0.697707, 0.407347, 0.108692], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-3-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 3, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.28716063 E Max relative difference among violations: 0.5635021 E ACTUAL: array([2.329011, 0.801297, 0.660293, 0.283336, 0.020761], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-3-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 3, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.6494236 E Max relative difference among violations: 0.35241348 E ACTUAL: array([2.810819, 0.901935, 0.697707, 0.407347, 0.108692], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-3-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 3, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.28716063 E Max relative difference among violations: 0.5635021 E ACTUAL: array([2.329011, 0.801297, 0.660293, 0.283336, 0.020761], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-3-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 3, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-3-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 3, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-3-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 3, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-0-3-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 3, jobv = 0 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-1-0-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 0, jobv = 1 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-1-0-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 0, jobv = 1 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-1-0-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 0, jobv = 1 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-1-0-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 0, jobv = 1 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-1-0-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 0, jobv = 1 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-1-0-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 0, jobv = 1 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-1-0-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 0, jobv = 1 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-1-0-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 0, jobv = 1 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-1-0-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 0, jobv = 1 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-1-0-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 0, jobv = 1 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-1-0-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 0, jobv = 1 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-1-0-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 0, jobv = 1 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-1-1-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 1, jobv = 1 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-1-1-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 1, jobv = 1 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-1-1-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 1, jobv = 1 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-1-1-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 1, jobv = 1 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-1-1-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 1, jobv = 1 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-1-1-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 1, jobv = 1 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-1-1-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 1, jobv = 1 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-1-1-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 1, jobv = 1 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-1-1-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 1, jobv = 1 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-1-1-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 1, jobv = 1 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-1-1-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 1, jobv = 1 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-1-1-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 1, jobv = 1 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-0-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 0, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-0-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 0, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-0-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 0, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-0-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 0, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-0-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 0, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-0-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 0, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-0-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 0, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-0-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 0, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-0-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 0, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-0-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 0, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-0-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 0, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-0-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 0, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-1-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 1, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-1-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 1, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-1-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 1, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-1-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 1, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-1-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 1, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-1-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 1, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-1-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 1, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-1-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 1, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-1-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 1, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-1-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 1, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-1-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 1, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-1-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 1, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-2-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 2, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-2-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 2, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-2-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 2, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-2-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 2, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-2-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 2, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-2-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 2, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-2-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 2, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-2-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 2, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-2-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 2, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-2-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 2, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-2-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 2, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-2-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 2, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-3-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 3, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-3-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 3, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-3-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 3, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-3-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 3, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-3-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 3, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-3-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 3, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-3-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 3, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-3-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 3, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-3-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 3, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-3-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 3, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-3-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 3, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-2-3-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 3, jobv = 2 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-0-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 0, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-0-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 0, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-0-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 0, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-0-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 0, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-0-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 0, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-0-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 0, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-0-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 0, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-0-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 0, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-0-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 0, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-0-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 0, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-0-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 0, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-0-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 0, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-1-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 1, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-1-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 1, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-1-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 1, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-1-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 1, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-1-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 1, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-1-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 1, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-1-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 1, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-1-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 1, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-1-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 1, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-1-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 1, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-1-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 1, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-1-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 1, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-2-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 2, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-2-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 2, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-2-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 2, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-2-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 2, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-2-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 2, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-2-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 2, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-2-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 2, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-2-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 2, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-2-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 2, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-2-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 2, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-2-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 2, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-2-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 2, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-3-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 3, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-3-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 3, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-3-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 3, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-3-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 3, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-3-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 3, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-3-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 3, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-3-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 3, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-3-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 3, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-3-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 3, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-3-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 3, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-3-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 3, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-0-3-3-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 3, jobv = 3 jobr = 0, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-0-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 0, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-0-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 0, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-0-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 0, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-0-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 0, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-0-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 0, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-0-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 0, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-0-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 0, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-0-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 0, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-0-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 0, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-0-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 0, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-0-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 0, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-0-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 0, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-1-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 1, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-1-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 1, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-1-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 1, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-1-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 1, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-1-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 1, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-1-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 1, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-1-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 1, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-1-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 1, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-1-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 1, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-1-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 1, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-1-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 1, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-1-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 1, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-2-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 2, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-2-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 2, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-2-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 2, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-2-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 2, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-2-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 2, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.6494236 E Max relative difference among violations: 0.35241348 E ACTUAL: array([2.810819, 0.901935, 0.697707, 0.407347, 0.108692], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-2-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 2, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.28716063 E Max relative difference among violations: 0.5635021 E ACTUAL: array([2.329011, 0.801297, 0.660293, 0.283336, 0.020761], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-2-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 2, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.6494236 E Max relative difference among violations: 0.35241348 E ACTUAL: array([2.810819, 0.901935, 0.697707, 0.407347, 0.108692], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-2-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 2, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.28716063 E Max relative difference among violations: 0.5635021 E ACTUAL: array([2.329011, 0.801297, 0.660293, 0.283336, 0.020761], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-2-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 2, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-2-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 2, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-2-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 2, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-2-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 2, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-3-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 3, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-3-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 3, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-3-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 3, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-3-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 3, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-3-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 3, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.6494236 E Max relative difference among violations: 0.35241348 E ACTUAL: array([2.810819, 0.901935, 0.697707, 0.407347, 0.108692], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-3-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 3, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.28716063 E Max relative difference among violations: 0.5635021 E ACTUAL: array([2.329011, 0.801297, 0.660293, 0.283336, 0.020761], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-3-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 3, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.6494236 E Max relative difference among violations: 0.35241348 E ACTUAL: array([2.810819, 0.901935, 0.697707, 0.407347, 0.108692], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-3-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 3, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.28716063 E Max relative difference among violations: 0.5635021 E ACTUAL: array([2.329011, 0.801297, 0.660293, 0.283336, 0.020761], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-3-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 3, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-3-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 3, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-3-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 3, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.79930043 E Max relative difference among violations: 0.57162887 E ACTUAL: array([2.960696, 0.887947, 0.724057, 0.473375, 0.104333], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-0-3-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 3, jobv = 0 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.32116413 E Max relative difference among violations: 1.3020179 E ACTUAL: array([2.16075 , 0.823037, 0.525017, 0.407947, 0.109491], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-1-0-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 0, jobv = 1 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-1-0-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 0, jobv = 1 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-1-0-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 0, jobv = 1 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-1-0-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 0, jobv = 1 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-1-0-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 0, jobv = 1 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-1-0-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 0, jobv = 1 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-1-0-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 0, jobv = 1 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-1-0-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 0, jobv = 1 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-1-0-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 0, jobv = 1 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-1-0-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 0, jobv = 1 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-1-0-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 0, jobv = 1 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-1-0-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 0, jobv = 1 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-1-1-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 1, jobv = 1 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-1-1-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 1, jobv = 1 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-1-1-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 1, jobv = 1 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-1-1-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 1, jobv = 1 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-1-1-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 1, jobv = 1 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-1-1-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 1, jobv = 1 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-1-1-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 1, jobv = 1 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.70028067 E Max relative difference among violations: 0.729079 E ACTUAL: array([2.861676, 0.964275, 0.813699, 0.520799, 0.096721], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-1-1-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 1, jobv = 1 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-1-1-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 1, jobv = 1 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-1-1-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 1, jobv = 1 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-1-1-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 1, jobv = 1 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.7558248 E Max relative difference among violations: 0.93195087 E ACTUAL: array([2.91722 , 1.196051, 0.725714, 0.581904, 0.108069], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-1-1-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 1, jobv = 1 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-0-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 0, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-0-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 0, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-0-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 0, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-0-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 0, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-0-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 0, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-0-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 0, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-0-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 0, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-0-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 0, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-0-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 0, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-0-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 0, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-0-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 0, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-0-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 0, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-1-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 1, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-1-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 1, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-1-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 1, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-1-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 1, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-1-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 1, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-1-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 1, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-1-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 1, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-1-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 1, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-1-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 1, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-1-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 1, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-1-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 1, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-1-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 1, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-2-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 2, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-2-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 2, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-2-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 2, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-2-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 2, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-2-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 2, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-2-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 2, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-2-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 2, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-2-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 2, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-2-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 2, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-2-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 2, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-2-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 2, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-2-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 2, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-3-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 3, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-3-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 3, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-3-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 3, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-3-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 3, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-3-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 3, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-3-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 3, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-3-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 3, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-3-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 3, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-3-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 3, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-3-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 3, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-3-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 3, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-2-3-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 3, jobv = 2 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-0-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 0, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-0-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 0, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-0-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 0, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-0-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 0, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-0-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 0, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-0-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 0, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-0-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 0, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-0-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 0, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-0-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 0, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-0-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 0, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-0-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 0, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-0-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 0, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-1-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 1, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-1-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 1, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-1-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 1, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-1-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 1, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-1-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 1, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-1-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 1, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-1-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 1, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-1-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 1, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-1-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 1, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-1-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 1, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-1-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 1, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-1-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 1, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-2-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 2, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-2-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 2, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-2-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 2, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-2-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 2, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-2-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 2, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-2-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 2, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-2-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 2, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-2-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 2, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-2-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 2, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-2-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 2, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-2-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 2, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-2-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 2, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-3-0-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 0, jobu = 3, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-3-0-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 0, jobu = 3, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-3-1-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 1, jobu = 3, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-3-1-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 1, jobu = 3, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-3-2-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 2, jobu = 3, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-3-2-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 2, jobu = 3, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-3-3-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 3, jobu = 3, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.29077214 E Max relative difference among violations: 0.6692585 E ACTUAL: array([2.440756, 0.834313, 0.795699, 0.502781, 0.106153], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-3-3-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 3, jobu = 3, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.2889626 E Max relative difference among violations: 0.569125 E ACTUAL: array([2.326898, 0.799495, 0.616504, 0.278314, 0.020494], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-3-4-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 4, jobu = 3, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-3-4-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 4, jobu = 3, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-3-5-float32-size0] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (6, 5), dtype = , joba = 5, jobu = 3, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.38299084 E Max relative difference among violations: 0.9025089 E ACTUAL: array([2.544386, 1.029001, 0.706843, 0.573036, 0.108305], dtype=float32) E DESIRED: array([2.161396, 1.125085, 0.647456, 0.3012 , 0.15968 ], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError _________________ test_gejsv_general[1-1-3-3-5-float32-size1] __________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 size = (5, 5), dtype = , joba = 5, jobu = 3, jobv = 3 jobr = 1, jobp = 1, jobt = 0 @pytest.mark.parametrize('size', [(6, 5), (5, 5)]) @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('joba', range(6)) # 'C', 'E', 'F', 'G', 'A', 'R' @pytest.mark.parametrize('jobu', range(4)) # 'U', 'F', 'W', 'N' @pytest.mark.parametrize('jobv', range(4)) # 'V', 'J', 'W', 'N' @pytest.mark.parametrize('jobr', [0, 1]) @pytest.mark.parametrize('jobp', [0, 1]) def test_gejsv_general(size, dtype, joba, jobu, jobv, jobr, jobp, jobt=0): """Test the lapack routine ?gejsv. This function tests that a singular value decomposition can be performed on the random M-by-N matrix A. The test performs the SVD using ?gejsv then performs the following checks: * ?gejsv exist successfully (info == 0) * The returned singular values are correct * `A` can be reconstructed from `u`, `SIGMA`, `v` * Ensure that u.T @ u is the identity matrix * Ensure that v.T @ v is the identity matrix * The reported matrix rank * The reported number of singular values * If denormalized floats are required Notes ----- joba specifies several choices effecting the calculation's accuracy Although all arguments are tested, the tests only check that the correct solution is returned - NOT that the prescribed actions are performed internally. jobt is, as of v3.9.0, still experimental and removed to cut down number of test cases. However keyword itself is tested externally. """ rng = np.random.RandomState(42) # Define some constants for later use: m, n = size atol = 100 * np.finfo(dtype).eps A = generate_random_dtype_array(size, dtype, rng) gejsv = get_lapack_funcs('gejsv', dtype=dtype) # Set up checks for invalid job? combinations # if an invalid combination occurs we set the appropriate # exit status. lsvec = jobu < 2 # Calculate left singular vectors rsvec = jobv < 2 # Calculate right singular vectors l2tran = (jobt == 1) and (m == n) is_complex = np.iscomplexobj(A) invalid_real_jobv = (jobv == 1) and (not lsvec) and (not is_complex) invalid_cplx_jobu = (jobu == 2) and not (rsvec and l2tran) and is_complex invalid_cplx_jobv = (jobv == 2) and not (lsvec and l2tran) and is_complex # Set the exit status to the expected value. # Here we only check for invalid combinations, not individual # parameters. if invalid_cplx_jobu: exit_status = -2 elif invalid_real_jobv or invalid_cplx_jobv: exit_status = -3 else: exit_status = 0 if (jobu > 1) and (jobv == 1): assert_raises(Exception, gejsv, A, joba, jobu, jobv, jobr, jobt, jobp) else: sva, u, v, work, iwork, info = gejsv(A, joba=joba, jobu=jobu, jobv=jobv, jobr=jobr, jobt=jobt, jobp=jobp) # Check that ?gejsv exited successfully/as expected assert_equal(info, exit_status) # If exit_status is non-zero the combination of jobs is invalid. # We test this above but no calculations are performed. if not exit_status: # Check the returned singular values sigma = (work[0] / work[1]) * sva[:n] > assert_allclose(sigma, svd(A, compute_uv=False), atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 5 / 5 (100%) E Max absolute difference among violations: 0.3252467 E Max relative difference among violations: 1.2445606 E ACTUAL: array([2.107838, 0.80301 , 0.520935, 0.352109, 0.106758], dtype=float32) E DESIRED: array([2.071499, 1.088457, 0.846182, 0.304089, 0.047563], dtype=float32) scipy/linalg/tests/test_lapack.py:1934: AssertionError ______________________ test_pttrf_pttrs[float32-float32] _______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 ddtype = , dtype = @pytest.mark.parametrize("ddtype,dtype", zip(REAL_DTYPES + REAL_DTYPES, DTYPES)) def test_pttrf_pttrs(ddtype, dtype): rng = np.random.RandomState(42) # set test tolerance appropriate for dtype atol = 100*np.finfo(dtype).eps # n is the length diagonal of A n = 10 # create diagonals according to size and dtype # diagonal d should always be real. # add 4 to d so it will be dominant for all dtypes d = generate_random_dtype_array((n,), ddtype, rng) + 4 # diagonal e may be real or complex. e = generate_random_dtype_array((n-1,), dtype, rng) # assemble diagonals together into matrix A = np.diag(d) + np.diag(e, -1) + np.diag(np.conj(e), 1) # store a copy of diagonals to later verify diag_cpy = [d.copy(), e.copy()] pttrf = get_lapack_funcs('pttrf', dtype=dtype) _d, _e, info = pttrf(d, e) # test to assure that the inputs of ?pttrf are unmodified assert_array_equal(d, diag_cpy[0]) assert_array_equal(e, diag_cpy[1]) assert_equal(info, 0, err_msg=f"pttrf: info = {info}, should be 0") # test that the factors from pttrf can be recombined to make A L = np.diag(_e, -1) + np.diag(np.ones(n)) D = np.diag(_d) assert_allclose(A, L@D@L.conjugate().T, atol=atol) # generate random solution x x = generate_random_dtype_array((n,), dtype, rng) # determine accompanying b to get soln x b = A@x # determine _x from pttrs pttrs = get_lapack_funcs('pttrs', dtype=dtype) _x, info = pttrs(_d, _e.conj(), b) assert_equal(info, 0, err_msg=f"pttrs: info = {info}, should be 0") # test that _x from pttrs matches the expected x > assert_allclose(x, _x, atol=atol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1.19209e-05 E E Mismatched elements: 10 / 10 (100%) E Max absolute difference among violations: 0.2795066 E Max relative difference among violations: 4.6836886 E ACTUAL: array([0.291229, 0.611853, 0.139494, 0.292145, 0.366362, 0.45607 , E 0.785176, 0.199674, 0.514234, 0.592415], dtype=float32) E DESIRED: array([ 0.292544, 0.332346, 0.157912, 0.513109, 0.367066, 0.181929, E 0.816599, -0.054205, 0.543441, 0.589735], dtype=float32) scipy/linalg/tests/test_lapack.py:2282: AssertionError ______________________ test_geqrfp[matrix_size1-float32] _______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype = , matrix_size = (7, 6) @pytest.mark.parametrize('dtype', DTYPES) @pytest.mark.parametrize('matrix_size', [(3, 4), (7, 6), (6, 6)]) def test_geqrfp(dtype, matrix_size): # Tests for all dytpes, tall, wide, and square matrices. # Using the routine with random matrix A, Q and R are obtained and then # tested such that R is upper triangular and non-negative on the diagonal, # and Q is an orthogonal matrix. Verifies that A=Q@R. It also # tests against a matrix that for which the linalg.qr method returns # negative diagonals, and for error messaging. # set test tolerance appropriate for dtype rng = np.random.RandomState(42) rtol = 250*np.finfo(dtype).eps atol = 100*np.finfo(dtype).eps # get appropriate ?geqrfp for dtype geqrfp = get_lapack_funcs(('geqrfp'), dtype=dtype) gqr = get_lapack_funcs(("orgqr"), dtype=dtype) m, n = matrix_size # create random matrix of dimensions m x n A = generate_random_dtype_array((m, n), dtype=dtype, rng=rng) # create qr matrix using geqrfp qr_A, tau, info = geqrfp(A) # obtain r from the upper triangular area r = np.triu(qr_A) # obtain q from the orgqr lapack routine # based on linalg.qr's extraction strategy of q with orgqr if m > n: # this adds an extra column to the end of qr_A # let qqr be an empty m x m matrix qqr = np.zeros((m, m), dtype=dtype) # set first n columns of qqr to qr_A qqr[:, :n] = qr_A # determine q from this qqr # note that m is a sufficient for lwork based on LAPACK documentation q = gqr(qqr, tau=tau, lwork=m)[0] else: q = gqr(qr_A[:, :m], tau=tau, lwork=m)[0] # test that q and r still make A > assert_allclose(q@r, A, rtol=rtol) E AssertionError: E Not equal to tolerance rtol=2.98023e-05, atol=0 E E Mismatched elements: 35 / 42 (83.3%) E Max absolute difference among violations: 3.1815424 E Max relative difference among violations: 36.373055 E ACTUAL: array([[ 0.37454 , 0.559518, 0.152731, 0.368859, 0.371509, 0.086042], E [ 0.058084, 0.890697, -0.475214, -1.545612, -0.728136, 0.039317], E [ 0.832443, 0.563765, -1.205646, -2.998138, -0.794698, -0.75863 ],... E DESIRED: array([[0.37454 , 0.950714, 0.731994, 0.598659, 0.156019, 0.155995], E [0.058084, 0.866176, 0.601115, 0.708073, 0.020584, 0.96991 ], E [0.832443, 0.212339, 0.181825, 0.183405, 0.304242, 0.524756],... scipy/linalg/tests/test_lapack.py:2540: AssertionError ______________________ test_geqrfp[matrix_size2-float32] _______________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype = , matrix_size = (6, 6) @pytest.mark.parametrize('dtype', DTYPES) @pytest.mark.parametrize('matrix_size', [(3, 4), (7, 6), (6, 6)]) def test_geqrfp(dtype, matrix_size): # Tests for all dytpes, tall, wide, and square matrices. # Using the routine with random matrix A, Q and R are obtained and then # tested such that R is upper triangular and non-negative on the diagonal, # and Q is an orthogonal matrix. Verifies that A=Q@R. It also # tests against a matrix that for which the linalg.qr method returns # negative diagonals, and for error messaging. # set test tolerance appropriate for dtype rng = np.random.RandomState(42) rtol = 250*np.finfo(dtype).eps atol = 100*np.finfo(dtype).eps # get appropriate ?geqrfp for dtype geqrfp = get_lapack_funcs(('geqrfp'), dtype=dtype) gqr = get_lapack_funcs(("orgqr"), dtype=dtype) m, n = matrix_size # create random matrix of dimensions m x n A = generate_random_dtype_array((m, n), dtype=dtype, rng=rng) # create qr matrix using geqrfp qr_A, tau, info = geqrfp(A) # obtain r from the upper triangular area r = np.triu(qr_A) # obtain q from the orgqr lapack routine # based on linalg.qr's extraction strategy of q with orgqr if m > n: # this adds an extra column to the end of qr_A # let qqr be an empty m x m matrix qqr = np.zeros((m, m), dtype=dtype) # set first n columns of qqr to qr_A qqr[:, :n] = qr_A # determine q from this qqr # note that m is a sufficient for lwork based on LAPACK documentation q = gqr(qqr, tau=tau, lwork=m)[0] else: q = gqr(qr_A[:, :m], tau=tau, lwork=m)[0] # test that q and r still make A > assert_allclose(q@r, A, rtol=rtol) E AssertionError: E Not equal to tolerance rtol=2.98023e-05, atol=0 E E Mismatched elements: 30 / 36 (83.3%) E Max absolute difference among violations: 2.32465 E Max relative difference among violations: 14.208782 E ACTUAL: array([[ 0.37454 , 1.161716, 0.392467, -1.725991, 1.279934, -0.918602], E [ 0.058084, 0.852413, 0.193558, 0.359673, 0.313065, 0.415375], E [ 0.832443, 0.015092, -0.018862, 1.75365 , -0.305387, 0.776208],... E DESIRED: array([[0.37454 , 0.950714, 0.731994, 0.598659, 0.156019, 0.155995], E [0.058084, 0.866176, 0.601115, 0.708073, 0.020584, 0.96991 ], E [0.832443, 0.212339, 0.181825, 0.183405, 0.304242, 0.524756],... scipy/linalg/tests/test_lapack.py:2540: AssertionError __________________________ test_orcsd_uncsd[float32] ___________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype_ = @pytest.mark.parametrize("dtype_", DTYPES) def test_orcsd_uncsd(dtype_): m, p, q = 250, 80, 170 pfx = 'or' if dtype_ in REAL_DTYPES else 'un' X = ortho_group.rvs(m) if pfx == 'or' else unitary_group.rvs(m) drv, dlw = get_lapack_funcs((pfx + 'csd', pfx + 'csd_lwork'), dtype=dtype_) lwval = _compute_lwork(dlw, m, p, q) lwvals = {'lwork': lwval} if pfx == 'or' else dict(zip(['lwork', 'lrwork'], lwval)) cs11, cs12, cs21, cs22, theta, u1, u2, v1t, v2t, info =\ drv(X[:p, :q], X[:p, q:], X[p:, :q], X[p:, q:], **lwvals) assert info == 0 U = block_diag(u1, u2) VH = block_diag(v1t, v2t) r = min(min(p, q), min(m-p, m-q)) n11 = min(p, q) - r n12 = min(p, m-q) - r n21 = min(m-p, q) - r n22 = min(m-p, m-q) - r S = np.zeros((m, m), dtype=dtype_) one = dtype_(1.) for i in range(n11): S[i, i] = one for i in range(n22): S[p+i, q+i] = one for i in range(n12): S[i+n11+r, i+n11+r+n21+n22+r] = -one for i in range(n21): S[p+n22+r+i, n11+r+i] = one for i in range(r): S[i+n11, i+n11] = np.cos(theta[i]) S[p+n22+i, i+r+n21+n22] = np.cos(theta[i]) S[i+n11, i+n11+n21+n22+r] = -np.sin(theta[i]) S[p+n22+i, i+n11] = np.sin(theta[i]) Xc = U @ S @ VH > assert_allclose(X, Xc, rtol=0., atol=1e4*np.finfo(dtype_).eps) E AssertionError: E Not equal to tolerance rtol=0, atol=0.00119209 E E Mismatched elements: 61366 / 62500 (98.2%) E Max absolute difference among violations: 0.56429358 E Max relative difference among violations: 15370.21977246 E ACTUAL: array([[ 0.089035, -0.004707, 0.075573, ..., -0.019695, -0.003899, E 0.071698], E [-0.114405, -0.053644, -0.057861, ..., -0.033291, -0.031768,... E DESIRED: array([[ 0.10039 , -0.028298, 0.087611, ..., 0.003803, 0.054335, E 0.056945], E [-0.009116, -0.105129, -0.004441, ..., 0.003611, -0.004879,... scipy/linalg/tests/test_lapack.py:2656: AssertionError _______________ test_pptrs_pptri_pptrf_ppsv_ppcon[float32-False] _______________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype = , lower = False @pytest.mark.parametrize('lower', [False, True]) @pytest.mark.parametrize('dtype', DTYPES) def test_pptrs_pptri_pptrf_ppsv_ppcon(dtype, lower): rng = np.random.RandomState(1234) atol = np.finfo(dtype).eps*100 # Manual conversion to/from packed format is feasible here. n, nrhs = 10, 4 a = generate_random_dtype_array([n, n], dtype=dtype, rng=rng) b = generate_random_dtype_array([n, nrhs], dtype=dtype, rng=rng) a = a.conj().T + a + np.eye(n, dtype=dtype) * dtype(5.) if lower: inds = ([x for y in range(n) for x in range(y, n)], [y for y in range(n) for x in range(y, n)]) else: inds = ([x for y in range(1, n+1) for x in range(y)], [y-1 for y in range(1, n+1) for x in range(y)]) ap = a[inds] ppsv, pptrf, pptrs, pptri, ppcon = get_lapack_funcs( ('ppsv', 'pptrf', 'pptrs', 'pptri', 'ppcon'), dtype=dtype, ilp64="preferred") ul, info = pptrf(n, ap, lower=lower) assert_equal(info, 0) > aul = cholesky(a, lower=lower)[inds] ^^^^^^^^^^^^^^^^^^^^^^^^ scipy/linalg/tests/test_lapack.py:3038: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/_lib/_util.py:1233: in wrapper return f(*arrays, *other_args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ scipy/linalg/_decomp_cholesky.py:106: in cholesky c, lower = _cholesky(a, lower=lower, overwrite_a=overwrite_a, clean=True, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[5.383039 , 0.979926 , 0.80261374, 1.654486 , 0.83978504, 0.3844869 , 0.56171525, 1.5403953 , 1.3950...3 , 1.8607447 , 0.98332596, 1.2945237 , 0.65625906, 1.1198437 , 0.49542552, 6.3388433 ]], dtype=float32) lower = False, overwrite_a = False, clean = True, check_finite = True def _cholesky(a, lower=False, overwrite_a=False, clean=True, check_finite=True): """Common code for cholesky() and cho_factor().""" a1 = asarray_chkfinite(a) if check_finite else asarray(a) a1 = atleast_2d(a1) # Dimension check if a1.ndim != 2: raise ValueError(f'Input array needs to be 2D but received a {a1.ndim}d-array.') # Squareness check if a1.shape[0] != a1.shape[1]: raise ValueError('Input array is expected to be square but has ' f'the shape: {a1.shape}.') # Quick return for square empty array if a1.size == 0: dt = cholesky(np.eye(1, dtype=a1.dtype)).dtype return empty_like(a1, dtype=dt), lower overwrite_a = overwrite_a or _datacopied(a1, a) potrf, = get_lapack_funcs(('potrf',), (a1,)) c, info = potrf(a1, lower=lower, overwrite_a=overwrite_a, clean=clean) if info > 0: > raise LinAlgError( f"{info}-th leading minor of the array is not positive definite" ) E numpy.linalg.LinAlgError: 10-th leading minor of the array is not positive definite scipy/linalg/_decomp_cholesky.py:39: LinAlgError ___________________________ test_gees_trexc[float32] ___________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype = @pytest.mark.parametrize('dtype', DTYPES) def test_gees_trexc(dtype): rng = np.random.RandomState(1234) atol = np.finfo(dtype).eps*100 n = 10 a = generate_random_dtype_array([n, n], dtype=dtype, rng=rng) gees, trexc = get_lapack_funcs(('gees', 'trexc'), dtype=dtype) result = gees(lambda x: None, a, overwrite_a=False) assert_equal(result[-1], 0) t = result[0] z = result[-3] d2 = t[6, 6] if dtype in COMPLEX_DTYPES: assert_allclose(t, np.triu(t), rtol=0, atol=atol) > assert_allclose(z @ t @ z.conj().T, a, rtol=0, atol=atol) E AssertionError: E Not equal to tolerance rtol=0, atol=1.19209e-05 E E Mismatched elements: 90 / 100 (90%) E Max absolute difference among violations: 1.7934515 E Max relative difference among violations: 108.192535 E ACTUAL: array([[ 0.191519, 0.627355, 0.470859, 0.738663, 0.882606, 0.013233, E 0.299779, 0.787379, 0.950014, 0.987813], E [ 0.357818, -1.292456, -0.434711, -0.628658, -0.768923, 1.150699,... E DESIRED: array([[0.191519, 0.622109, 0.437728, 0.785359, 0.779976, 0.272593, E 0.276464, 0.801872, 0.958139, 0.875933], E [0.357817, 0.500995, 0.683463, 0.712702, 0.370251, 0.561196,... scipy/linalg/tests/test_lapack.py:3082: AssertionError ___________________________ test_gges_tgexc[float32] ___________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype = @pytest.mark.parametrize('dtype', DTYPES) def test_gges_tgexc(dtype): rng = np.random.RandomState(1234) atol = np.finfo(dtype).eps*100 n = 10 a = generate_random_dtype_array([n, n], dtype=dtype, rng=rng) b = generate_random_dtype_array([n, n], dtype=dtype, rng=rng) gges, tgexc = get_lapack_funcs(('gges', 'tgexc'), dtype=dtype) result = gges(lambda x: None, a, b, overwrite_a=False, overwrite_b=False) assert_equal(result[-1], 0) s = result[0] t = result[1] q = result[-4] z = result[-3] d1 = s[0, 0] / t[0, 0] d2 = s[6, 6] / t[6, 6] if dtype in COMPLEX_DTYPES: assert_allclose(s, np.triu(s), rtol=0, atol=atol) assert_allclose(t, np.triu(t), rtol=0, atol=atol) > assert_allclose(q @ s @ z.conj().T, a, rtol=0, atol=atol) E AssertionError: E Not equal to tolerance rtol=0, atol=1.19209e-05 E E Mismatched elements: 100 / 100 (100%) E Max absolute difference among violations: 53127.227 E Max relative difference among violations: 1.1492838e+06 E ACTUAL: array([[-22011.674 , 38394.85 , -18651.336 , 5778.901 , E -6372.533 , 22811.621 , -29943.121 , -36783.723 , E 14936.146 , 10570.51 ],... E DESIRED: array([[0.191519, 0.622109, 0.437728, 0.785359, 0.779976, 0.272593, E 0.276464, 0.801872, 0.958139, 0.875933], E [0.357817, 0.500995, 0.683463, 0.712702, 0.370251, 0.561196,... scipy/linalg/tests/test_lapack.py:3164: AssertionError ___________________________ test_gees_trsen[float32] ___________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype = @pytest.mark.parametrize('dtype', DTYPES) def test_gees_trsen(dtype): rng = np.random.RandomState(1234) atol = np.finfo(dtype).eps*100 n = 10 a = generate_random_dtype_array([n, n], dtype=dtype, rng=rng) gees, trsen, trsen_lwork = get_lapack_funcs( ('gees', 'trsen', 'trsen_lwork'), dtype=dtype) result = gees(lambda x: None, a, overwrite_a=False) assert_equal(result[-1], 0) t = result[0] z = result[-3] d2 = t[6, 6] if dtype in COMPLEX_DTYPES: assert_allclose(t, np.triu(t), rtol=0, atol=atol) > assert_allclose(z @ t @ z.conj().T, a, rtol=0, atol=atol) E AssertionError: E Not equal to tolerance rtol=0, atol=1.19209e-05 E E Mismatched elements: 90 / 100 (90%) E Max absolute difference among violations: 1.7934515 E Max relative difference among violations: 108.192535 E ACTUAL: array([[ 0.191519, 0.627355, 0.470859, 0.738663, 0.882606, 0.013233, E 0.299779, 0.787379, 0.950014, 0.987813], E [ 0.357818, -1.292456, -0.434711, -0.628658, -0.768923, 1.150699,... E DESIRED: array([[0.191519, 0.622109, 0.437728, 0.785359, 0.779976, 0.272593, E 0.276464, 0.801872, 0.958139, 0.875933], E [0.357817, 0.500995, 0.683463, 0.712702, 0.370251, 0.561196,... scipy/linalg/tests/test_lapack.py:3208: AssertionError ___________________________ test_gges_tgsen[float32] ___________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype = @pytest.mark.parametrize('dtype', DTYPES) def test_gges_tgsen(dtype): rng = np.random.RandomState(1234) atol = np.finfo(dtype).eps*100 n = 10 a = generate_random_dtype_array([n, n], dtype=dtype, rng=rng) b = generate_random_dtype_array([n, n], dtype=dtype, rng=rng) gges, tgsen, tgsen_lwork = get_lapack_funcs( ('gges', 'tgsen', 'tgsen_lwork'), dtype=dtype) result = gges(lambda x: None, a, b, overwrite_a=False, overwrite_b=False) assert_equal(result[-1], 0) s = result[0] t = result[1] q = result[-4] z = result[-3] d1 = s[0, 0] / t[0, 0] d2 = s[6, 6] / t[6, 6] if dtype in COMPLEX_DTYPES: assert_allclose(s, np.triu(s), rtol=0, atol=atol) assert_allclose(t, np.triu(t), rtol=0, atol=atol) > assert_allclose(q @ s @ z.conj().T, a, rtol=0, atol=atol) E AssertionError: E Not equal to tolerance rtol=0, atol=1.19209e-05 E E Mismatched elements: 100 / 100 (100%) E Max absolute difference among violations: 53127.227 E Max relative difference among violations: 1.1492838e+06 E ACTUAL: array([[-22011.674 , 38394.85 , -18651.336 , 5778.901 , E -6372.533 , 22811.621 , -29943.121 , -36783.723 , E 14936.146 , 10570.51 ],... E DESIRED: array([[0.191519, 0.622109, 0.437728, 0.785359, 0.779976, 0.272593, E 0.276464, 0.801872, 0.958139, 0.875933], E [0.357817, 0.500995, 0.683463, 0.712702, 0.370251, 0.561196,... scipy/linalg/tests/test_lapack.py:3334: AssertionError ___________________________ test_tgsyl[0-N-float32] ____________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype = , trans = 'N', ijob = 0 @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('trans', ('N', 'T')) @pytest.mark.parametrize('ijob', [0, 1, 2, 3, 4]) def test_tgsyl(dtype, trans, ijob): atol = 1e-3 if dtype == np.float32 else 1e-10 rng = np.random.default_rng(1685779866898198) m, n = 10, 15 a, d, *_ = qz(rng.uniform(-10, 10, [m, m]).astype(dtype), rng.uniform(-10, 10, [m, m]).astype(dtype), output='real') b, e, *_ = qz(rng.uniform(-10, 10, [n, n]).astype(dtype), rng.uniform(-10, 10, [n, n]).astype(dtype), output='real') c = rng.uniform(-2, 2, [m, n]).astype(dtype) f = rng.uniform(-2, 2, [m, n]).astype(dtype) tgsyl = get_lapack_funcs(('tgsyl'), dtype=dtype) rout, lout, scale, dif, info = tgsyl(a, b, c, d, e, f, trans=trans, ijob=ijob) > assert info == 0, "INFO is non-zero" E AssertionError: INFO is non-zero E assert 5 == 0 scipy/linalg/tests/test_lapack.py:3440: AssertionError ___________________________ test_tgsyl[0-T-float32] ____________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype = , trans = 'T', ijob = 0 @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('trans', ('N', 'T')) @pytest.mark.parametrize('ijob', [0, 1, 2, 3, 4]) def test_tgsyl(dtype, trans, ijob): atol = 1e-3 if dtype == np.float32 else 1e-10 rng = np.random.default_rng(1685779866898198) m, n = 10, 15 a, d, *_ = qz(rng.uniform(-10, 10, [m, m]).astype(dtype), rng.uniform(-10, 10, [m, m]).astype(dtype), output='real') b, e, *_ = qz(rng.uniform(-10, 10, [n, n]).astype(dtype), rng.uniform(-10, 10, [n, n]).astype(dtype), output='real') c = rng.uniform(-2, 2, [m, n]).astype(dtype) f = rng.uniform(-2, 2, [m, n]).astype(dtype) tgsyl = get_lapack_funcs(('tgsyl'), dtype=dtype) rout, lout, scale, dif, info = tgsyl(a, b, c, d, e, f, trans=trans, ijob=ijob) > assert info == 0, "INFO is non-zero" E AssertionError: INFO is non-zero E assert 5 == 0 scipy/linalg/tests/test_lapack.py:3440: AssertionError ___________________________ test_tgsyl[1-N-float32] ____________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype = , trans = 'N', ijob = 1 @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('trans', ('N', 'T')) @pytest.mark.parametrize('ijob', [0, 1, 2, 3, 4]) def test_tgsyl(dtype, trans, ijob): atol = 1e-3 if dtype == np.float32 else 1e-10 rng = np.random.default_rng(1685779866898198) m, n = 10, 15 a, d, *_ = qz(rng.uniform(-10, 10, [m, m]).astype(dtype), rng.uniform(-10, 10, [m, m]).astype(dtype), output='real') b, e, *_ = qz(rng.uniform(-10, 10, [n, n]).astype(dtype), rng.uniform(-10, 10, [n, n]).astype(dtype), output='real') c = rng.uniform(-2, 2, [m, n]).astype(dtype) f = rng.uniform(-2, 2, [m, n]).astype(dtype) tgsyl = get_lapack_funcs(('tgsyl'), dtype=dtype) rout, lout, scale, dif, info = tgsyl(a, b, c, d, e, f, trans=trans, ijob=ijob) > assert info == 0, "INFO is non-zero" E AssertionError: INFO is non-zero E assert 5 == 0 scipy/linalg/tests/test_lapack.py:3440: AssertionError ___________________________ test_tgsyl[1-T-float32] ____________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype = , trans = 'T', ijob = 1 @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('trans', ('N', 'T')) @pytest.mark.parametrize('ijob', [0, 1, 2, 3, 4]) def test_tgsyl(dtype, trans, ijob): atol = 1e-3 if dtype == np.float32 else 1e-10 rng = np.random.default_rng(1685779866898198) m, n = 10, 15 a, d, *_ = qz(rng.uniform(-10, 10, [m, m]).astype(dtype), rng.uniform(-10, 10, [m, m]).astype(dtype), output='real') b, e, *_ = qz(rng.uniform(-10, 10, [n, n]).astype(dtype), rng.uniform(-10, 10, [n, n]).astype(dtype), output='real') c = rng.uniform(-2, 2, [m, n]).astype(dtype) f = rng.uniform(-2, 2, [m, n]).astype(dtype) tgsyl = get_lapack_funcs(('tgsyl'), dtype=dtype) rout, lout, scale, dif, info = tgsyl(a, b, c, d, e, f, trans=trans, ijob=ijob) > assert info == 0, "INFO is non-zero" E AssertionError: INFO is non-zero E assert 5 == 0 scipy/linalg/tests/test_lapack.py:3440: AssertionError ___________________________ test_tgsyl[2-N-float32] ____________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype = , trans = 'N', ijob = 2 @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('trans', ('N', 'T')) @pytest.mark.parametrize('ijob', [0, 1, 2, 3, 4]) def test_tgsyl(dtype, trans, ijob): atol = 1e-3 if dtype == np.float32 else 1e-10 rng = np.random.default_rng(1685779866898198) m, n = 10, 15 a, d, *_ = qz(rng.uniform(-10, 10, [m, m]).astype(dtype), rng.uniform(-10, 10, [m, m]).astype(dtype), output='real') b, e, *_ = qz(rng.uniform(-10, 10, [n, n]).astype(dtype), rng.uniform(-10, 10, [n, n]).astype(dtype), output='real') c = rng.uniform(-2, 2, [m, n]).astype(dtype) f = rng.uniform(-2, 2, [m, n]).astype(dtype) tgsyl = get_lapack_funcs(('tgsyl'), dtype=dtype) rout, lout, scale, dif, info = tgsyl(a, b, c, d, e, f, trans=trans, ijob=ijob) > assert info == 0, "INFO is non-zero" E AssertionError: INFO is non-zero E assert 5 == 0 scipy/linalg/tests/test_lapack.py:3440: AssertionError ___________________________ test_tgsyl[2-T-float32] ____________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype = , trans = 'T', ijob = 2 @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('trans', ('N', 'T')) @pytest.mark.parametrize('ijob', [0, 1, 2, 3, 4]) def test_tgsyl(dtype, trans, ijob): atol = 1e-3 if dtype == np.float32 else 1e-10 rng = np.random.default_rng(1685779866898198) m, n = 10, 15 a, d, *_ = qz(rng.uniform(-10, 10, [m, m]).astype(dtype), rng.uniform(-10, 10, [m, m]).astype(dtype), output='real') b, e, *_ = qz(rng.uniform(-10, 10, [n, n]).astype(dtype), rng.uniform(-10, 10, [n, n]).astype(dtype), output='real') c = rng.uniform(-2, 2, [m, n]).astype(dtype) f = rng.uniform(-2, 2, [m, n]).astype(dtype) tgsyl = get_lapack_funcs(('tgsyl'), dtype=dtype) rout, lout, scale, dif, info = tgsyl(a, b, c, d, e, f, trans=trans, ijob=ijob) > assert info == 0, "INFO is non-zero" E AssertionError: INFO is non-zero E assert 5 == 0 scipy/linalg/tests/test_lapack.py:3440: AssertionError ___________________________ test_tgsyl[3-N-float32] ____________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype = , trans = 'N', ijob = 3 @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('trans', ('N', 'T')) @pytest.mark.parametrize('ijob', [0, 1, 2, 3, 4]) def test_tgsyl(dtype, trans, ijob): atol = 1e-3 if dtype == np.float32 else 1e-10 rng = np.random.default_rng(1685779866898198) m, n = 10, 15 a, d, *_ = qz(rng.uniform(-10, 10, [m, m]).astype(dtype), rng.uniform(-10, 10, [m, m]).astype(dtype), output='real') b, e, *_ = qz(rng.uniform(-10, 10, [n, n]).astype(dtype), rng.uniform(-10, 10, [n, n]).astype(dtype), output='real') c = rng.uniform(-2, 2, [m, n]).astype(dtype) f = rng.uniform(-2, 2, [m, n]).astype(dtype) tgsyl = get_lapack_funcs(('tgsyl'), dtype=dtype) rout, lout, scale, dif, info = tgsyl(a, b, c, d, e, f, trans=trans, ijob=ijob) > assert info == 0, "INFO is non-zero" E AssertionError: INFO is non-zero E assert 5 == 0 scipy/linalg/tests/test_lapack.py:3440: AssertionError ___________________________ test_tgsyl[3-T-float32] ____________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype = , trans = 'T', ijob = 3 @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('trans', ('N', 'T')) @pytest.mark.parametrize('ijob', [0, 1, 2, 3, 4]) def test_tgsyl(dtype, trans, ijob): atol = 1e-3 if dtype == np.float32 else 1e-10 rng = np.random.default_rng(1685779866898198) m, n = 10, 15 a, d, *_ = qz(rng.uniform(-10, 10, [m, m]).astype(dtype), rng.uniform(-10, 10, [m, m]).astype(dtype), output='real') b, e, *_ = qz(rng.uniform(-10, 10, [n, n]).astype(dtype), rng.uniform(-10, 10, [n, n]).astype(dtype), output='real') c = rng.uniform(-2, 2, [m, n]).astype(dtype) f = rng.uniform(-2, 2, [m, n]).astype(dtype) tgsyl = get_lapack_funcs(('tgsyl'), dtype=dtype) rout, lout, scale, dif, info = tgsyl(a, b, c, d, e, f, trans=trans, ijob=ijob) > assert info == 0, "INFO is non-zero" E AssertionError: INFO is non-zero E assert 5 == 0 scipy/linalg/tests/test_lapack.py:3440: AssertionError ___________________________ test_tgsyl[4-N-float32] ____________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype = , trans = 'N', ijob = 4 @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('trans', ('N', 'T')) @pytest.mark.parametrize('ijob', [0, 1, 2, 3, 4]) def test_tgsyl(dtype, trans, ijob): atol = 1e-3 if dtype == np.float32 else 1e-10 rng = np.random.default_rng(1685779866898198) m, n = 10, 15 a, d, *_ = qz(rng.uniform(-10, 10, [m, m]).astype(dtype), rng.uniform(-10, 10, [m, m]).astype(dtype), output='real') b, e, *_ = qz(rng.uniform(-10, 10, [n, n]).astype(dtype), rng.uniform(-10, 10, [n, n]).astype(dtype), output='real') c = rng.uniform(-2, 2, [m, n]).astype(dtype) f = rng.uniform(-2, 2, [m, n]).astype(dtype) tgsyl = get_lapack_funcs(('tgsyl'), dtype=dtype) rout, lout, scale, dif, info = tgsyl(a, b, c, d, e, f, trans=trans, ijob=ijob) > assert info == 0, "INFO is non-zero" E AssertionError: INFO is non-zero E assert 5 == 0 scipy/linalg/tests/test_lapack.py:3440: AssertionError ___________________________ test_tgsyl[4-T-float32] ____________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype = , trans = 'T', ijob = 4 @pytest.mark.parametrize('dtype', REAL_DTYPES) @pytest.mark.parametrize('trans', ('N', 'T')) @pytest.mark.parametrize('ijob', [0, 1, 2, 3, 4]) def test_tgsyl(dtype, trans, ijob): atol = 1e-3 if dtype == np.float32 else 1e-10 rng = np.random.default_rng(1685779866898198) m, n = 10, 15 a, d, *_ = qz(rng.uniform(-10, 10, [m, m]).astype(dtype), rng.uniform(-10, 10, [m, m]).astype(dtype), output='real') b, e, *_ = qz(rng.uniform(-10, 10, [n, n]).astype(dtype), rng.uniform(-10, 10, [n, n]).astype(dtype), output='real') c = rng.uniform(-2, 2, [m, n]).astype(dtype) f = rng.uniform(-2, 2, [m, n]).astype(dtype) tgsyl = get_lapack_funcs(('tgsyl'), dtype=dtype) rout, lout, scale, dif, info = tgsyl(a, b, c, d, e, f, trans=trans, ijob=ijob) > assert info == 0, "INFO is non-zero" E AssertionError: INFO is non-zero E assert 5 == 0 scipy/linalg/tests/test_lapack.py:3440: AssertionError _________________________ test_sy_hetrs[1-float32-sy] __________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 mtype = 'sy', dtype = , lower = 1 @pytest.mark.parametrize('mtype', ['sy', 'he']) # matrix type @pytest.mark.parametrize('dtype', DTYPES) @pytest.mark.parametrize('lower', (0, 1)) def test_sy_hetrs(mtype, dtype, lower): if mtype == 'he' and dtype in REAL_DTYPES: pytest.skip("hetrs not for real dtypes.") rng = np.random.default_rng(1723059677121834) n, nrhs = 20, 5 if dtype in COMPLEX_DTYPES: A = (rng.uniform(size=(n, n)) + rng.uniform(size=(n, n))*1j).astype(dtype) else: A = rng.uniform(size=(n, n)).astype(dtype) A = A + A.T if mtype == 'sy' else A + A.conj().T b = rng.uniform(size=(n, nrhs)).astype(dtype) names = f'{mtype}trf', f'{mtype}trf_lwork', f'{mtype}trs' trf, trf_lwork, trs = get_lapack_funcs(names, dtype=dtype) lwork = trf_lwork(n, lower=lower) ldu, ipiv, info = trf(A, lwork=lwork, lower=lower) assert info == 0 x, info = trs(a=ldu, ipiv=ipiv, b=b, lower=lower) assert info == 0 eps = np.finfo(dtype).eps > assert_allclose(A@x, b, atol=100*n*eps) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=0.000238419 E E Mismatched elements: 80 / 100 (80%) E Max absolute difference among violations: 11.73869 E Max relative difference among violations: 1510.5378 E ACTUAL: array([[-0.399153, -0.316291, 0.282109, 0.691296, 0.648665], E [-1.311267, -1.051199, -0.365233, 0.210485, 0.182646], E [ 0.921148, 1.655342, -0.923086, 5.034077, 0.652573],... E DESIRED: array([[9.959620e-01, 4.381807e-01, 8.422804e-01, 6.467606e-01, E 6.486652e-01], E [7.269852e-01, 1.695140e-01, 7.176984e-01, 8.817261e-01,... scipy/linalg/tests/test_lapack.py:3490: AssertionError _________________________ test_sy_he_tri[1-float32-sy] _________________________ [gw0] linux -- Python 3.14.0 /usr/bin/python3 dtype = , lower = 1, mtype = 'sy' @pytest.mark.parametrize('mtype', ['sy', 'he']) # matrix type @pytest.mark.parametrize('dtype', DTYPES) @pytest.mark.parametrize('lower', (0, 1)) def test_sy_he_tri(dtype, lower, mtype): if mtype == 'he' and dtype in REAL_DTYPES: pytest.skip("hetri not for real dtypes.") if sysconfig.get_platform() == 'win-arm64' and dtype in COMPLEX_DTYPES: pytest.skip("Test segfaulting on win-arm64 in CI, see gh-23133") rng = np.random.default_rng(1723059677121834) n = 20 A = rng.random((n, n)) + rng.random((n, n))*1j if np.issubdtype(dtype, np.floating): A = A.real A = A.astype(dtype) A = A + A.T if mtype == 'sy' else A + A.conj().T names = f'{mtype}trf', f'{mtype}tri' trf, tri = get_lapack_funcs(names, dtype=dtype) ldu, ipiv, info = trf(A, lower=lower) assert info == 0 A_inv, info = tri(a=ldu, ipiv=ipiv, lower=lower) assert info == 0 eps = np.finfo(dtype).eps ref = np.linalg.inv(A) if lower: > assert_allclose(np.tril(A_inv), np.tril(ref), atol=100*n*eps) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=0.000238419 E E Mismatched elements: 90 / 400 (22.5%) E Max absolute difference among violations: 2.1832983 E Max relative difference among violations: 117.62608 E ACTUAL: array([[ 0.512772, 0. , 0. , 0. , 0. , 0. , E 0. , 0. , 0. , 0. , 0. , 0. , E 0. , 0. , 0. , 0. , 0. , 0. ,... E DESIRED: array([[-0.095034, 0. , 0. , 0. , 0. , 0. , E 0. , 0. , 0. , 0. , 0. , 0. , E 0. , 0. , 0. , 0. , 0. , 0. ,... scipy/linalg/tests/test_lapack.py:3518: AssertionError _____________________________ test_symmetric_modes _____________________________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 num_parallel_threads = 1 @pytest.mark.iterations(1) @pytest.mark.thread_unsafe def test_symmetric_modes(num_parallel_threads): assert num_parallel_threads == 1 params = SymmetricParams() k = 2 symmetric = True for D in params.real_test_cases: for typ in 'fd': for which in params.which: for mattype in params.mattypes: for (sigma, modes) in params.sigmas_modes.items(): for mode in modes: > eval_evec(symmetric, D, typ, k, which, None, sigma, mattype, None, mode) scipy/sparse/linalg/_eigen/arpack/tests/test_arpack.py:414: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ symmetric = True, d = , typ = 'f', k = 2, which = 'LM', v0 = None sigma = None, mattype = , OPpart = None mode = 'normal' def eval_evec(symmetric, d, typ, k, which, v0=None, sigma=None, mattype=np.asarray, OPpart=None, mode='normal'): general = ('bmat' in d) if symmetric: eigs_func = eigsh else: eigs_func = eigs if general: err = (f"error for {eigs_func.__name__}:general, typ={typ}, which={which}, " f"sigma={sigma}, mattype={mattype.__name__}," f" OPpart={OPpart}, mode={mode}") else: err = (f"error for {eigs_func.__name__}:standard, typ={typ}, which={which}, " f"sigma={sigma}, mattype={mattype.__name__}, " f"OPpart={OPpart}, mode={mode}") a = d['mat'].astype(typ) ac = mattype(a) if general: b = d['bmat'].astype(typ) bc = mattype(b) # get exact eigenvalues exact_eval = d['eval'].astype(typ.upper()) ind = argsort_which(exact_eval, typ, k, which, sigma, OPpart, mode) exact_eval = exact_eval[ind] # compute arpack eigenvalues kwargs = dict(which=which, v0=v0, sigma=sigma) if eigs_func is eigsh: kwargs['mode'] = mode else: kwargs['OPpart'] = OPpart # compute suitable tolerances kwargs['tol'], rtol, atol = _get_test_tolerance(typ, mattype, d, which) # on rare occasions, ARPACK routines return results that are proper # eigenvalues and -vectors, but not necessarily the ones requested in # the parameter which. This is inherent to the Krylov methods, and # should not be treated as a failure. If such a rare situation # occurs, the calculation is tried again (but at most a few times). ntries = 0 while ntries < 5: # solve if general: try: eigenvalues, evec = eigs_func(ac, k, bc, **kwargs) except ArpackNoConvergence: kwargs['maxiter'] = 20*a.shape[0] eigenvalues, evec = eigs_func(ac, k, bc, **kwargs) else: try: eigenvalues, evec = eigs_func(ac, k, **kwargs) except ArpackNoConvergence: kwargs['maxiter'] = 20*a.shape[0] eigenvalues, evec = eigs_func(ac, k, **kwargs) ind = argsort_which(eigenvalues, typ, k, which, sigma, OPpart, mode) eigenvalues = eigenvalues[ind] evec = evec[:, ind] try: # check eigenvalues assert_allclose_cc(eigenvalues, exact_eval, rtol=rtol, atol=atol, err_msg=err) check_evecs = True except AssertionError: check_evecs = False ntries += 1 if check_evecs: # check eigenvectors LHS = np.dot(a, evec) if general: RHS = eigenvalues * np.dot(b, evec) else: RHS = eigenvalues * evec > assert_allclose(LHS, RHS, rtol=rtol, atol=atol, err_msg=err) E AssertionError: E Not equal to tolerance rtol=0.00178814, atol=0.000357628 E error for eigsh:standard, typ=f, which=LM, sigma=None, mattype=csr_array, OPpart=None, mode=normal E Mismatched elements: 1 / 12 (8.33%) E Max absolute difference among violations: 0.00192574 E Max relative difference among violations: 0.00395301 E ACTUAL: array([[-0.639668, 3.371117], E [ 0.270082, 4.576406], E [ 0.485232, 3.157976],... E DESIRED: array([[-0.639323, 3.371118], E [ 0.270536, 4.576406], E [ 0.487158, 3.157975],... scipy/sparse/linalg/_eigen/arpack/tests/test_arpack.py:274: AssertionError ________________________ test_symmetric_starting_vector ________________________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 actual = array([9.908295], dtype=float32) desired = array([9.884308+0.j], dtype=complex64) kw = {'atol': np.float32(0.00035762787), 'err_msg': 'error for eigsh:standard, typ=f, which=LM, sigma=None, mattype=asarray, OPpart=None, mode=normal', 'rtol': np.float32(0.00035762787)} def assert_allclose_cc(actual, desired, **kw): """Almost equal or complex conjugates almost equal""" try: > assert_allclose(actual, desired, **kw) E AssertionError: E Not equal to tolerance rtol=0.000357628, atol=0.000357628 E error for eigsh:standard, typ=f, which=LM, sigma=None, mattype=asarray, OPpart=None, mode=normal E Mismatched elements: 1 / 1 (100%) E Max absolute difference among violations: 0.02398682 E Max relative difference among violations: 0.00242676 E ACTUAL: array([9.908295], dtype=float32) E DESIRED: array([9.884308+0.j], dtype=complex64) scipy/sparse/linalg/_eigen/arpack/tests/test_arpack.py:140: AssertionError During handling of the above exception, another exception occurred: def test_symmetric_starting_vector(): params = SymmetricParams() symmetric = True for k in [1, 2, 3, 4, 5]: for D in params.real_test_cases: for typ in 'fd': v0 = random.rand(len(D['v0'])).astype(typ) > eval_evec(symmetric, D, typ, k, 'LM', v0) scipy/sparse/linalg/_eigen/arpack/tests/test_arpack.py:440: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/sparse/linalg/_eigen/arpack/tests/test_arpack.py:278: in eval_evec assert_allclose_cc(eigenvalues, exact_eval, rtol=rtol, atol=atol, err_msg=err) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ actual = array([9.908295], dtype=float32) desired = array([9.884308+0.j], dtype=complex64) kw = {'atol': np.float32(0.00035762787), 'err_msg': 'error for eigsh:standard, typ=f, which=LM, sigma=None, mattype=asarray, OPpart=None, mode=normal', 'rtol': np.float32(0.00035762787)} def assert_allclose_cc(actual, desired, **kw): """Almost equal or complex conjugates almost equal""" try: assert_allclose(actual, desired, **kw) except AssertionError: > assert_allclose(actual, conj(desired), **kw) E AssertionError: E Not equal to tolerance rtol=0.000357628, atol=0.000357628 E error for eigsh:standard, typ=f, which=LM, sigma=None, mattype=asarray, OPpart=None, mode=normal E Mismatched elements: 1 / 1 (100%) E Max absolute difference among violations: 0.02398682 E Max relative difference among violations: 0.00242676 E ACTUAL: array([9.908295], dtype=float32) E DESIRED: array([9.884308-0.j], dtype=complex64) scipy/sparse/linalg/_eigen/arpack/tests/test_arpack.py:142: AssertionError _________________________ test_real_nonsymmetric_modes _________________________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 actual = array([0.43930206+0.j, 0.13942519+0.j], dtype=complex64) desired = array([0.42248264+0.j, 0.13942589+0.j], dtype=complex64) kw = {'atol': np.float32(0.00035762787), 'err_msg': 'error for eigs:standard, typ=f, which=LM, sigma=0.1, mattype=csr_array, OPpart=r, mode=normal', 'rtol': np.float32(0.0017881393)} def assert_allclose_cc(actual, desired, **kw): """Almost equal or complex conjugates almost equal""" try: > assert_allclose(actual, desired, **kw) E AssertionError: E Not equal to tolerance rtol=0.00178814, atol=0.000357628 E error for eigs:standard, typ=f, which=LM, sigma=0.1, mattype=csr_array, OPpart=r, mode=normal E Mismatched elements: 1 / 2 (50%) E Max absolute difference among violations: 0.01681942 E Max relative difference among violations: 0.03981091 E ACTUAL: array([0.439302+0.j, 0.139425+0.j], dtype=complex64) E DESIRED: array([0.422483+0.j, 0.139426+0.j], dtype=complex64) scipy/sparse/linalg/_eigen/arpack/tests/test_arpack.py:140: AssertionError During handling of the above exception, another exception occurred: def test_real_nonsymmetric_modes(): params = NonSymmetricParams() k = 2 symmetric = False for D in params.real_test_cases: for typ in 'fd': for which in params.which: for mattype in params.mattypes: for sigma, OPparts in params.sigmas_OPparts.items(): for OPpart in OPparts: > eval_evec(symmetric, D, typ, k, which, None, sigma, mattype, OPpart) scipy/sparse/linalg/_eigen/arpack/tests/test_arpack.py:468: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ scipy/sparse/linalg/_eigen/arpack/tests/test_arpack.py:278: in eval_evec assert_allclose_cc(eigenvalues, exact_eval, rtol=rtol, atol=atol, err_msg=err) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ actual = array([0.43930206+0.j, 0.13942519+0.j], dtype=complex64) desired = array([0.42248264+0.j, 0.13942589+0.j], dtype=complex64) kw = {'atol': np.float32(0.00035762787), 'err_msg': 'error for eigs:standard, typ=f, which=LM, sigma=0.1, mattype=csr_array, OPpart=r, mode=normal', 'rtol': np.float32(0.0017881393)} def assert_allclose_cc(actual, desired, **kw): """Almost equal or complex conjugates almost equal""" try: assert_allclose(actual, desired, **kw) except AssertionError: > assert_allclose(actual, conj(desired), **kw) E AssertionError: E Not equal to tolerance rtol=0.00178814, atol=0.000357628 E error for eigs:standard, typ=f, which=LM, sigma=0.1, mattype=csr_array, OPpart=r, mode=normal E Mismatched elements: 1 / 2 (50%) E Max absolute difference among violations: 0.01681942 E Max relative difference among violations: 0.03981091 E ACTUAL: array([0.439302+0.j, 0.139425+0.j], dtype=complex64) E DESIRED: array([0.422483-0.j, 0.139426-0.j], dtype=complex64) scipy/sparse/linalg/_eigen/arpack/tests/test_arpack.py:142: AssertionError ________________________ test_regression_arpackng_1315 _________________________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 def test_regression_arpackng_1315(): # Check that issue arpack-ng/#1315 is not present. # Adapted from arpack-ng/TESTS/bug_1315_single.c # If this fails, then the installed ARPACK library is faulty. for dtype in [np.float32, np.float64]: np.random.seed(1234) w0 = np.arange(1, 1000+1).astype(dtype) A = diags_array([w0], offsets=[0], shape=(1000, 1000)) v0 = np.random.rand(1000).astype(dtype) w, v = eigs(A, k=9, ncv=2*9+1, which="LM", v0=v0) > assert_allclose(np.sort(w), np.sort(w0[-9:]), rtol=1e-4) E AssertionError: E Not equal to tolerance rtol=0.0001, atol=0 E E Mismatched elements: 9 / 9 (100%) E Max absolute difference among violations: 2449.0063 E Max relative difference among violations: 2.468418 E ACTUAL: array([ 170.09843-2306.6135j, 170.09843+2306.6135j, E 661.004 -1689.0494j, 701.57227-1836.4645j, E 701.57227+1836.4645j, 1775.0624 -770.345j ,... E DESIRED: array([ 992., 993., 994., 995., 996., 997., 998., 999., 1000.], E dtype=float32) scipy/sparse/linalg/_eigen/arpack/tests/test_arpack.py:633: AssertionError _________________________ test_real_eigs_real_k_subset _________________________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 def test_real_eigs_real_k_subset(): rng = np.random.default_rng(2) n = 10 A = random_array(shape=(n, n), density=0.5, rng=rng) A.data *= 2 A.data -= 1 A += A.T # make symmetric to test real eigenvalues v0 = np.ones(n) whichs = ['LM', 'SM', 'LR', 'SR', 'LI', 'SI'] dtypes = [np.float32, np.float64] for which, sigma, dtype in itertools.product(whichs, [None, 0, 5], dtypes): prev_w = np.array([], dtype=dtype) eps = np.finfo(dtype).eps for k in range(1, 9): w, z = eigs(A.astype(dtype), k=k, which=which, sigma=sigma, v0=v0.astype(dtype), tol=0) > assert_allclose(np.linalg.norm(A.dot(z) - z * w), 0, atol=np.sqrt(eps)) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=0.000345267 E E Mismatched elements: 1 / 1 (100%) E Max absolute difference among violations: 6.53882198 E Max relative difference among violations: inf E ACTUAL: array(6.538822) E DESIRED: array(0) scipy/sparse/linalg/_eigen/arpack/tests/test_arpack.py:711: AssertionError ______________ test_b_orthonormalize[float32-int32-float32-10-50] ______________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 n = 50, m = 10, Vdtype = , Bdtype = BVdtype = @pytest.mark.parametrize("n", [50]) @pytest.mark.parametrize("m", [1, 2, 10]) @pytest.mark.filterwarnings("ignore:Casting complex values to real") @pytest.mark.parametrize("Vdtype", INEXACTDTYPES) @pytest.mark.parametrize("Bdtype", ALLDTYPES) @pytest.mark.parametrize("BVdtype", INEXACTDTYPES) def test_b_orthonormalize(n, m, Vdtype, Bdtype, BVdtype): """Test B-orthonormalization by Cholesky with callable 'B'. The function '_b_orthonormalize' is key in LOBPCG but may lead to numerical instabilities. The input vectors are often badly scaled, so the function needs scale-invariant Cholesky; see https://netlib.org/lapack/lawnspdf/lawn14.pdf. """ rnd = np.random.RandomState(0) X = rnd.standard_normal((n, m)).astype(Vdtype) Xcopy = np.copy(X) vals = np.arange(1, n+1, dtype=float) B = dia_array(([vals], [0]), shape=(n, n)).astype(Bdtype) BX = B @ X BX = BX.astype(BVdtype) is_all_complex = (np.issubdtype(Vdtype, np.complexfloating) and np.issubdtype(BVdtype, np.complexfloating)) is_all_notcomplex = (not np.issubdtype(Vdtype, np.complexfloating) and not np.issubdtype(Bdtype, np.complexfloating) and not np.issubdtype(BVdtype, np.complexfloating)) # All complex or all not complex can calculate in-place check_inplace = is_all_complex or is_all_notcomplex # np.longdouble tol cannot be achieved on most systems atol = m * n * max(np.finfo(Vdtype).eps, np.finfo(BVdtype).eps, np.finfo(np.float64).eps) Xo, BXo, _ = _b_orthonormalize(lambda v: B @ v, X, BX) if check_inplace: # Check in-place > assert_equal(X, Xo) E AssertionError: E Arrays are not equal E E Mismatched elements: 500 / 500 (100%) E ACTUAL: array([[ 1.764052, 0.400157, 0.978738, 2.240893, 1.867558, -0.977278, E 0.950088, -0.151357, -0.103219, 0.410599], E [ 0.144044, 1.454273, 0.761038, 0.121675, 0.443863, 0.333674,... E DESIRED: array(None, dtype=object) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:111: AssertionError ______________ test_b_orthonormalize[float32-int64-float32-10-50] ______________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 n = 50, m = 10, Vdtype = , Bdtype = BVdtype = @pytest.mark.parametrize("n", [50]) @pytest.mark.parametrize("m", [1, 2, 10]) @pytest.mark.filterwarnings("ignore:Casting complex values to real") @pytest.mark.parametrize("Vdtype", INEXACTDTYPES) @pytest.mark.parametrize("Bdtype", ALLDTYPES) @pytest.mark.parametrize("BVdtype", INEXACTDTYPES) def test_b_orthonormalize(n, m, Vdtype, Bdtype, BVdtype): """Test B-orthonormalization by Cholesky with callable 'B'. The function '_b_orthonormalize' is key in LOBPCG but may lead to numerical instabilities. The input vectors are often badly scaled, so the function needs scale-invariant Cholesky; see https://netlib.org/lapack/lawnspdf/lawn14.pdf. """ rnd = np.random.RandomState(0) X = rnd.standard_normal((n, m)).astype(Vdtype) Xcopy = np.copy(X) vals = np.arange(1, n+1, dtype=float) B = dia_array(([vals], [0]), shape=(n, n)).astype(Bdtype) BX = B @ X BX = BX.astype(BVdtype) is_all_complex = (np.issubdtype(Vdtype, np.complexfloating) and np.issubdtype(BVdtype, np.complexfloating)) is_all_notcomplex = (not np.issubdtype(Vdtype, np.complexfloating) and not np.issubdtype(Bdtype, np.complexfloating) and not np.issubdtype(BVdtype, np.complexfloating)) # All complex or all not complex can calculate in-place check_inplace = is_all_complex or is_all_notcomplex # np.longdouble tol cannot be achieved on most systems atol = m * n * max(np.finfo(Vdtype).eps, np.finfo(BVdtype).eps, np.finfo(np.float64).eps) Xo, BXo, _ = _b_orthonormalize(lambda v: B @ v, X, BX) if check_inplace: # Check in-place > assert_equal(X, Xo) E AssertionError: E Arrays are not equal E E Mismatched elements: 500 / 500 (100%) E ACTUAL: array([[ 1.764052, 0.400157, 0.978738, 2.240893, 1.867558, -0.977278, E 0.950088, -0.151357, -0.103219, 0.410599], E [ 0.144044, 1.454273, 0.761038, 0.121675, 0.443863, 0.333674,... E DESIRED: array(None, dtype=object) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:111: AssertionError ____________ test_b_orthonormalize[float32-longlong-float32-10-50] _____________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 n = 50, m = 10, Vdtype = Bdtype = , BVdtype = @pytest.mark.parametrize("n", [50]) @pytest.mark.parametrize("m", [1, 2, 10]) @pytest.mark.filterwarnings("ignore:Casting complex values to real") @pytest.mark.parametrize("Vdtype", INEXACTDTYPES) @pytest.mark.parametrize("Bdtype", ALLDTYPES) @pytest.mark.parametrize("BVdtype", INEXACTDTYPES) def test_b_orthonormalize(n, m, Vdtype, Bdtype, BVdtype): """Test B-orthonormalization by Cholesky with callable 'B'. The function '_b_orthonormalize' is key in LOBPCG but may lead to numerical instabilities. The input vectors are often badly scaled, so the function needs scale-invariant Cholesky; see https://netlib.org/lapack/lawnspdf/lawn14.pdf. """ rnd = np.random.RandomState(0) X = rnd.standard_normal((n, m)).astype(Vdtype) Xcopy = np.copy(X) vals = np.arange(1, n+1, dtype=float) B = dia_array(([vals], [0]), shape=(n, n)).astype(Bdtype) BX = B @ X BX = BX.astype(BVdtype) is_all_complex = (np.issubdtype(Vdtype, np.complexfloating) and np.issubdtype(BVdtype, np.complexfloating)) is_all_notcomplex = (not np.issubdtype(Vdtype, np.complexfloating) and not np.issubdtype(Bdtype, np.complexfloating) and not np.issubdtype(BVdtype, np.complexfloating)) # All complex or all not complex can calculate in-place check_inplace = is_all_complex or is_all_notcomplex # np.longdouble tol cannot be achieved on most systems atol = m * n * max(np.finfo(Vdtype).eps, np.finfo(BVdtype).eps, np.finfo(np.float64).eps) Xo, BXo, _ = _b_orthonormalize(lambda v: B @ v, X, BX) if check_inplace: # Check in-place > assert_equal(X, Xo) E AssertionError: E Arrays are not equal E E Mismatched elements: 500 / 500 (100%) E ACTUAL: array([[ 1.764052, 0.400157, 0.978738, 2.240893, 1.867558, -0.977278, E 0.950088, -0.151357, -0.103219, 0.410599], E [ 0.144044, 1.454273, 0.761038, 0.121675, 0.443863, 0.333674,... E DESIRED: array(None, dtype=object) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:111: AssertionError _____________ test_b_orthonormalize[float32-uint32-float32-10-50] ______________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 n = 50, m = 10, Vdtype = Bdtype = , BVdtype = @pytest.mark.parametrize("n", [50]) @pytest.mark.parametrize("m", [1, 2, 10]) @pytest.mark.filterwarnings("ignore:Casting complex values to real") @pytest.mark.parametrize("Vdtype", INEXACTDTYPES) @pytest.mark.parametrize("Bdtype", ALLDTYPES) @pytest.mark.parametrize("BVdtype", INEXACTDTYPES) def test_b_orthonormalize(n, m, Vdtype, Bdtype, BVdtype): """Test B-orthonormalization by Cholesky with callable 'B'. The function '_b_orthonormalize' is key in LOBPCG but may lead to numerical instabilities. The input vectors are often badly scaled, so the function needs scale-invariant Cholesky; see https://netlib.org/lapack/lawnspdf/lawn14.pdf. """ rnd = np.random.RandomState(0) X = rnd.standard_normal((n, m)).astype(Vdtype) Xcopy = np.copy(X) vals = np.arange(1, n+1, dtype=float) B = dia_array(([vals], [0]), shape=(n, n)).astype(Bdtype) BX = B @ X BX = BX.astype(BVdtype) is_all_complex = (np.issubdtype(Vdtype, np.complexfloating) and np.issubdtype(BVdtype, np.complexfloating)) is_all_notcomplex = (not np.issubdtype(Vdtype, np.complexfloating) and not np.issubdtype(Bdtype, np.complexfloating) and not np.issubdtype(BVdtype, np.complexfloating)) # All complex or all not complex can calculate in-place check_inplace = is_all_complex or is_all_notcomplex # np.longdouble tol cannot be achieved on most systems atol = m * n * max(np.finfo(Vdtype).eps, np.finfo(BVdtype).eps, np.finfo(np.float64).eps) Xo, BXo, _ = _b_orthonormalize(lambda v: B @ v, X, BX) if check_inplace: # Check in-place > assert_equal(X, Xo) E AssertionError: E Arrays are not equal E E Mismatched elements: 500 / 500 (100%) E ACTUAL: array([[ 1.764052, 0.400157, 0.978738, 2.240893, 1.867558, -0.977278, E 0.950088, -0.151357, -0.103219, 0.410599], E [ 0.144044, 1.454273, 0.761038, 0.121675, 0.443863, 0.333674,... E DESIRED: array(None, dtype=object) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:111: AssertionError _____________ test_b_orthonormalize[float32-uint64-float32-10-50] ______________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 n = 50, m = 10, Vdtype = Bdtype = , BVdtype = @pytest.mark.parametrize("n", [50]) @pytest.mark.parametrize("m", [1, 2, 10]) @pytest.mark.filterwarnings("ignore:Casting complex values to real") @pytest.mark.parametrize("Vdtype", INEXACTDTYPES) @pytest.mark.parametrize("Bdtype", ALLDTYPES) @pytest.mark.parametrize("BVdtype", INEXACTDTYPES) def test_b_orthonormalize(n, m, Vdtype, Bdtype, BVdtype): """Test B-orthonormalization by Cholesky with callable 'B'. The function '_b_orthonormalize' is key in LOBPCG but may lead to numerical instabilities. The input vectors are often badly scaled, so the function needs scale-invariant Cholesky; see https://netlib.org/lapack/lawnspdf/lawn14.pdf. """ rnd = np.random.RandomState(0) X = rnd.standard_normal((n, m)).astype(Vdtype) Xcopy = np.copy(X) vals = np.arange(1, n+1, dtype=float) B = dia_array(([vals], [0]), shape=(n, n)).astype(Bdtype) BX = B @ X BX = BX.astype(BVdtype) is_all_complex = (np.issubdtype(Vdtype, np.complexfloating) and np.issubdtype(BVdtype, np.complexfloating)) is_all_notcomplex = (not np.issubdtype(Vdtype, np.complexfloating) and not np.issubdtype(Bdtype, np.complexfloating) and not np.issubdtype(BVdtype, np.complexfloating)) # All complex or all not complex can calculate in-place check_inplace = is_all_complex or is_all_notcomplex # np.longdouble tol cannot be achieved on most systems atol = m * n * max(np.finfo(Vdtype).eps, np.finfo(BVdtype).eps, np.finfo(np.float64).eps) Xo, BXo, _ = _b_orthonormalize(lambda v: B @ v, X, BX) if check_inplace: # Check in-place > assert_equal(X, Xo) E AssertionError: E Arrays are not equal E E Mismatched elements: 500 / 500 (100%) E ACTUAL: array([[ 1.764052, 0.400157, 0.978738, 2.240893, 1.867558, -0.977278, E 0.950088, -0.151357, -0.103219, 0.410599], E [ 0.144044, 1.454273, 0.761038, 0.121675, 0.443863, 0.333674,... E DESIRED: array(None, dtype=object) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:111: AssertionError ____________ test_b_orthonormalize[float32-ulonglong-float32-10-50] ____________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 n = 50, m = 10, Vdtype = Bdtype = , BVdtype = @pytest.mark.parametrize("n", [50]) @pytest.mark.parametrize("m", [1, 2, 10]) @pytest.mark.filterwarnings("ignore:Casting complex values to real") @pytest.mark.parametrize("Vdtype", INEXACTDTYPES) @pytest.mark.parametrize("Bdtype", ALLDTYPES) @pytest.mark.parametrize("BVdtype", INEXACTDTYPES) def test_b_orthonormalize(n, m, Vdtype, Bdtype, BVdtype): """Test B-orthonormalization by Cholesky with callable 'B'. The function '_b_orthonormalize' is key in LOBPCG but may lead to numerical instabilities. The input vectors are often badly scaled, so the function needs scale-invariant Cholesky; see https://netlib.org/lapack/lawnspdf/lawn14.pdf. """ rnd = np.random.RandomState(0) X = rnd.standard_normal((n, m)).astype(Vdtype) Xcopy = np.copy(X) vals = np.arange(1, n+1, dtype=float) B = dia_array(([vals], [0]), shape=(n, n)).astype(Bdtype) BX = B @ X BX = BX.astype(BVdtype) is_all_complex = (np.issubdtype(Vdtype, np.complexfloating) and np.issubdtype(BVdtype, np.complexfloating)) is_all_notcomplex = (not np.issubdtype(Vdtype, np.complexfloating) and not np.issubdtype(Bdtype, np.complexfloating) and not np.issubdtype(BVdtype, np.complexfloating)) # All complex or all not complex can calculate in-place check_inplace = is_all_complex or is_all_notcomplex # np.longdouble tol cannot be achieved on most systems atol = m * n * max(np.finfo(Vdtype).eps, np.finfo(BVdtype).eps, np.finfo(np.float64).eps) Xo, BXo, _ = _b_orthonormalize(lambda v: B @ v, X, BX) if check_inplace: # Check in-place > assert_equal(X, Xo) E AssertionError: E Arrays are not equal E E Mismatched elements: 500 / 500 (100%) E ACTUAL: array([[ 1.764052, 0.400157, 0.978738, 2.240893, 1.867558, -0.977278, E 0.950088, -0.151357, -0.103219, 0.410599], E [ 0.144044, 1.454273, 0.761038, 0.121675, 0.443863, 0.333674,... E DESIRED: array(None, dtype=object) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:111: AssertionError _____________ test_b_orthonormalize[float32-float32-float32-10-50] _____________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 n = 50, m = 10, Vdtype = Bdtype = , BVdtype = @pytest.mark.parametrize("n", [50]) @pytest.mark.parametrize("m", [1, 2, 10]) @pytest.mark.filterwarnings("ignore:Casting complex values to real") @pytest.mark.parametrize("Vdtype", INEXACTDTYPES) @pytest.mark.parametrize("Bdtype", ALLDTYPES) @pytest.mark.parametrize("BVdtype", INEXACTDTYPES) def test_b_orthonormalize(n, m, Vdtype, Bdtype, BVdtype): """Test B-orthonormalization by Cholesky with callable 'B'. The function '_b_orthonormalize' is key in LOBPCG but may lead to numerical instabilities. The input vectors are often badly scaled, so the function needs scale-invariant Cholesky; see https://netlib.org/lapack/lawnspdf/lawn14.pdf. """ rnd = np.random.RandomState(0) X = rnd.standard_normal((n, m)).astype(Vdtype) Xcopy = np.copy(X) vals = np.arange(1, n+1, dtype=float) B = dia_array(([vals], [0]), shape=(n, n)).astype(Bdtype) BX = B @ X BX = BX.astype(BVdtype) is_all_complex = (np.issubdtype(Vdtype, np.complexfloating) and np.issubdtype(BVdtype, np.complexfloating)) is_all_notcomplex = (not np.issubdtype(Vdtype, np.complexfloating) and not np.issubdtype(Bdtype, np.complexfloating) and not np.issubdtype(BVdtype, np.complexfloating)) # All complex or all not complex can calculate in-place check_inplace = is_all_complex or is_all_notcomplex # np.longdouble tol cannot be achieved on most systems atol = m * n * max(np.finfo(Vdtype).eps, np.finfo(BVdtype).eps, np.finfo(np.float64).eps) Xo, BXo, _ = _b_orthonormalize(lambda v: B @ v, X, BX) if check_inplace: # Check in-place > assert_equal(X, Xo) E AssertionError: E Arrays are not equal E E Mismatched elements: 500 / 500 (100%) E ACTUAL: array([[ 1.764052, 0.400157, 0.978738, 2.240893, 1.867558, -0.977278, E 0.950088, -0.151357, -0.103219, 0.410599], E [ 0.144044, 1.454273, 0.761038, 0.121675, 0.443863, 0.333674,... E DESIRED: array(None, dtype=object) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:111: AssertionError _____________ test_b_orthonormalize[float32-float64-float32-10-50] _____________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 n = 50, m = 10, Vdtype = Bdtype = , BVdtype = @pytest.mark.parametrize("n", [50]) @pytest.mark.parametrize("m", [1, 2, 10]) @pytest.mark.filterwarnings("ignore:Casting complex values to real") @pytest.mark.parametrize("Vdtype", INEXACTDTYPES) @pytest.mark.parametrize("Bdtype", ALLDTYPES) @pytest.mark.parametrize("BVdtype", INEXACTDTYPES) def test_b_orthonormalize(n, m, Vdtype, Bdtype, BVdtype): """Test B-orthonormalization by Cholesky with callable 'B'. The function '_b_orthonormalize' is key in LOBPCG but may lead to numerical instabilities. The input vectors are often badly scaled, so the function needs scale-invariant Cholesky; see https://netlib.org/lapack/lawnspdf/lawn14.pdf. """ rnd = np.random.RandomState(0) X = rnd.standard_normal((n, m)).astype(Vdtype) Xcopy = np.copy(X) vals = np.arange(1, n+1, dtype=float) B = dia_array(([vals], [0]), shape=(n, n)).astype(Bdtype) BX = B @ X BX = BX.astype(BVdtype) is_all_complex = (np.issubdtype(Vdtype, np.complexfloating) and np.issubdtype(BVdtype, np.complexfloating)) is_all_notcomplex = (not np.issubdtype(Vdtype, np.complexfloating) and not np.issubdtype(Bdtype, np.complexfloating) and not np.issubdtype(BVdtype, np.complexfloating)) # All complex or all not complex can calculate in-place check_inplace = is_all_complex or is_all_notcomplex # np.longdouble tol cannot be achieved on most systems atol = m * n * max(np.finfo(Vdtype).eps, np.finfo(BVdtype).eps, np.finfo(np.float64).eps) Xo, BXo, _ = _b_orthonormalize(lambda v: B @ v, X, BX) if check_inplace: # Check in-place > assert_equal(X, Xo) E AssertionError: E Arrays are not equal E E Mismatched elements: 500 / 500 (100%) E ACTUAL: array([[ 1.764052, 0.400157, 0.978738, 2.240893, 1.867558, -0.977278, E 0.950088, -0.151357, -0.103219, 0.410599], E [ 0.144044, 1.454273, 0.761038, 0.121675, 0.443863, 0.333674,... E DESIRED: array(None, dtype=object) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:111: AssertionError ___________ test_b_orthonormalize[float32-longdouble-float32-10-50] ____________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 n = 50, m = 10, Vdtype = Bdtype = , BVdtype = @pytest.mark.parametrize("n", [50]) @pytest.mark.parametrize("m", [1, 2, 10]) @pytest.mark.filterwarnings("ignore:Casting complex values to real") @pytest.mark.parametrize("Vdtype", INEXACTDTYPES) @pytest.mark.parametrize("Bdtype", ALLDTYPES) @pytest.mark.parametrize("BVdtype", INEXACTDTYPES) def test_b_orthonormalize(n, m, Vdtype, Bdtype, BVdtype): """Test B-orthonormalization by Cholesky with callable 'B'. The function '_b_orthonormalize' is key in LOBPCG but may lead to numerical instabilities. The input vectors are often badly scaled, so the function needs scale-invariant Cholesky; see https://netlib.org/lapack/lawnspdf/lawn14.pdf. """ rnd = np.random.RandomState(0) X = rnd.standard_normal((n, m)).astype(Vdtype) Xcopy = np.copy(X) vals = np.arange(1, n+1, dtype=float) B = dia_array(([vals], [0]), shape=(n, n)).astype(Bdtype) BX = B @ X BX = BX.astype(BVdtype) is_all_complex = (np.issubdtype(Vdtype, np.complexfloating) and np.issubdtype(BVdtype, np.complexfloating)) is_all_notcomplex = (not np.issubdtype(Vdtype, np.complexfloating) and not np.issubdtype(Bdtype, np.complexfloating) and not np.issubdtype(BVdtype, np.complexfloating)) # All complex or all not complex can calculate in-place check_inplace = is_all_complex or is_all_notcomplex # np.longdouble tol cannot be achieved on most systems atol = m * n * max(np.finfo(Vdtype).eps, np.finfo(BVdtype).eps, np.finfo(np.float64).eps) Xo, BXo, _ = _b_orthonormalize(lambda v: B @ v, X, BX) if check_inplace: # Check in-place > assert_equal(X, Xo) E AssertionError: E Arrays are not equal E E Mismatched elements: 500 / 500 (100%) E ACTUAL: array([[ 1.764052, 0.400157, 0.978738, 2.240893, 1.867558, -0.977278, E 0.950088, -0.151357, -0.103219, 0.410599], E [ 0.144044, 1.454273, 0.761038, 0.121675, 0.443863, 0.333674,... E DESIRED: array(None, dtype=object) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:111: AssertionError ____________ test_b_orthonormalize[float32-complex64-float32-10-50] ____________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 n = 50, m = 10, Vdtype = Bdtype = , BVdtype = @pytest.mark.parametrize("n", [50]) @pytest.mark.parametrize("m", [1, 2, 10]) @pytest.mark.filterwarnings("ignore:Casting complex values to real") @pytest.mark.parametrize("Vdtype", INEXACTDTYPES) @pytest.mark.parametrize("Bdtype", ALLDTYPES) @pytest.mark.parametrize("BVdtype", INEXACTDTYPES) def test_b_orthonormalize(n, m, Vdtype, Bdtype, BVdtype): """Test B-orthonormalization by Cholesky with callable 'B'. The function '_b_orthonormalize' is key in LOBPCG but may lead to numerical instabilities. The input vectors are often badly scaled, so the function needs scale-invariant Cholesky; see https://netlib.org/lapack/lawnspdf/lawn14.pdf. """ rnd = np.random.RandomState(0) X = rnd.standard_normal((n, m)).astype(Vdtype) Xcopy = np.copy(X) vals = np.arange(1, n+1, dtype=float) B = dia_array(([vals], [0]), shape=(n, n)).astype(Bdtype) BX = B @ X BX = BX.astype(BVdtype) is_all_complex = (np.issubdtype(Vdtype, np.complexfloating) and np.issubdtype(BVdtype, np.complexfloating)) is_all_notcomplex = (not np.issubdtype(Vdtype, np.complexfloating) and not np.issubdtype(Bdtype, np.complexfloating) and not np.issubdtype(BVdtype, np.complexfloating)) # All complex or all not complex can calculate in-place check_inplace = is_all_complex or is_all_notcomplex # np.longdouble tol cannot be achieved on most systems atol = m * n * max(np.finfo(Vdtype).eps, np.finfo(BVdtype).eps, np.finfo(np.float64).eps) Xo, BXo, _ = _b_orthonormalize(lambda v: B @ v, X, BX) if check_inplace: # Check in-place assert_equal(X, Xo) assert_equal(id(X), id(Xo)) assert_equal(BX, BXo) assert_equal(id(BX), id(BXo)) # Check BXo > assert_allclose(B @ Xo, BXo, atol=atol, rtol=atol) ^^^^^^ E TypeError: unsupported operand type(s) for @: 'dia_array' and 'NoneType' scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:116: TypeError ___________ test_b_orthonormalize[float32-complex128-float32-10-50] ____________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 n = 50, m = 10, Vdtype = Bdtype = , BVdtype = @pytest.mark.parametrize("n", [50]) @pytest.mark.parametrize("m", [1, 2, 10]) @pytest.mark.filterwarnings("ignore:Casting complex values to real") @pytest.mark.parametrize("Vdtype", INEXACTDTYPES) @pytest.mark.parametrize("Bdtype", ALLDTYPES) @pytest.mark.parametrize("BVdtype", INEXACTDTYPES) def test_b_orthonormalize(n, m, Vdtype, Bdtype, BVdtype): """Test B-orthonormalization by Cholesky with callable 'B'. The function '_b_orthonormalize' is key in LOBPCG but may lead to numerical instabilities. The input vectors are often badly scaled, so the function needs scale-invariant Cholesky; see https://netlib.org/lapack/lawnspdf/lawn14.pdf. """ rnd = np.random.RandomState(0) X = rnd.standard_normal((n, m)).astype(Vdtype) Xcopy = np.copy(X) vals = np.arange(1, n+1, dtype=float) B = dia_array(([vals], [0]), shape=(n, n)).astype(Bdtype) BX = B @ X BX = BX.astype(BVdtype) is_all_complex = (np.issubdtype(Vdtype, np.complexfloating) and np.issubdtype(BVdtype, np.complexfloating)) is_all_notcomplex = (not np.issubdtype(Vdtype, np.complexfloating) and not np.issubdtype(Bdtype, np.complexfloating) and not np.issubdtype(BVdtype, np.complexfloating)) # All complex or all not complex can calculate in-place check_inplace = is_all_complex or is_all_notcomplex # np.longdouble tol cannot be achieved on most systems atol = m * n * max(np.finfo(Vdtype).eps, np.finfo(BVdtype).eps, np.finfo(np.float64).eps) Xo, BXo, _ = _b_orthonormalize(lambda v: B @ v, X, BX) if check_inplace: # Check in-place assert_equal(X, Xo) assert_equal(id(X), id(Xo)) assert_equal(BX, BXo) assert_equal(id(BX), id(BXo)) # Check BXo > assert_allclose(B @ Xo, BXo, atol=atol, rtol=atol) ^^^^^^ E TypeError: unsupported operand type(s) for @: 'dia_array' and 'NoneType' scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:116: TypeError ___________ test_b_orthonormalize[float32-clongdouble-float32-10-50] ___________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 n = 50, m = 10, Vdtype = Bdtype = , BVdtype = @pytest.mark.parametrize("n", [50]) @pytest.mark.parametrize("m", [1, 2, 10]) @pytest.mark.filterwarnings("ignore:Casting complex values to real") @pytest.mark.parametrize("Vdtype", INEXACTDTYPES) @pytest.mark.parametrize("Bdtype", ALLDTYPES) @pytest.mark.parametrize("BVdtype", INEXACTDTYPES) def test_b_orthonormalize(n, m, Vdtype, Bdtype, BVdtype): """Test B-orthonormalization by Cholesky with callable 'B'. The function '_b_orthonormalize' is key in LOBPCG but may lead to numerical instabilities. The input vectors are often badly scaled, so the function needs scale-invariant Cholesky; see https://netlib.org/lapack/lawnspdf/lawn14.pdf. """ rnd = np.random.RandomState(0) X = rnd.standard_normal((n, m)).astype(Vdtype) Xcopy = np.copy(X) vals = np.arange(1, n+1, dtype=float) B = dia_array(([vals], [0]), shape=(n, n)).astype(Bdtype) BX = B @ X BX = BX.astype(BVdtype) is_all_complex = (np.issubdtype(Vdtype, np.complexfloating) and np.issubdtype(BVdtype, np.complexfloating)) is_all_notcomplex = (not np.issubdtype(Vdtype, np.complexfloating) and not np.issubdtype(Bdtype, np.complexfloating) and not np.issubdtype(BVdtype, np.complexfloating)) # All complex or all not complex can calculate in-place check_inplace = is_all_complex or is_all_notcomplex # np.longdouble tol cannot be achieved on most systems atol = m * n * max(np.finfo(Vdtype).eps, np.finfo(BVdtype).eps, np.finfo(np.float64).eps) Xo, BXo, _ = _b_orthonormalize(lambda v: B @ v, X, BX) if check_inplace: # Check in-place assert_equal(X, Xo) assert_equal(id(X), id(Xo)) assert_equal(BX, BXo) assert_equal(id(BX), id(BXo)) # Check BXo > assert_allclose(B @ Xo, BXo, atol=atol, rtol=atol) ^^^^^^ E TypeError: unsupported operand type(s) for @: 'dia_array' and 'NoneType' scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:116: TypeError _____________ test_b_orthonormalize[float64-float32-float32-10-50] _____________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 n = 50, m = 10, Vdtype = Bdtype = , BVdtype = @pytest.mark.parametrize("n", [50]) @pytest.mark.parametrize("m", [1, 2, 10]) @pytest.mark.filterwarnings("ignore:Casting complex values to real") @pytest.mark.parametrize("Vdtype", INEXACTDTYPES) @pytest.mark.parametrize("Bdtype", ALLDTYPES) @pytest.mark.parametrize("BVdtype", INEXACTDTYPES) def test_b_orthonormalize(n, m, Vdtype, Bdtype, BVdtype): """Test B-orthonormalization by Cholesky with callable 'B'. The function '_b_orthonormalize' is key in LOBPCG but may lead to numerical instabilities. The input vectors are often badly scaled, so the function needs scale-invariant Cholesky; see https://netlib.org/lapack/lawnspdf/lawn14.pdf. """ rnd = np.random.RandomState(0) X = rnd.standard_normal((n, m)).astype(Vdtype) Xcopy = np.copy(X) vals = np.arange(1, n+1, dtype=float) B = dia_array(([vals], [0]), shape=(n, n)).astype(Bdtype) BX = B @ X BX = BX.astype(BVdtype) is_all_complex = (np.issubdtype(Vdtype, np.complexfloating) and np.issubdtype(BVdtype, np.complexfloating)) is_all_notcomplex = (not np.issubdtype(Vdtype, np.complexfloating) and not np.issubdtype(Bdtype, np.complexfloating) and not np.issubdtype(BVdtype, np.complexfloating)) # All complex or all not complex can calculate in-place check_inplace = is_all_complex or is_all_notcomplex # np.longdouble tol cannot be achieved on most systems atol = m * n * max(np.finfo(Vdtype).eps, np.finfo(BVdtype).eps, np.finfo(np.float64).eps) Xo, BXo, _ = _b_orthonormalize(lambda v: B @ v, X, BX) if check_inplace: # Check in-place assert_equal(X, Xo) assert_equal(id(X), id(Xo)) assert_equal(BX, BXo) assert_equal(id(BX), id(BXo)) # Check BXo assert_allclose(B @ Xo, BXo, atol=atol, rtol=atol) # Check B-orthonormality assert_allclose(Xo.T.conj() @ B @ Xo, np.identity(m), atol=atol, rtol=atol) # Repeat without BX in outputs X = np.copy(Xcopy) Xo1, BXo1, _ = _b_orthonormalize(lambda v: B @ v, X) > assert_allclose(Xo, Xo1, atol=atol, rtol=atol) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:123: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/numpy/testing/_private/utils.py:1706: in compare return np._core.numeric.isclose(x, y, rtol=rtol, atol=atol, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 5.11100404e-02, 1.06916474e-02, 3.60103920e-02, 6.46265820e-02, 5.08280694e-02, -3.03687546e-02, ..., -1.42853260e-02, -2.44860779e-02, -1.04591921e-02, -1.18070319e-02, 4.06584190e-03]], dtype=float32) b = array(None, dtype=object), rtol = array(5.9604645e-05, dtype=float32) atol = array(5.9604645e-05, dtype=float32), equal_nan = True @array_function_dispatch(_isclose_dispatcher) def isclose(a, b, rtol=1.e-5, atol=1.e-8, equal_nan=False): """ Returns a boolean array where two arrays are element-wise equal within a tolerance. The tolerance values are positive, typically very small numbers. The relative difference (`rtol` * abs(`b`)) and the absolute difference `atol` are added together to compare against the absolute difference between `a` and `b`. .. warning:: The default `atol` is not appropriate for comparing numbers with magnitudes much smaller than one (see Notes). Parameters ---------- a, b : array_like Input arrays to compare. rtol : array_like The relative tolerance parameter (see Notes). atol : array_like The absolute tolerance parameter (see Notes). equal_nan : bool Whether to compare NaN's as equal. If True, NaN's in `a` will be considered equal to NaN's in `b` in the output array. Returns ------- y : array_like Returns a boolean array of where `a` and `b` are equal within the given tolerance. If both `a` and `b` are scalars, returns a single boolean value. See Also -------- allclose math.isclose Notes ----- For finite values, isclose uses the following equation to test whether two floating point values are equivalent.:: absolute(a - b) <= (atol + rtol * absolute(b)) Unlike the built-in `math.isclose`, the above equation is not symmetric in `a` and `b` -- it assumes `b` is the reference value -- so that `isclose(a, b)` might be different from `isclose(b, a)`. The default value of `atol` is not appropriate when the reference value `b` has magnitude smaller than one. For example, it is unlikely that ``a = 1e-9`` and ``b = 2e-9`` should be considered "close", yet ``isclose(1e-9, 2e-9)`` is ``True`` with default settings. Be sure to select `atol` for the use case at hand, especially for defining the threshold below which a non-zero value in `a` will be considered "close" to a very small or zero value in `b`. `isclose` is not defined for non-numeric data types. :class:`bool` is considered a numeric data-type for this purpose. Examples -------- >>> import numpy as np >>> np.isclose([1e10,1e-7], [1.00001e10,1e-8]) array([ True, False]) >>> np.isclose([1e10,1e-8], [1.00001e10,1e-9]) array([ True, True]) >>> np.isclose([1e10,1e-8], [1.0001e10,1e-9]) array([False, True]) >>> np.isclose([1.0, np.nan], [1.0, np.nan]) array([ True, False]) >>> np.isclose([1.0, np.nan], [1.0, np.nan], equal_nan=True) array([ True, True]) >>> np.isclose([1e-8, 1e-7], [0.0, 0.0]) array([ True, False]) >>> np.isclose([1e-100, 1e-7], [0.0, 0.0], atol=0.0) array([False, False]) >>> np.isclose([1e-10, 1e-10], [1e-20, 0.0]) array([ True, True]) >>> np.isclose([1e-10, 1e-10], [1e-20, 0.999999e-10], atol=0.0) array([False, True]) """ # Turn all but python scalars into arrays. x, y, atol, rtol = ( a if isinstance(a, (int, float, complex)) else asanyarray(a) for a in (a, b, atol, rtol)) # Make sure y is an inexact type to avoid bad behavior on abs(MIN_INT). # This will cause casting of x later. Also, make sure to allow subclasses # (e.g., for numpy.ma). # NOTE: We explicitly allow timedelta, which used to work. This could # possibly be deprecated. See also gh-18286. # timedelta works if `atol` is an integer or also a timedelta. # Although, the default tolerances are unlikely to be useful if (dtype := getattr(y, "dtype", None)) is not None and dtype.kind != "m": dt = multiarray.result_type(y, 1.) y = asanyarray(y, dtype=dt) elif isinstance(y, int): y = float(y) # atol and rtol can be arrays if not (np.all(np.isfinite(atol)) and np.all(np.isfinite(rtol))): err_s = np.geterr()["invalid"] err_msg = f"One of rtol or atol is not valid, atol: {atol}, rtol: {rtol}" if err_s == "warn": warnings.warn(err_msg, RuntimeWarning, stacklevel=2) elif err_s == "raise": raise FloatingPointError(err_msg) elif err_s == "print": print(err_msg) with errstate(invalid='ignore'): > result = (less_equal(abs(x - y), atol + rtol * abs(y)) ^^^^^ & isfinite(y) | (x == y)) E TypeError: unsupported operand type(s) for -: 'float' and 'NoneType' /usr/lib64/python3.14/site-packages/numpy/_core/numeric.py:2496: TypeError ___________ test_b_orthonormalize[longdouble-float32-float32-10-50] ____________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 n = 50, m = 10, Vdtype = Bdtype = , BVdtype = @pytest.mark.parametrize("n", [50]) @pytest.mark.parametrize("m", [1, 2, 10]) @pytest.mark.filterwarnings("ignore:Casting complex values to real") @pytest.mark.parametrize("Vdtype", INEXACTDTYPES) @pytest.mark.parametrize("Bdtype", ALLDTYPES) @pytest.mark.parametrize("BVdtype", INEXACTDTYPES) def test_b_orthonormalize(n, m, Vdtype, Bdtype, BVdtype): """Test B-orthonormalization by Cholesky with callable 'B'. The function '_b_orthonormalize' is key in LOBPCG but may lead to numerical instabilities. The input vectors are often badly scaled, so the function needs scale-invariant Cholesky; see https://netlib.org/lapack/lawnspdf/lawn14.pdf. """ rnd = np.random.RandomState(0) X = rnd.standard_normal((n, m)).astype(Vdtype) Xcopy = np.copy(X) vals = np.arange(1, n+1, dtype=float) B = dia_array(([vals], [0]), shape=(n, n)).astype(Bdtype) BX = B @ X BX = BX.astype(BVdtype) is_all_complex = (np.issubdtype(Vdtype, np.complexfloating) and np.issubdtype(BVdtype, np.complexfloating)) is_all_notcomplex = (not np.issubdtype(Vdtype, np.complexfloating) and not np.issubdtype(Bdtype, np.complexfloating) and not np.issubdtype(BVdtype, np.complexfloating)) # All complex or all not complex can calculate in-place check_inplace = is_all_complex or is_all_notcomplex # np.longdouble tol cannot be achieved on most systems atol = m * n * max(np.finfo(Vdtype).eps, np.finfo(BVdtype).eps, np.finfo(np.float64).eps) Xo, BXo, _ = _b_orthonormalize(lambda v: B @ v, X, BX) if check_inplace: # Check in-place assert_equal(X, Xo) assert_equal(id(X), id(Xo)) assert_equal(BX, BXo) assert_equal(id(BX), id(BXo)) # Check BXo assert_allclose(B @ Xo, BXo, atol=atol, rtol=atol) # Check B-orthonormality assert_allclose(Xo.T.conj() @ B @ Xo, np.identity(m), atol=atol, rtol=atol) # Repeat without BX in outputs X = np.copy(Xcopy) Xo1, BXo1, _ = _b_orthonormalize(lambda v: B @ v, X) > assert_allclose(Xo, Xo1, atol=atol, rtol=atol) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:123: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/numpy/testing/_private/utils.py:1706: in compare return np._core.numeric.isclose(x, y, rtol=rtol, atol=atol, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 5.11100404e-02, 1.06916474e-02, 3.60103920e-02, 6.46265820e-02, 5.08280694e-02, -3.03687546e-02, ..., -1.42853260e-02, -2.44860779e-02, -1.04591921e-02, -1.18070319e-02, 4.06584190e-03]], dtype=float32) b = array(None, dtype=object), rtol = array(5.9604645e-05, dtype=float32) atol = array(5.9604645e-05, dtype=float32), equal_nan = True @array_function_dispatch(_isclose_dispatcher) def isclose(a, b, rtol=1.e-5, atol=1.e-8, equal_nan=False): """ Returns a boolean array where two arrays are element-wise equal within a tolerance. The tolerance values are positive, typically very small numbers. The relative difference (`rtol` * abs(`b`)) and the absolute difference `atol` are added together to compare against the absolute difference between `a` and `b`. .. warning:: The default `atol` is not appropriate for comparing numbers with magnitudes much smaller than one (see Notes). Parameters ---------- a, b : array_like Input arrays to compare. rtol : array_like The relative tolerance parameter (see Notes). atol : array_like The absolute tolerance parameter (see Notes). equal_nan : bool Whether to compare NaN's as equal. If True, NaN's in `a` will be considered equal to NaN's in `b` in the output array. Returns ------- y : array_like Returns a boolean array of where `a` and `b` are equal within the given tolerance. If both `a` and `b` are scalars, returns a single boolean value. See Also -------- allclose math.isclose Notes ----- For finite values, isclose uses the following equation to test whether two floating point values are equivalent.:: absolute(a - b) <= (atol + rtol * absolute(b)) Unlike the built-in `math.isclose`, the above equation is not symmetric in `a` and `b` -- it assumes `b` is the reference value -- so that `isclose(a, b)` might be different from `isclose(b, a)`. The default value of `atol` is not appropriate when the reference value `b` has magnitude smaller than one. For example, it is unlikely that ``a = 1e-9`` and ``b = 2e-9`` should be considered "close", yet ``isclose(1e-9, 2e-9)`` is ``True`` with default settings. Be sure to select `atol` for the use case at hand, especially for defining the threshold below which a non-zero value in `a` will be considered "close" to a very small or zero value in `b`. `isclose` is not defined for non-numeric data types. :class:`bool` is considered a numeric data-type for this purpose. Examples -------- >>> import numpy as np >>> np.isclose([1e10,1e-7], [1.00001e10,1e-8]) array([ True, False]) >>> np.isclose([1e10,1e-8], [1.00001e10,1e-9]) array([ True, True]) >>> np.isclose([1e10,1e-8], [1.0001e10,1e-9]) array([False, True]) >>> np.isclose([1.0, np.nan], [1.0, np.nan]) array([ True, False]) >>> np.isclose([1.0, np.nan], [1.0, np.nan], equal_nan=True) array([ True, True]) >>> np.isclose([1e-8, 1e-7], [0.0, 0.0]) array([ True, False]) >>> np.isclose([1e-100, 1e-7], [0.0, 0.0], atol=0.0) array([False, False]) >>> np.isclose([1e-10, 1e-10], [1e-20, 0.0]) array([ True, True]) >>> np.isclose([1e-10, 1e-10], [1e-20, 0.999999e-10], atol=0.0) array([False, True]) """ # Turn all but python scalars into arrays. x, y, atol, rtol = ( a if isinstance(a, (int, float, complex)) else asanyarray(a) for a in (a, b, atol, rtol)) # Make sure y is an inexact type to avoid bad behavior on abs(MIN_INT). # This will cause casting of x later. Also, make sure to allow subclasses # (e.g., for numpy.ma). # NOTE: We explicitly allow timedelta, which used to work. This could # possibly be deprecated. See also gh-18286. # timedelta works if `atol` is an integer or also a timedelta. # Although, the default tolerances are unlikely to be useful if (dtype := getattr(y, "dtype", None)) is not None and dtype.kind != "m": dt = multiarray.result_type(y, 1.) y = asanyarray(y, dtype=dt) elif isinstance(y, int): y = float(y) # atol and rtol can be arrays if not (np.all(np.isfinite(atol)) and np.all(np.isfinite(rtol))): err_s = np.geterr()["invalid"] err_msg = f"One of rtol or atol is not valid, atol: {atol}, rtol: {rtol}" if err_s == "warn": warnings.warn(err_msg, RuntimeWarning, stacklevel=2) elif err_s == "raise": raise FloatingPointError(err_msg) elif err_s == "print": print(err_msg) with errstate(invalid='ignore'): > result = (less_equal(abs(x - y), atol + rtol * abs(y)) ^^^^^ & isfinite(y) | (x == y)) E TypeError: unsupported operand type(s) for -: 'float' and 'NoneType' /usr/lib64/python3.14/site-packages/numpy/_core/numeric.py:2496: TypeError ____________ test_b_orthonormalize[complex64-float32-float32-10-50] ____________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 n = 50, m = 10, Vdtype = Bdtype = , BVdtype = @pytest.mark.parametrize("n", [50]) @pytest.mark.parametrize("m", [1, 2, 10]) @pytest.mark.filterwarnings("ignore:Casting complex values to real") @pytest.mark.parametrize("Vdtype", INEXACTDTYPES) @pytest.mark.parametrize("Bdtype", ALLDTYPES) @pytest.mark.parametrize("BVdtype", INEXACTDTYPES) def test_b_orthonormalize(n, m, Vdtype, Bdtype, BVdtype): """Test B-orthonormalization by Cholesky with callable 'B'. The function '_b_orthonormalize' is key in LOBPCG but may lead to numerical instabilities. The input vectors are often badly scaled, so the function needs scale-invariant Cholesky; see https://netlib.org/lapack/lawnspdf/lawn14.pdf. """ rnd = np.random.RandomState(0) X = rnd.standard_normal((n, m)).astype(Vdtype) Xcopy = np.copy(X) vals = np.arange(1, n+1, dtype=float) B = dia_array(([vals], [0]), shape=(n, n)).astype(Bdtype) BX = B @ X BX = BX.astype(BVdtype) is_all_complex = (np.issubdtype(Vdtype, np.complexfloating) and np.issubdtype(BVdtype, np.complexfloating)) is_all_notcomplex = (not np.issubdtype(Vdtype, np.complexfloating) and not np.issubdtype(Bdtype, np.complexfloating) and not np.issubdtype(BVdtype, np.complexfloating)) # All complex or all not complex can calculate in-place check_inplace = is_all_complex or is_all_notcomplex # np.longdouble tol cannot be achieved on most systems atol = m * n * max(np.finfo(Vdtype).eps, np.finfo(BVdtype).eps, np.finfo(np.float64).eps) Xo, BXo, _ = _b_orthonormalize(lambda v: B @ v, X, BX) if check_inplace: # Check in-place assert_equal(X, Xo) assert_equal(id(X), id(Xo)) assert_equal(BX, BXo) assert_equal(id(BX), id(BXo)) # Check BXo assert_allclose(B @ Xo, BXo, atol=atol, rtol=atol) # Check B-orthonormality assert_allclose(Xo.T.conj() @ B @ Xo, np.identity(m), atol=atol, rtol=atol) # Repeat without BX in outputs X = np.copy(Xcopy) Xo1, BXo1, _ = _b_orthonormalize(lambda v: B @ v, X) > assert_allclose(Xo, Xo1, atol=atol, rtol=atol) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:123: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/numpy/testing/_private/utils.py:1706: in compare return np._core.numeric.isclose(x, y, rtol=rtol, atol=atol, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 5.11100367e-02+0.j, 1.06916483e-02+0.j, 3.60103957e-02+0.j, 6.46265820e-02+0.j, 5.08280694e-02+0.... -2.44860779e-02+0.j, -1.04591921e-02+0.j, -1.18070301e-02+0.j, 4.06583864e-03+0.j]], dtype=complex64) b = array(None, dtype=object), rtol = array(5.9604645e-05, dtype=float32) atol = array(5.9604645e-05, dtype=float32), equal_nan = True @array_function_dispatch(_isclose_dispatcher) def isclose(a, b, rtol=1.e-5, atol=1.e-8, equal_nan=False): """ Returns a boolean array where two arrays are element-wise equal within a tolerance. The tolerance values are positive, typically very small numbers. The relative difference (`rtol` * abs(`b`)) and the absolute difference `atol` are added together to compare against the absolute difference between `a` and `b`. .. warning:: The default `atol` is not appropriate for comparing numbers with magnitudes much smaller than one (see Notes). Parameters ---------- a, b : array_like Input arrays to compare. rtol : array_like The relative tolerance parameter (see Notes). atol : array_like The absolute tolerance parameter (see Notes). equal_nan : bool Whether to compare NaN's as equal. If True, NaN's in `a` will be considered equal to NaN's in `b` in the output array. Returns ------- y : array_like Returns a boolean array of where `a` and `b` are equal within the given tolerance. If both `a` and `b` are scalars, returns a single boolean value. See Also -------- allclose math.isclose Notes ----- For finite values, isclose uses the following equation to test whether two floating point values are equivalent.:: absolute(a - b) <= (atol + rtol * absolute(b)) Unlike the built-in `math.isclose`, the above equation is not symmetric in `a` and `b` -- it assumes `b` is the reference value -- so that `isclose(a, b)` might be different from `isclose(b, a)`. The default value of `atol` is not appropriate when the reference value `b` has magnitude smaller than one. For example, it is unlikely that ``a = 1e-9`` and ``b = 2e-9`` should be considered "close", yet ``isclose(1e-9, 2e-9)`` is ``True`` with default settings. Be sure to select `atol` for the use case at hand, especially for defining the threshold below which a non-zero value in `a` will be considered "close" to a very small or zero value in `b`. `isclose` is not defined for non-numeric data types. :class:`bool` is considered a numeric data-type for this purpose. Examples -------- >>> import numpy as np >>> np.isclose([1e10,1e-7], [1.00001e10,1e-8]) array([ True, False]) >>> np.isclose([1e10,1e-8], [1.00001e10,1e-9]) array([ True, True]) >>> np.isclose([1e10,1e-8], [1.0001e10,1e-9]) array([False, True]) >>> np.isclose([1.0, np.nan], [1.0, np.nan]) array([ True, False]) >>> np.isclose([1.0, np.nan], [1.0, np.nan], equal_nan=True) array([ True, True]) >>> np.isclose([1e-8, 1e-7], [0.0, 0.0]) array([ True, False]) >>> np.isclose([1e-100, 1e-7], [0.0, 0.0], atol=0.0) array([False, False]) >>> np.isclose([1e-10, 1e-10], [1e-20, 0.0]) array([ True, True]) >>> np.isclose([1e-10, 1e-10], [1e-20, 0.999999e-10], atol=0.0) array([False, True]) """ # Turn all but python scalars into arrays. x, y, atol, rtol = ( a if isinstance(a, (int, float, complex)) else asanyarray(a) for a in (a, b, atol, rtol)) # Make sure y is an inexact type to avoid bad behavior on abs(MIN_INT). # This will cause casting of x later. Also, make sure to allow subclasses # (e.g., for numpy.ma). # NOTE: We explicitly allow timedelta, which used to work. This could # possibly be deprecated. See also gh-18286. # timedelta works if `atol` is an integer or also a timedelta. # Although, the default tolerances are unlikely to be useful if (dtype := getattr(y, "dtype", None)) is not None and dtype.kind != "m": dt = multiarray.result_type(y, 1.) y = asanyarray(y, dtype=dt) elif isinstance(y, int): y = float(y) # atol and rtol can be arrays if not (np.all(np.isfinite(atol)) and np.all(np.isfinite(rtol))): err_s = np.geterr()["invalid"] err_msg = f"One of rtol or atol is not valid, atol: {atol}, rtol: {rtol}" if err_s == "warn": warnings.warn(err_msg, RuntimeWarning, stacklevel=2) elif err_s == "raise": raise FloatingPointError(err_msg) elif err_s == "print": print(err_msg) with errstate(invalid='ignore'): > result = (less_equal(abs(x - y), atol + rtol * abs(y)) ^^^^^ & isfinite(y) | (x == y)) E TypeError: unsupported operand type(s) for -: 'complex' and 'NoneType' /usr/lib64/python3.14/site-packages/numpy/_core/numeric.py:2496: TypeError ___________ test_b_orthonormalize[complex128-float32-float32-10-50] ____________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 n = 50, m = 10, Vdtype = Bdtype = , BVdtype = @pytest.mark.parametrize("n", [50]) @pytest.mark.parametrize("m", [1, 2, 10]) @pytest.mark.filterwarnings("ignore:Casting complex values to real") @pytest.mark.parametrize("Vdtype", INEXACTDTYPES) @pytest.mark.parametrize("Bdtype", ALLDTYPES) @pytest.mark.parametrize("BVdtype", INEXACTDTYPES) def test_b_orthonormalize(n, m, Vdtype, Bdtype, BVdtype): """Test B-orthonormalization by Cholesky with callable 'B'. The function '_b_orthonormalize' is key in LOBPCG but may lead to numerical instabilities. The input vectors are often badly scaled, so the function needs scale-invariant Cholesky; see https://netlib.org/lapack/lawnspdf/lawn14.pdf. """ rnd = np.random.RandomState(0) X = rnd.standard_normal((n, m)).astype(Vdtype) Xcopy = np.copy(X) vals = np.arange(1, n+1, dtype=float) B = dia_array(([vals], [0]), shape=(n, n)).astype(Bdtype) BX = B @ X BX = BX.astype(BVdtype) is_all_complex = (np.issubdtype(Vdtype, np.complexfloating) and np.issubdtype(BVdtype, np.complexfloating)) is_all_notcomplex = (not np.issubdtype(Vdtype, np.complexfloating) and not np.issubdtype(Bdtype, np.complexfloating) and not np.issubdtype(BVdtype, np.complexfloating)) # All complex or all not complex can calculate in-place check_inplace = is_all_complex or is_all_notcomplex # np.longdouble tol cannot be achieved on most systems atol = m * n * max(np.finfo(Vdtype).eps, np.finfo(BVdtype).eps, np.finfo(np.float64).eps) Xo, BXo, _ = _b_orthonormalize(lambda v: B @ v, X, BX) if check_inplace: # Check in-place assert_equal(X, Xo) assert_equal(id(X), id(Xo)) assert_equal(BX, BXo) assert_equal(id(BX), id(BXo)) # Check BXo assert_allclose(B @ Xo, BXo, atol=atol, rtol=atol) # Check B-orthonormality assert_allclose(Xo.T.conj() @ B @ Xo, np.identity(m), atol=atol, rtol=atol) # Repeat without BX in outputs X = np.copy(Xcopy) Xo1, BXo1, _ = _b_orthonormalize(lambda v: B @ v, X) > assert_allclose(Xo, Xo1, atol=atol, rtol=atol) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:123: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/numpy/testing/_private/utils.py:1706: in compare return np._core.numeric.isclose(x, y, rtol=rtol, atol=atol, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 5.11100411e-02+0.j, 1.06916477e-02+0.j, 3.60103926e-02+0.j, 6.46265798e-02+0.j, 5.08280691e-02+0....42853264e-02+0.j, -2.44860778e-02+0.j, -1.04591921e-02+0.j, -1.18070319e-02+0.j, 4.06584208e-03+0.j]]) b = array(None, dtype=object), rtol = array(5.9604645e-05, dtype=float32) atol = array(5.9604645e-05, dtype=float32), equal_nan = True @array_function_dispatch(_isclose_dispatcher) def isclose(a, b, rtol=1.e-5, atol=1.e-8, equal_nan=False): """ Returns a boolean array where two arrays are element-wise equal within a tolerance. The tolerance values are positive, typically very small numbers. The relative difference (`rtol` * abs(`b`)) and the absolute difference `atol` are added together to compare against the absolute difference between `a` and `b`. .. warning:: The default `atol` is not appropriate for comparing numbers with magnitudes much smaller than one (see Notes). Parameters ---------- a, b : array_like Input arrays to compare. rtol : array_like The relative tolerance parameter (see Notes). atol : array_like The absolute tolerance parameter (see Notes). equal_nan : bool Whether to compare NaN's as equal. If True, NaN's in `a` will be considered equal to NaN's in `b` in the output array. Returns ------- y : array_like Returns a boolean array of where `a` and `b` are equal within the given tolerance. If both `a` and `b` are scalars, returns a single boolean value. See Also -------- allclose math.isclose Notes ----- For finite values, isclose uses the following equation to test whether two floating point values are equivalent.:: absolute(a - b) <= (atol + rtol * absolute(b)) Unlike the built-in `math.isclose`, the above equation is not symmetric in `a` and `b` -- it assumes `b` is the reference value -- so that `isclose(a, b)` might be different from `isclose(b, a)`. The default value of `atol` is not appropriate when the reference value `b` has magnitude smaller than one. For example, it is unlikely that ``a = 1e-9`` and ``b = 2e-9`` should be considered "close", yet ``isclose(1e-9, 2e-9)`` is ``True`` with default settings. Be sure to select `atol` for the use case at hand, especially for defining the threshold below which a non-zero value in `a` will be considered "close" to a very small or zero value in `b`. `isclose` is not defined for non-numeric data types. :class:`bool` is considered a numeric data-type for this purpose. Examples -------- >>> import numpy as np >>> np.isclose([1e10,1e-7], [1.00001e10,1e-8]) array([ True, False]) >>> np.isclose([1e10,1e-8], [1.00001e10,1e-9]) array([ True, True]) >>> np.isclose([1e10,1e-8], [1.0001e10,1e-9]) array([False, True]) >>> np.isclose([1.0, np.nan], [1.0, np.nan]) array([ True, False]) >>> np.isclose([1.0, np.nan], [1.0, np.nan], equal_nan=True) array([ True, True]) >>> np.isclose([1e-8, 1e-7], [0.0, 0.0]) array([ True, False]) >>> np.isclose([1e-100, 1e-7], [0.0, 0.0], atol=0.0) array([False, False]) >>> np.isclose([1e-10, 1e-10], [1e-20, 0.0]) array([ True, True]) >>> np.isclose([1e-10, 1e-10], [1e-20, 0.999999e-10], atol=0.0) array([False, True]) """ # Turn all but python scalars into arrays. x, y, atol, rtol = ( a if isinstance(a, (int, float, complex)) else asanyarray(a) for a in (a, b, atol, rtol)) # Make sure y is an inexact type to avoid bad behavior on abs(MIN_INT). # This will cause casting of x later. Also, make sure to allow subclasses # (e.g., for numpy.ma). # NOTE: We explicitly allow timedelta, which used to work. This could # possibly be deprecated. See also gh-18286. # timedelta works if `atol` is an integer or also a timedelta. # Although, the default tolerances are unlikely to be useful if (dtype := getattr(y, "dtype", None)) is not None and dtype.kind != "m": dt = multiarray.result_type(y, 1.) y = asanyarray(y, dtype=dt) elif isinstance(y, int): y = float(y) # atol and rtol can be arrays if not (np.all(np.isfinite(atol)) and np.all(np.isfinite(rtol))): err_s = np.geterr()["invalid"] err_msg = f"One of rtol or atol is not valid, atol: {atol}, rtol: {rtol}" if err_s == "warn": warnings.warn(err_msg, RuntimeWarning, stacklevel=2) elif err_s == "raise": raise FloatingPointError(err_msg) elif err_s == "print": print(err_msg) with errstate(invalid='ignore'): > result = (less_equal(abs(x - y), atol + rtol * abs(y)) ^^^^^ & isfinite(y) | (x == y)) E TypeError: unsupported operand type(s) for -: 'complex' and 'NoneType' /usr/lib64/python3.14/site-packages/numpy/_core/numeric.py:2496: TypeError ___________ test_b_orthonormalize[clongdouble-float32-float32-10-50] ___________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 n = 50, m = 10, Vdtype = Bdtype = , BVdtype = @pytest.mark.parametrize("n", [50]) @pytest.mark.parametrize("m", [1, 2, 10]) @pytest.mark.filterwarnings("ignore:Casting complex values to real") @pytest.mark.parametrize("Vdtype", INEXACTDTYPES) @pytest.mark.parametrize("Bdtype", ALLDTYPES) @pytest.mark.parametrize("BVdtype", INEXACTDTYPES) def test_b_orthonormalize(n, m, Vdtype, Bdtype, BVdtype): """Test B-orthonormalization by Cholesky with callable 'B'. The function '_b_orthonormalize' is key in LOBPCG but may lead to numerical instabilities. The input vectors are often badly scaled, so the function needs scale-invariant Cholesky; see https://netlib.org/lapack/lawnspdf/lawn14.pdf. """ rnd = np.random.RandomState(0) X = rnd.standard_normal((n, m)).astype(Vdtype) Xcopy = np.copy(X) vals = np.arange(1, n+1, dtype=float) B = dia_array(([vals], [0]), shape=(n, n)).astype(Bdtype) BX = B @ X BX = BX.astype(BVdtype) is_all_complex = (np.issubdtype(Vdtype, np.complexfloating) and np.issubdtype(BVdtype, np.complexfloating)) is_all_notcomplex = (not np.issubdtype(Vdtype, np.complexfloating) and not np.issubdtype(Bdtype, np.complexfloating) and not np.issubdtype(BVdtype, np.complexfloating)) # All complex or all not complex can calculate in-place check_inplace = is_all_complex or is_all_notcomplex # np.longdouble tol cannot be achieved on most systems atol = m * n * max(np.finfo(Vdtype).eps, np.finfo(BVdtype).eps, np.finfo(np.float64).eps) Xo, BXo, _ = _b_orthonormalize(lambda v: B @ v, X, BX) if check_inplace: # Check in-place assert_equal(X, Xo) assert_equal(id(X), id(Xo)) assert_equal(BX, BXo) assert_equal(id(BX), id(BXo)) # Check BXo assert_allclose(B @ Xo, BXo, atol=atol, rtol=atol) # Check B-orthonormality assert_allclose(Xo.T.conj() @ B @ Xo, np.identity(m), atol=atol, rtol=atol) # Repeat without BX in outputs X = np.copy(Xcopy) Xo1, BXo1, _ = _b_orthonormalize(lambda v: B @ v, X) > assert_allclose(Xo, Xo1, atol=atol, rtol=atol) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:123: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib64/python3.14/site-packages/numpy/testing/_private/utils.py:1706: in compare return np._core.numeric.isclose(x, y, rtol=rtol, atol=atol, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ a = array([[ 5.11100411e-02+0.j, 1.06916477e-02+0.j, 3.60103926e-02+0.j, 6.46265798e-02+0.j, 5.08280691e-02+0....42853264e-02+0.j, -2.44860778e-02+0.j, -1.04591921e-02+0.j, -1.18070319e-02+0.j, 4.06584208e-03+0.j]]) b = array(None, dtype=object), rtol = array(5.9604645e-05, dtype=float32) atol = array(5.9604645e-05, dtype=float32), equal_nan = True @array_function_dispatch(_isclose_dispatcher) def isclose(a, b, rtol=1.e-5, atol=1.e-8, equal_nan=False): """ Returns a boolean array where two arrays are element-wise equal within a tolerance. The tolerance values are positive, typically very small numbers. The relative difference (`rtol` * abs(`b`)) and the absolute difference `atol` are added together to compare against the absolute difference between `a` and `b`. .. warning:: The default `atol` is not appropriate for comparing numbers with magnitudes much smaller than one (see Notes). Parameters ---------- a, b : array_like Input arrays to compare. rtol : array_like The relative tolerance parameter (see Notes). atol : array_like The absolute tolerance parameter (see Notes). equal_nan : bool Whether to compare NaN's as equal. If True, NaN's in `a` will be considered equal to NaN's in `b` in the output array. Returns ------- y : array_like Returns a boolean array of where `a` and `b` are equal within the given tolerance. If both `a` and `b` are scalars, returns a single boolean value. See Also -------- allclose math.isclose Notes ----- For finite values, isclose uses the following equation to test whether two floating point values are equivalent.:: absolute(a - b) <= (atol + rtol * absolute(b)) Unlike the built-in `math.isclose`, the above equation is not symmetric in `a` and `b` -- it assumes `b` is the reference value -- so that `isclose(a, b)` might be different from `isclose(b, a)`. The default value of `atol` is not appropriate when the reference value `b` has magnitude smaller than one. For example, it is unlikely that ``a = 1e-9`` and ``b = 2e-9`` should be considered "close", yet ``isclose(1e-9, 2e-9)`` is ``True`` with default settings. Be sure to select `atol` for the use case at hand, especially for defining the threshold below which a non-zero value in `a` will be considered "close" to a very small or zero value in `b`. `isclose` is not defined for non-numeric data types. :class:`bool` is considered a numeric data-type for this purpose. Examples -------- >>> import numpy as np >>> np.isclose([1e10,1e-7], [1.00001e10,1e-8]) array([ True, False]) >>> np.isclose([1e10,1e-8], [1.00001e10,1e-9]) array([ True, True]) >>> np.isclose([1e10,1e-8], [1.0001e10,1e-9]) array([False, True]) >>> np.isclose([1.0, np.nan], [1.0, np.nan]) array([ True, False]) >>> np.isclose([1.0, np.nan], [1.0, np.nan], equal_nan=True) array([ True, True]) >>> np.isclose([1e-8, 1e-7], [0.0, 0.0]) array([ True, False]) >>> np.isclose([1e-100, 1e-7], [0.0, 0.0], atol=0.0) array([False, False]) >>> np.isclose([1e-10, 1e-10], [1e-20, 0.0]) array([ True, True]) >>> np.isclose([1e-10, 1e-10], [1e-20, 0.999999e-10], atol=0.0) array([False, True]) """ # Turn all but python scalars into arrays. x, y, atol, rtol = ( a if isinstance(a, (int, float, complex)) else asanyarray(a) for a in (a, b, atol, rtol)) # Make sure y is an inexact type to avoid bad behavior on abs(MIN_INT). # This will cause casting of x later. Also, make sure to allow subclasses # (e.g., for numpy.ma). # NOTE: We explicitly allow timedelta, which used to work. This could # possibly be deprecated. See also gh-18286. # timedelta works if `atol` is an integer or also a timedelta. # Although, the default tolerances are unlikely to be useful if (dtype := getattr(y, "dtype", None)) is not None and dtype.kind != "m": dt = multiarray.result_type(y, 1.) y = asanyarray(y, dtype=dt) elif isinstance(y, int): y = float(y) # atol and rtol can be arrays if not (np.all(np.isfinite(atol)) and np.all(np.isfinite(rtol))): err_s = np.geterr()["invalid"] err_msg = f"One of rtol or atol is not valid, atol: {atol}, rtol: {rtol}" if err_s == "warn": warnings.warn(err_msg, RuntimeWarning, stacklevel=2) elif err_s == "raise": raise FloatingPointError(err_msg) elif err_s == "print": print(err_msg) with errstate(invalid='ignore'): > result = (less_equal(abs(x - y), atol + rtol * abs(y)) ^^^^^ & isfinite(y) | (x == y)) E TypeError: unsupported operand type(s) for -: 'complex' and 'NoneType' /usr/lib64/python3.14/site-packages/numpy/_core/numeric.py:2496: TypeError ______________________ test_dtypes[array-float32-float32] ______________________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 vdtype = , mdtype = arr_type = @pytest.mark.parametrize("vdtype", INEXACTDTYPES) @pytest.mark.parametrize("mdtype", ALLDTYPES) @pytest.mark.parametrize("arr_type", [np.array, sparse.csr_array, sparse.coo_array]) def test_dtypes(vdtype, mdtype, arr_type): """Test lobpcg in various dtypes. """ rnd = np.random.RandomState(0) n = 12 m = 2 A = arr_type(np.diag(np.arange(1, n + 1)).astype(mdtype)) X = rnd.random((n, m)) X = X.astype(vdtype) eigvals, eigvecs = lobpcg(A, X, tol=1e-2, largest=False) > assert_allclose(eigvals, np.arange(1, 1 + m), atol=1e-1) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=0.1 E E Mismatched elements: 2 / 2 (100%) E Max absolute difference among violations: 2.8106122 E Max relative difference among violations: 2.05901217 E ACTUAL: array([3.059012, 4.810612], dtype=float32) E DESIRED: array([1, 2]) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:463: AssertionError ____________________ test_dtypes[csr_array-float32-float32] ____________________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 vdtype = , mdtype = arr_type = @pytest.mark.parametrize("vdtype", INEXACTDTYPES) @pytest.mark.parametrize("mdtype", ALLDTYPES) @pytest.mark.parametrize("arr_type", [np.array, sparse.csr_array, sparse.coo_array]) def test_dtypes(vdtype, mdtype, arr_type): """Test lobpcg in various dtypes. """ rnd = np.random.RandomState(0) n = 12 m = 2 A = arr_type(np.diag(np.arange(1, n + 1)).astype(mdtype)) X = rnd.random((n, m)) X = X.astype(vdtype) eigvals, eigvecs = lobpcg(A, X, tol=1e-2, largest=False) > assert_allclose(eigvals, np.arange(1, 1 + m), atol=1e-1) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=0.1 E E Mismatched elements: 2 / 2 (100%) E Max absolute difference among violations: 2.8106122 E Max relative difference among violations: 2.05901241 E ACTUAL: array([3.059012, 4.810612], dtype=float32) E DESIRED: array([1, 2]) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:463: AssertionError ____________________ test_dtypes[coo_array-float32-float32] ____________________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 vdtype = , mdtype = arr_type = @pytest.mark.parametrize("vdtype", INEXACTDTYPES) @pytest.mark.parametrize("mdtype", ALLDTYPES) @pytest.mark.parametrize("arr_type", [np.array, sparse.csr_array, sparse.coo_array]) def test_dtypes(vdtype, mdtype, arr_type): """Test lobpcg in various dtypes. """ rnd = np.random.RandomState(0) n = 12 m = 2 A = arr_type(np.diag(np.arange(1, n + 1)).astype(mdtype)) X = rnd.random((n, m)) X = X.astype(vdtype) eigvals, eigvecs = lobpcg(A, X, tol=1e-2, largest=False) > assert_allclose(eigvals, np.arange(1, 1 + m), atol=1e-1) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=0.1 E E Mismatched elements: 2 / 2 (100%) E Max absolute difference among violations: 2.8106122 E Max relative difference among violations: 2.05901241 E ACTUAL: array([3.059012, 4.810612], dtype=float32) E DESIRED: array([1, 2]) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:463: AssertionError ________________________ test_diagonal_data_types[1-15] ________________________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 n = 15, m = 1 @pytest.mark.slow @pytest.mark.parametrize("n", [15]) @pytest.mark.parametrize("m", [1, 2]) @pytest.mark.filterwarnings("ignore:Exited at iteration") @pytest.mark.filterwarnings("ignore:Exited postprocessing") def test_diagonal_data_types(n, m): """Check lobpcg for diagonal matrices for all matrix types. Constraints are imposed, so a dense eigensolver eig cannot run. """ rnd = np.random.RandomState(0) # Define the generalized eigenvalue problem Av = cBv # where (c, v) is a generalized eigenpair, # and where we choose A and B to be diagonal. vals = np.arange(1, n + 1) list_sparse_format = ['bsr', 'coo', 'csc', 'csr', 'dia', 'dok', 'lil'] for s_f_i, s_f in enumerate(list_sparse_format): As64 = dia_array(([vals * vals], [0]), shape=(n, n)).asformat(s_f) As32 = As64.astype(np.float32) Af64 = As64.toarray() Af32 = Af64.astype(np.float32) def As32f(x): return As32 @ x As32LO = LinearOperator(matvec=As32f, matmat=As32f, shape=(n, n), dtype=As32.dtype) listA = [Af64, As64, Af32, As32, As32f, As32LO, lambda v: As32 @ v] Bs64 = dia_array(([vals], [0]), shape=(n, n)).asformat(s_f) Bf64 = Bs64.toarray() Bs32 = Bs64.astype(np.float32) def Bs32f(x): return Bs32 @ x Bs32LO = LinearOperator(matvec=Bs32f, matmat=Bs32f, shape=(n, n), dtype=Bs32.dtype) listB = [Bf64, Bs64, Bs32, Bs32f, Bs32LO, lambda v: Bs32 @ v] # Define the preconditioner function as LinearOperator. Ms64 = dia_array(([1./vals], [0]), shape=(n, n)).asformat(s_f) def Ms64precond(x): return Ms64 @ x Ms64precondLO = LinearOperator(matvec=Ms64precond, matmat=Ms64precond, shape=(n, n), dtype=Ms64.dtype) Mf64 = Ms64.toarray() def Mf64precond(x): return Mf64 @ x Mf64precondLO = LinearOperator(matvec=Mf64precond, matmat=Mf64precond, shape=(n, n), dtype=Mf64.dtype) Ms32 = Ms64.astype(np.float32) def Ms32precond(x): return Ms32 @ x Ms32precondLO = LinearOperator(matvec=Ms32precond, matmat=Ms32precond, shape=(n, n), dtype=Ms32.dtype) Mf32 = Ms32.toarray() def Mf32precond(x): return Mf32 @ x Mf32precondLO = LinearOperator(matvec=Mf32precond, matmat=Mf32precond, shape=(n, n), dtype=Mf32.dtype) listM = [None, Ms64, Ms64precondLO, Mf64precondLO, Ms64precond, Ms32, Ms32precondLO, Mf32precondLO, Ms32precond] # Setup matrix of the initial approximation to the eigenvectors # (cannot be sparse array). Xf64 = rnd.random((n, m)) Xf32 = Xf64.astype(np.float32) listX = [Xf64, Xf32] # Require that the returned eigenvectors be in the orthogonal complement # of the first few standard basis vectors (cannot be sparse array). m_excluded = 3 Yf64 = np.eye(n, m_excluded, dtype=float) Yf32 = np.eye(n, m_excluded, dtype=np.float32) listY = [Yf64, Yf32] tests = list(itertools.product(listA, listB, listM, listX, listY)) for A, B, M, X, Y in tests: # This is one of the slower tests because there are >1,000 configs # to test here. Flip a biased coin to decide whether to run each # test to get decent coverage in less time. if rnd.random() < 0.98: continue # too many tests eigvals, _ = lobpcg(A, X, B=B, M=M, Y=Y, tol=1e-4, maxiter=100, largest=False) > assert_allclose(eigvals, np.arange(1 + m_excluded, 1 + m_excluded + m), atol=1e-5) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1e-05 E E Mismatched elements: 1 / 1 (100%) E Max absolute difference among violations: 6.22956862 E Max relative difference among violations: 1.55739215 E ACTUAL: array([10.229569]) E DESIRED: array([4]) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:723: AssertionError ________________________ test_diagonal_data_types[2-15] ________________________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 n = 15, m = 2 @pytest.mark.slow @pytest.mark.parametrize("n", [15]) @pytest.mark.parametrize("m", [1, 2]) @pytest.mark.filterwarnings("ignore:Exited at iteration") @pytest.mark.filterwarnings("ignore:Exited postprocessing") def test_diagonal_data_types(n, m): """Check lobpcg for diagonal matrices for all matrix types. Constraints are imposed, so a dense eigensolver eig cannot run. """ rnd = np.random.RandomState(0) # Define the generalized eigenvalue problem Av = cBv # where (c, v) is a generalized eigenpair, # and where we choose A and B to be diagonal. vals = np.arange(1, n + 1) list_sparse_format = ['bsr', 'coo', 'csc', 'csr', 'dia', 'dok', 'lil'] for s_f_i, s_f in enumerate(list_sparse_format): As64 = dia_array(([vals * vals], [0]), shape=(n, n)).asformat(s_f) As32 = As64.astype(np.float32) Af64 = As64.toarray() Af32 = Af64.astype(np.float32) def As32f(x): return As32 @ x As32LO = LinearOperator(matvec=As32f, matmat=As32f, shape=(n, n), dtype=As32.dtype) listA = [Af64, As64, Af32, As32, As32f, As32LO, lambda v: As32 @ v] Bs64 = dia_array(([vals], [0]), shape=(n, n)).asformat(s_f) Bf64 = Bs64.toarray() Bs32 = Bs64.astype(np.float32) def Bs32f(x): return Bs32 @ x Bs32LO = LinearOperator(matvec=Bs32f, matmat=Bs32f, shape=(n, n), dtype=Bs32.dtype) listB = [Bf64, Bs64, Bs32, Bs32f, Bs32LO, lambda v: Bs32 @ v] # Define the preconditioner function as LinearOperator. Ms64 = dia_array(([1./vals], [0]), shape=(n, n)).asformat(s_f) def Ms64precond(x): return Ms64 @ x Ms64precondLO = LinearOperator(matvec=Ms64precond, matmat=Ms64precond, shape=(n, n), dtype=Ms64.dtype) Mf64 = Ms64.toarray() def Mf64precond(x): return Mf64 @ x Mf64precondLO = LinearOperator(matvec=Mf64precond, matmat=Mf64precond, shape=(n, n), dtype=Mf64.dtype) Ms32 = Ms64.astype(np.float32) def Ms32precond(x): return Ms32 @ x Ms32precondLO = LinearOperator(matvec=Ms32precond, matmat=Ms32precond, shape=(n, n), dtype=Ms32.dtype) Mf32 = Ms32.toarray() def Mf32precond(x): return Mf32 @ x Mf32precondLO = LinearOperator(matvec=Mf32precond, matmat=Mf32precond, shape=(n, n), dtype=Mf32.dtype) listM = [None, Ms64, Ms64precondLO, Mf64precondLO, Ms64precond, Ms32, Ms32precondLO, Mf32precondLO, Ms32precond] # Setup matrix of the initial approximation to the eigenvectors # (cannot be sparse array). Xf64 = rnd.random((n, m)) Xf32 = Xf64.astype(np.float32) listX = [Xf64, Xf32] # Require that the returned eigenvectors be in the orthogonal complement # of the first few standard basis vectors (cannot be sparse array). m_excluded = 3 Yf64 = np.eye(n, m_excluded, dtype=float) Yf32 = np.eye(n, m_excluded, dtype=np.float32) listY = [Yf64, Yf32] tests = list(itertools.product(listA, listB, listM, listX, listY)) for A, B, M, X, Y in tests: # This is one of the slower tests because there are >1,000 configs # to test here. Flip a biased coin to decide whether to run each # test to get decent coverage in less time. if rnd.random() < 0.98: continue # too many tests eigvals, _ = lobpcg(A, X, B=B, M=M, Y=Y, tol=1e-4, maxiter=100, largest=False) > assert_allclose(eigvals, np.arange(1 + m_excluded, 1 + m_excluded + m), atol=1e-5) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=1e-05 E E Mismatched elements: 2 / 2 (100%) E Max absolute difference among violations: 2.16873121 E Max relative difference among violations: 0.5421828 E ACTUAL: array([6.168731, 6.774524], dtype=float32) E DESIRED: array([4, 5]) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:723: AssertionError ___________ Test_SVDS_ARPACK.test_small_sigma_sparse[float32-shape0] ___________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = shape = (100, 100), dtype = @pytest.mark.filterwarnings("ignore:Exited at iteration") @pytest.mark.filterwarnings("ignore:Exited postprocessing") @pytest.mark.parametrize("shape", SHAPES) # ARPACK supports only dtype float, complex, or np.float32 @pytest.mark.parametrize("dtype", (float, complex, np.float32)) def test_small_sigma_sparse(self, shape, dtype): # https://github.com/scipy/scipy/pull/11829 solver = self.solver # 2do: PROPACK fails orthogonality of singular vectors # if dtype == complex and self.solver == 'propack': # pytest.skip("PROPACK unsupported for complex dtype") rng = np.random.default_rng(0) k = 5 (m, n) = shape S = random_array(shape=(m, n), density=0.1, rng=rng) if dtype is complex: S = + 1j * random_array(shape=(m, n), density=0.1, rng=rng) e = np.ones(m) e[0:5] *= 1e1 ** np.arange(-5, 0, 1) S = dia_array((e, 0), shape=(m, m)) @ S S = S.astype(dtype) u, s, vh = svds(S, k, which='SM', solver=solver, maxiter=1000, rng=0) c_svd = False # partial SVD can be different from full SVD > _check_svds_n(S, k, u, s, vh, which="SM", check_svd=c_svd, atol=2e-1) scipy/sparse/linalg/_eigen/tests/test_svds.py:698: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ A = k = 5 u = array([[-3.44086648e-03, -3.17944592e-04, 3.01781954e-04, 1.64080950e-04, -3.11342999e-04], [-4.04060..., [ 1.94753744e-02, -3.23035084e-02, -7.61152105e-03, 2.35108677e-02, 2.80313697e-02]], dtype=float32) s = array([0.00015555, 0.00616432, 0.02704118, 0.05361913, 0.06270821], dtype=float32) vh = array([[-1.60251513e-01, 7.16262758e-02, -2.75281250e-01, -2.10837908e-02, -3.76258828e-02, -3.11271194e-02, ..., -5.76564707e-02, -1.05197579e-02, -1.45656783e-02, 2.32380444e-05, -1.49915338e-01]], dtype=float32) which = 'SM', check_res = True, check_svd = False, atol = 0.2, rtol = 1e-07 def _check_svds_n(A, k, u, s, vh, which="LM", check_res=True, check_svd=True, atol=1e-10, rtol=1e-7): n, m = A.shape # Check shapes. assert_equal(u.shape, (n, k)) assert_equal(s.shape, (k,)) assert_equal(vh.shape, (k, m)) # Check that u is a semi-orthogonal matrix. uh_u = np.dot(u.T.conj(), u) assert_equal(uh_u.shape, (k, k)) error = np.sum(np.abs(uh_u - np.identity(k))) / (k * k) > assert_allclose(error, 0.0, atol=atol, rtol=rtol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=0.2 E E Mismatched elements: 1 / 1 (100%) E Max absolute difference among violations: 0.4524162 E Max relative difference among violations: inf E ACTUAL: array(0.452416) E DESIRED: array(0.) scipy/sparse/linalg/_eigen/tests/test_svds.py:80: AssertionError ___________ Test_SVDS_ARPACK.test_small_sigma_sparse[float32-shape1] ___________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = shape = (100, 101), dtype = @pytest.mark.filterwarnings("ignore:Exited at iteration") @pytest.mark.filterwarnings("ignore:Exited postprocessing") @pytest.mark.parametrize("shape", SHAPES) # ARPACK supports only dtype float, complex, or np.float32 @pytest.mark.parametrize("dtype", (float, complex, np.float32)) def test_small_sigma_sparse(self, shape, dtype): # https://github.com/scipy/scipy/pull/11829 solver = self.solver # 2do: PROPACK fails orthogonality of singular vectors # if dtype == complex and self.solver == 'propack': # pytest.skip("PROPACK unsupported for complex dtype") rng = np.random.default_rng(0) k = 5 (m, n) = shape S = random_array(shape=(m, n), density=0.1, rng=rng) if dtype is complex: S = + 1j * random_array(shape=(m, n), density=0.1, rng=rng) e = np.ones(m) e[0:5] *= 1e1 ** np.arange(-5, 0, 1) S = dia_array((e, 0), shape=(m, m)) @ S S = S.astype(dtype) u, s, vh = svds(S, k, which='SM', solver=solver, maxiter=1000, rng=0) c_svd = False # partial SVD can be different from full SVD > _check_svds_n(S, k, u, s, vh, which="SM", check_svd=c_svd, atol=2e-1) scipy/sparse/linalg/_eigen/tests/test_svds.py:698: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ A = k = 5 u = array([[-6.76410273e-03, 5.17199187e-05, 3.93279654e-04, 1.29525622e-04, -6.54897012e-05], [ 2.07423..., [ 1.61606367e-04, -1.59240179e-02, -3.35952155e-02, 8.39018971e-02, 1.06989689e-01]], dtype=float32) s = array([0.00018492, 0.01863895, 0.03802208, 0.05719526, 0.07125558], dtype=float32) vh = array([[-0.20111279, 0.11629377, 0.02620906, -0.05058736, -0.14707032, -0.15140113, -0.18314771, -0.02137433...9349267, 0.11198726, -0.04108371, -0.16949174, -0.00947463, 0.0149892 , 0.05042345]], dtype=float32) which = 'SM', check_res = True, check_svd = False, atol = 0.2, rtol = 1e-07 def _check_svds_n(A, k, u, s, vh, which="LM", check_res=True, check_svd=True, atol=1e-10, rtol=1e-7): n, m = A.shape # Check shapes. assert_equal(u.shape, (n, k)) assert_equal(s.shape, (k,)) assert_equal(vh.shape, (k, m)) # Check that u is a semi-orthogonal matrix. uh_u = np.dot(u.T.conj(), u) assert_equal(uh_u.shape, (k, k)) error = np.sum(np.abs(uh_u - np.identity(k))) / (k * k) assert_allclose(error, 0.0, atol=atol, rtol=rtol) # Check that vh is a semi-orthogonal matrix. vh_v = np.dot(vh, vh.T.conj()) assert_equal(vh_v.shape, (k, k)) error = np.sum(np.abs(vh_v - np.identity(k))) / (k * k) > assert_allclose(error, 0.0, atol=atol, rtol=rtol) E AssertionError: E Not equal to tolerance rtol=1e-07, atol=0.2 E E Mismatched elements: 1 / 1 (100%) E Max absolute difference among violations: 0.93582385 E Max relative difference among violations: inf E ACTUAL: array(0.935824) E DESIRED: array(0.) scipy/sparse/linalg/_eigen/tests/test_svds.py:86: AssertionError ______________ Test_SVDS_ARPACK.test_small_sigma[float32-shape1] _______________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = shape = (20, 21), dtype = @pytest.mark.parametrize("shape", ((20, 20), (20, 21), (21, 20))) # ARPACK supports only dtype float, complex, or np.float32 @pytest.mark.parametrize("dtype", (float, complex, np.float32)) @pytest.mark.filterwarnings("ignore:Exited", reason="Ignore LOBPCG early exit.") def test_small_sigma(self, shape, dtype): rng = np.random.default_rng(179847540) A = rng.random(shape).astype(dtype) u, _, vh = svd(A, full_matrices=False) if dtype == np.float32: e = 10.0 else: e = 100.0 t = e**(-np.arange(len(vh))).astype(dtype) A = (u*t).dot(vh) k = 4 u, s, vh = svds(A, k, solver=self.solver, maxiter=100, rng=0) t = np.sum(s > 0) assert_equal(t, k) # LOBPCG needs larger atol and rtol to pass > _check_svds_n(A, k, u, s, vh, atol=1e-3, rtol=1e0, check_svd=False) scipy/sparse/linalg/_eigen/tests/test_svds.py:782: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ A = array([[ 9.95537415e-02, 5.06736264e-02, 4.65901196e-02, 2.79618502e-02, 4.67256494e-02, 4.12980244e-02, ...9476e-01, 3.47604841e-01, 4.12139237e-01, 3.83579761e-01, 4.16614830e-01, 3.59117061e-01]], dtype=float32) k = 4 u = array([[ 0.03385035, 0.02150094, 0.0124381 , -0.02906312], [-0.34045282, 0.2181522 , -0.06187975, 0.0117863...00917015, -0.02146235, 0.01111101], [ 0.14251482, -0.3825737 , 0.44967234, -0.23133473]], dtype=float32) s = array([1.3403468e-04, 4.3910714e-03, 1.8804798e-01, 8.3458986e+00], dtype=float32) vh = array([[-0.17061538, 0.10479077, 0.14834727, -0.15975526, 0.2858443 , -0.44219106, -0.17963886, -0.3231264 ...0678313, -0.19519691, -0.17288372, -0.2010315 , -0.19043358, -0.20643489, -0.17940767]], dtype=float32) which = 'LM', check_res = True, check_svd = False, atol = 0.001, rtol = 1.0 def _check_svds_n(A, k, u, s, vh, which="LM", check_res=True, check_svd=True, atol=1e-10, rtol=1e-7): n, m = A.shape # Check shapes. assert_equal(u.shape, (n, k)) assert_equal(s.shape, (k,)) assert_equal(vh.shape, (k, m)) # Check that u is a semi-orthogonal matrix. uh_u = np.dot(u.T.conj(), u) assert_equal(uh_u.shape, (k, k)) error = np.sum(np.abs(uh_u - np.identity(k))) / (k * k) assert_allclose(error, 0.0, atol=atol, rtol=rtol) # Check that vh is a semi-orthogonal matrix. vh_v = np.dot(vh, vh.T.conj()) assert_equal(vh_v.shape, (k, k)) error = np.sum(np.abs(vh_v - np.identity(k))) / (k * k) assert_allclose(error, 0.0, atol=atol, rtol=rtol) # Check residuals if check_res: ru = A.T.conj() @ u - vh.T.conj() * s rus = np.sum(np.abs(ru)) / (n * k) rvh = A @ vh.T.conj() - u * s rvhs = np.sum(np.abs(rvh)) / (m * k) assert_allclose(rus, 0.0, atol=atol, rtol=rtol) > assert_allclose(rvhs, 0.0, atol=atol, rtol=rtol) E AssertionError: E Not equal to tolerance rtol=1, atol=0.001 E E Mismatched elements: 1 / 1 (100%) E Max absolute difference among violations: 0.04489651 E Max relative difference among violations: inf E ACTUAL: array(0.044897, dtype=float32) E DESIRED: array(0.) scipy/sparse/linalg/_eigen/tests/test_svds.py:95: AssertionError _________________ Test_SVDS_ARPACK.test_small_sigma2[float32] __________________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = @pytest.mark.filterwarnings("ignore:The problem size") @pytest.mark.parametrize("dtype", (float, complex, np.float32)) def test_small_sigma2(self, dtype): rng = np.random.default_rng(179847540) # create a 10x10 singular matrix with a 4-dim null space dim = 4 size = 10 x = rng.random((size, size-dim)) y = x[:, :dim] * rng.random(dim) mat = np.hstack((x, y)) mat = mat.astype(dtype) nz = null_space(mat) > assert_equal(nz.shape[1], dim) E AssertionError: E Items are not equal: E ACTUAL: 0 E DESIRED: 4 scipy/sparse/linalg/_eigen/tests/test_svds.py:798: AssertionError _________________ Test_SVDS_LOBPCG.test_small_sigma2[float32] __________________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = @pytest.mark.filterwarnings("ignore:The problem size") @pytest.mark.parametrize("dtype", (float, complex, np.float32)) def test_small_sigma2(self, dtype): rng = np.random.default_rng(179847540) # create a 10x10 singular matrix with a 4-dim null space dim = 4 size = 10 x = rng.random((size, size-dim)) y = x[:, :dim] * rng.random(dim) mat = np.hstack((x, y)) mat = mat.astype(dtype) nz = null_space(mat) > assert_equal(nz.shape[1], dim) E AssertionError: E Items are not equal: E ACTUAL: 0 E DESIRED: 4 scipy/sparse/linalg/_eigen/tests/test_svds.py:798: AssertionError ______________ Test_SVDS_PROPACK.test_small_sigma[float32-shape1] ______________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = shape = (20, 21), dtype = @pytest.mark.parametrize("shape", ((20, 20), (20, 21), (21, 20))) # ARPACK supports only dtype float, complex, or np.float32 @pytest.mark.parametrize("dtype", (float, complex, np.float32)) @pytest.mark.filterwarnings("ignore:Exited", reason="Ignore LOBPCG early exit.") def test_small_sigma(self, shape, dtype): rng = np.random.default_rng(179847540) A = rng.random(shape).astype(dtype) u, _, vh = svd(A, full_matrices=False) if dtype == np.float32: e = 10.0 else: e = 100.0 t = e**(-np.arange(len(vh))).astype(dtype) A = (u*t).dot(vh) k = 4 u, s, vh = svds(A, k, solver=self.solver, maxiter=100, rng=0) t = np.sum(s > 0) assert_equal(t, k) # LOBPCG needs larger atol and rtol to pass > _check_svds_n(A, k, u, s, vh, atol=1e-3, rtol=1e0, check_svd=False) scipy/sparse/linalg/_eigen/tests/test_svds.py:782: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ A = array([[ 9.95537415e-02, 5.06736264e-02, 4.65901196e-02, 2.79618502e-02, 4.67256494e-02, 4.12980244e-02, ...9476e-01, 3.47604841e-01, 4.12139237e-01, 3.83579761e-01, 4.16614830e-01, 3.59117061e-01]], dtype=float32) k = 4 u = array([[-0.00335385, -0.02523096, -0.0344178 , 0.01600349], [-0.01699221, 0.0735939 , 0.08077726, -0.0724298...00774614, 0.01170946, -0.035146 ], [-0.03937541, -0.23951867, -0.27156025, 0.20115541]], dtype=float32) s = array([6.3306484, 7.2770143, 7.5087056, 8.110825 ], dtype=float32) vh = array([[-3.1854950e-03, 6.3515663e-02, 6.3362010e-03, -2.8860396e-02, 2.3959488e-02, 1.6475780e-02, 2.882...3e-01, 1.7291328e-01, 2.0035464e-01, 1.9039112e-01, 2.0636326e-01, 1.7959711e-01]], dtype=float32) which = 'LM', check_res = True, check_svd = False, atol = 0.001, rtol = 1.0 def _check_svds_n(A, k, u, s, vh, which="LM", check_res=True, check_svd=True, atol=1e-10, rtol=1e-7): n, m = A.shape # Check shapes. assert_equal(u.shape, (n, k)) assert_equal(s.shape, (k,)) assert_equal(vh.shape, (k, m)) # Check that u is a semi-orthogonal matrix. uh_u = np.dot(u.T.conj(), u) assert_equal(uh_u.shape, (k, k)) error = np.sum(np.abs(uh_u - np.identity(k))) / (k * k) > assert_allclose(error, 0.0, atol=atol, rtol=rtol) E AssertionError: E Not equal to tolerance rtol=1, atol=0.001 E E Mismatched elements: 1 / 1 (100%) E Max absolute difference among violations: 0.58952129 E Max relative difference among violations: inf E ACTUAL: array(0.589521) E DESIRED: array(0.) scipy/sparse/linalg/_eigen/tests/test_svds.py:80: AssertionError _________________ Test_SVDS_PROPACK.test_small_sigma2[float32] _________________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 self = dtype = @pytest.mark.filterwarnings("ignore:The problem size") @pytest.mark.parametrize("dtype", (float, complex, np.float32)) def test_small_sigma2(self, dtype): rng = np.random.default_rng(179847540) # create a 10x10 singular matrix with a 4-dim null space dim = 4 size = 10 x = rng.random((size, size-dim)) y = x[:, :dim] * rng.random(dim) mat = np.hstack((x, y)) mat = mat.astype(dtype) nz = null_space(mat) > assert_equal(nz.shape[1], dim) E AssertionError: E Items are not equal: E ACTUAL: 0 E DESIRED: 4 scipy/sparse/linalg/_eigen/tests/test_svds.py:798: AssertionError _______________ test_expm_multiply_dtype[False-float32-float32] ________________ [gw1] linux -- Python 3.14.0 /usr/bin/python3 dtype_a = , dtype_b = b_is_matrix = False @pytest.mark.thread_unsafe @pytest.mark.parametrize("dtype_a", DTYPES) @pytest.mark.parametrize("dtype_b", DTYPES) @pytest.mark.parametrize("b_is_matrix", [False, True]) def test_expm_multiply_dtype(dtype_a, dtype_b, b_is_matrix): """Make sure `expm_multiply` handles all numerical dtypes correctly.""" assert_allclose_ = (partial(assert_allclose, rtol=1.8e-3, atol=1e-5) if {dtype_a, dtype_b} & IMPRECISE else assert_allclose) rng = np.random.default_rng(1234) # test data n = 7 b_shape = (n, 3) if b_is_matrix else (n, ) if dtype_a in REAL_DTYPES: A = scipy.linalg.inv(rng.random([n, n])).astype(dtype_a) else: A = scipy.linalg.inv( rng.random([n, n]) + 1j*rng.random([n, n]) ).astype(dtype_a) if dtype_b in REAL_DTYPES: B = (2*rng.random(b_shape)).astype(dtype_b) else: B = (rng.random(b_shape) + 1j*rng.random(b_shape)).astype(dtype_b) # single application sol_mat = expm_multiply(A, B) sol_op = estimated(expm_multiply)(aslinearoperator(A), B) direct_sol = np.dot(sp_expm(A), B) > assert_allclose_(sol_mat, direct_sol) E AssertionError: E Not equal to tolerance rtol=0.0018, atol=1e-05 E E Mismatched elements: 7 / 7 (100%) E Max absolute difference among violations: 63.387188 E Max relative difference among violations: 27.64872 E ACTUAL: array([ -3.064912, -65.67978 , 5.451213, 5.709098, 13.324107, E -7.402241, -11.128153], dtype=float32) E DESIRED: array([ 1.503418, -2.29259 , 3.337087, 1.208516, 2.212788, 2.274415, E 1.000795], dtype=float32) scipy/sparse/linalg/tests/test_expm_multiply.py:354: AssertionError =============================== warnings summary =============================== scipy/linalg/tests/test_decomp.py::TestOrdQZWorkspaceSize::test_decompose scipy/linalg/tests/test_decomp.py::TestOrdQZWorkspaceSize::test_decompose_ouc /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/_util.py:1233: LinAlgWarning: The QZ iteration failed. (a,b) are not in Schur form, but ALPHAR(j), ALPHAI(j), and BETA(j) should be correct for J=201,...,N return f(*arrays, *other_args, **kwargs) scipy/linalg/tests/test_decomp.py::test_aligned_mem_float /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/linalg/_decomp.py:261: RuntimeWarning: invalid value encountered in multiply w = wr + _I * wi scipy/linalg/tests/test_lapack.py: 10 warnings /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/_lib/_util.py:1233: LinAlgWarning: The QZ iteration failed. (a,b) are not in Schur form, but ALPHAR(j), ALPHAI(j), and BETA(j) should be correct for J=9,...,N return f(*arrays, *other_args, **kwargs) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_tolerance_float32 /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:444: UserWarning: Failed at iteration 4 with accuracies [1.0761591e+07 1.4204830e+04 9.3900762e+03] not reaching the requested tolerance 1.25e-05. eigvals, _ = lobpcg(A, X, tol=1.25e-5, maxiter=50, verbosityLevel=0) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_tolerance_float32 /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:444: UserWarning: Exited at iteration 4 with accuracies [1.0761591e+07 1.4204830e+04 9.3900762e+03] not reaching the requested tolerance 1.25e-05. Use iteration 0 instead with accuracy 14.835007667541504. eigvals, _ = lobpcg(A, X, tol=1.25e-5, maxiter=50, verbosityLevel=0) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_dtypes[array-float32-float32] /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:462: UserWarning: Exited at iteration 20 with accuracies [28.354912 0.14050947] not reaching the requested tolerance 0.01. Use iteration 1 instead with accuracy 1.8405159711837769. eigvals, eigvecs = lobpcg(A, X, tol=1e-2, largest=False) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_dtypes[array-float32-float32] /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:462: UserWarning: Exited postprocessing with accuracies [2.1637363 1.5172958] not reaching the requested tolerance 0.01. eigvals, eigvecs = lobpcg(A, X, tol=1e-2, largest=False) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_dtypes[csr_array-float32-float32] scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_dtypes[coo_array-float32-float32] /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:462: UserWarning: Exited at iteration 20 with accuracies [28.35479 0.14052233] not reaching the requested tolerance 0.01. Use iteration 1 instead with accuracy 1.8405158519744873. eigvals, eigvecs = lobpcg(A, X, tol=1e-2, largest=False) scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_dtypes[csr_array-float32-float32] scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_dtypes[coo_array-float32-float32] /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py:462: UserWarning: Exited postprocessing with accuracies [2.1637366 1.5172955] not reaching the requested tolerance 0.01. eigvals, eigvecs = lobpcg(A, X, tol=1e-2, largest=False) scipy/spatial/tests/test_distance.py: 15 warnings /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/distance.py:3134: DeprecationWarning: The kulczynski1 metric is deprecated since SciPy 1.15.0 and will be removed in SciPy 1.17.0. Replace usage of 'kulczynski1(u, v)' with '1/jaccard(u, v) - 1'. return cdist_fn(XA, XB, out=out, **kwargs) scipy/spatial/tests/test_distance.py: 800 warnings /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/distance.py:2789: DeprecationWarning: The kulczynski1 metric is deprecated since SciPy 1.15.0 and will be removed in SciPy 1.17.0. Replace usage of 'kulczynski1(u, v)' with '1/jaccard(u, v) - 1'. dm[i, j] = metric(XA[i], XB[j], **kwargs) scipy/spatial/tests/test_distance.py: 15 warnings /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/distance.py:2338: DeprecationWarning: The kulczynski1 metric is deprecated since SciPy 1.15.0 and will be removed in SciPy 1.17.0. Replace usage of 'kulczynski1(u, v)' with '1/jaccard(u, v) - 1'. return pdist_fn(X, out=out, **kwargs) scipy/spatial/tests/test_distance.py: 380 warnings /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/distance.py:2778: DeprecationWarning: The kulczynski1 metric is deprecated since SciPy 1.15.0 and will be removed in SciPy 1.17.0. Replace usage of 'kulczynski1(u, v)' with '1/jaccard(u, v) - 1'. dm[k] = metric(X[i], X[j], **kwargs) scipy/spatial/tests/test_distance.py: 15 warnings /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/distance.py:3134: DeprecationWarning: The sokalmichener metric is deprecated since SciPy 1.15.0 and will be removed in SciPy 1.17.0. Replace usage of 'sokalmichener(u, v)' with 'rogerstanimoto(u, v)'. return cdist_fn(XA, XB, out=out, **kwargs) scipy/spatial/tests/test_distance.py: 800 warnings /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/distance.py:2789: DeprecationWarning: The sokalmichener metric is deprecated since SciPy 1.15.0 and will be removed in SciPy 1.17.0. Replace usage of 'sokalmichener(u, v)' with 'rogerstanimoto(u, v)'. dm[i, j] = metric(XA[i], XB[j], **kwargs) scipy/spatial/tests/test_distance.py: 15 warnings /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/distance.py:2338: DeprecationWarning: The sokalmichener metric is deprecated since SciPy 1.15.0 and will be removed in SciPy 1.17.0. Replace usage of 'sokalmichener(u, v)' with 'rogerstanimoto(u, v)'. return pdist_fn(X, out=out, **kwargs) scipy/spatial/tests/test_distance.py: 380 warnings /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/spatial/distance.py:2778: DeprecationWarning: The sokalmichener metric is deprecated since SciPy 1.15.0 and will be removed in SciPy 1.17.0. Replace usage of 'sokalmichener(u, v)' with 'rogerstanimoto(u, v)'. dm[k] = metric(X[i], X[j], **kwargs) scipy/stats/tests/test_axis_nan_policy.py: 79 warnings /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_stats_py.py:10917: SmallSampleWarning: One or more sample arguments is too small; all returned values will be NaN. See documentation for sample size requirements. return gmean(x, weights=weights, axis=axis, keepdims=keepdims) scipy/stats/tests/test_axis_nan_policy.py: 99 warnings /usr/lib64/python3.14/site-packages/numpy/_core/fromnumeric.py:3860: RuntimeWarning: Mean of empty slice. return _methods._mean(a, axis=axis, dtype=dtype, scipy/stats/tests/test_axis_nan_policy.py: 24 warnings /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_axis_nan_policy.py:423: SmallSampleWarning: `skewtest` requires at least 8 valid observations;slices with fewer observations will produce NaNs. return hypotest_fun_in(*args, **kwds) scipy/stats/tests/test_axis_nan_policy.py: 24 warnings /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/_axis_nan_policy.py:423: SmallSampleWarning: `kurtosistest` requires at least 5 valid observations; slices with fewer observations will produce NaNs. return hypotest_fun_in(*args, **kwds) scipy/stats/tests/test_qmc.py::TestUtils::test_geometric_discrepancy_mst_with_zero_distances /builddir/build/BUILD/scipy-1.16.2-build/BUILDROOT/usr/lib64/python3.14/site-packages/scipy/stats/tests/test_qmc.py:235: UserWarning: Sample contains duplicate points. assert_allclose(qmc.geometric_discrepancy(sample, method='mst'), 0.5) -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED scipy/linalg/tests/test_basic.py::TestLstsq::test_random_exact[True-gelsd-20-float32] FAILED scipy/linalg/tests/test_basic.py::TestLstsq::test_random_exact[True-gelsd-200-float32] FAILED scipy/linalg/tests/test_basic.py::TestLstsq::test_random_exact[True-gelss-20-float32] FAILED scipy/linalg/tests/test_basic.py::TestLstsq::test_random_exact[True-gelss-200-float32] FAILED scipy/linalg/tests/test_basic.py::TestLstsq::test_random_exact[True-gelsy-20-float32] FAILED scipy/linalg/tests/test_basic.py::TestLstsq::test_random_exact[True-gelsy-200-float32] FAILED scipy/linalg/tests/test_basic.py::TestLstsq::test_random_exact[True-None-20-float32] FAILED scipy/linalg/tests/test_basic.py::TestLstsq::test_random_exact[True-None-200-float32] FAILED scipy/linalg/tests/test_basic.py::TestLstsq::test_random_exact[False-gelsd-20-float32] FAILED scipy/linalg/tests/test_basic.py::TestLstsq::test_random_exact[False-gelsd-200-float32] FAILED scipy/linalg/tests/test_basic.py::TestLstsq::test_random_exact[False-gelss-20-float32] FAILED scipy/linalg/tests/test_basic.py::TestLstsq::test_random_exact[False-gelss-200-float32] FAILED scipy/linalg/tests/test_basic.py::TestLstsq::test_random_exact[False-gelsy-20-float32] FAILED scipy/linalg/tests/test_basic.py::TestLstsq::test_random_exact[False-gelsy-200-float32] FAILED scipy/linalg/tests/test_basic.py::TestLstsq::test_random_exact[False-None-20-float32] FAILED scipy/linalg/tests/test_basic.py::TestLstsq::test_random_exact[False-None-200-float32] FAILED scipy/linalg/tests/test_basic.py::TestLstsq::test_random_overdet - Ass... FAILED scipy/linalg/tests/test_batch.py::TestBatch::test_qr_multiply[float32-cdim0] FAILED scipy/linalg/tests/test_batch.py::TestBatch::test_qr_multiply[float32-cdim1] FAILED scipy/linalg/tests/test_batch.py::TestBatch::test_qr_multiply[float32-cdim2] FAILED scipy/linalg/tests/test_batch.py::TestBatch::test_two_generic_matrix_inputs[float32-fun_n_out5] FAILED scipy/linalg/tests/test_batch.py::TestBatch::test_solve[float32-bdim0] FAILED scipy/linalg/tests/test_batch.py::TestBatch::test_lu_solve[float32-bdim0] FAILED scipy/differentiate/tests/test_differentiate.py::TestJacobian::test_examples[numpy-f1-size0-float32] FAILED scipy/differentiate/tests/test_differentiate.py::TestJacobian::test_examples[numpy-f1-size1-float32] FAILED scipy/differentiate/tests/test_differentiate.py::TestJacobian::test_examples[numpy-f1-size2-float32] FAILED scipy/differentiate/tests/test_differentiate.py::TestJacobian::test_examples[numpy-f2-size0-float32] FAILED scipy/differentiate/tests/test_differentiate.py::TestJacobian::test_examples[numpy-f2-size1-float32] FAILED scipy/differentiate/tests/test_differentiate.py::TestJacobian::test_examples[numpy-f2-size2-float32] FAILED scipy/differentiate/tests/test_differentiate.py::TestJacobian::test_examples[numpy-f3-size0-float32] FAILED scipy/linalg/tests/test_batch.py::TestBatch::test_solve_triangular[float32-bdim0] FAILED scipy/differentiate/tests/test_differentiate.py::TestJacobian::test_examples[numpy-f3-size1-float32] FAILED scipy/differentiate/tests/test_differentiate.py::TestJacobian::test_examples[numpy-f3-size2-float32] FAILED scipy/differentiate/tests/test_differentiate.py::TestJacobian::test_examples[numpy-f4-size0-float32] FAILED scipy/differentiate/tests/test_differentiate.py::TestJacobian::test_examples[numpy-f4-size1-float32] FAILED scipy/linalg/tests/test_batch.py::TestBatch::test_lstsq[float32-bdim0] FAILED scipy/differentiate/tests/test_differentiate.py::TestJacobian::test_examples[numpy-f4-size2-float32] FAILED scipy/differentiate/tests/test_differentiate.py::TestJacobian::test_examples[numpy-f5-size0-float32] FAILED scipy/differentiate/tests/test_differentiate.py::TestJacobian::test_examples[numpy-f5-size1-float32] FAILED scipy/differentiate/tests/test_differentiate.py::TestJacobian::test_examples[numpy-f5-size2-float32] FAILED scipy/differentiate/tests/test_differentiate.py::TestJacobian::test_examples[numpy-rosen-size0-float32] FAILED scipy/differentiate/tests/test_differentiate.py::TestJacobian::test_examples[numpy-rosen-size1-float32] FAILED scipy/differentiate/tests/test_differentiate.py::TestJacobian::test_examples[numpy-rosen-size2-float32] FAILED scipy/linalg/tests/test_blas.py::TestFBLAS2Simple::test_gbmv - Asserti... FAILED scipy/linalg/tests/test_blas.py::TestFBLAS2Simple::test_sbmv_hbmv - As... FAILED scipy/differentiate/tests/test_differentiate.py::TestHessian::test_float32[numpy] FAILED scipy/linalg/tests/test_blas.py::TestFBLAS2Simple::test_tbmv - Asserti... FAILED scipy/linalg/tests/test_decomp.py::TestEigh::test_various_drivers_standard[ev-float32] FAILED scipy/linalg/tests/test_decomp.py::TestEigh::test_various_drivers_standard[evd-float32] FAILED scipy/linalg/tests/test_decomp.py::TestEigh::test_various_drivers_standard[evr-float32] FAILED scipy/linalg/tests/test_decomp.py::TestEigh::test_various_drivers_standard[evx-float32] FAILED scipy/linalg/tests/test_decomp.py::TestQZ::test_qz_single - AssertionE... FAILED scipy/linalg/tests/test_decomp.py::test_orth - AssertionError: FAILED scipy/linalg/tests/test_decomp.py::TestNullSpace::test_null_space - As... FAILED scipy/linalg/tests/test_decomp_cossin.py::test_cossin[True-40-12-20-float32] FAILED scipy/linalg/tests/test_decomp_cossin.py::test_cossin[True-40-30-1-float32] FAILED scipy/linalg/tests/test_decomp_cossin.py::test_cossin[True-40-1-30-float32] FAILED scipy/linalg/tests/test_decomp_cossin.py::test_cossin[True-100-50-1-float32] FAILED scipy/linalg/tests/test_decomp_cossin.py::test_cossin[True-100-50-50-float32] FAILED scipy/linalg/tests/test_decomp_cossin.py::test_cossin[False-40-12-20-float32] FAILED scipy/linalg/tests/test_decomp_cossin.py::test_cossin[False-40-30-1-float32] FAILED scipy/linalg/tests/test_decomp_cossin.py::test_cossin[False-40-1-30-float32] FAILED scipy/linalg/tests/test_decomp_cossin.py::test_cossin[False-100-50-1-float32] FAILED scipy/linalg/tests/test_decomp_cossin.py::test_cossin[False-100-50-50-float32] FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_sqr_1_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_sqr_p_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_sqr_1_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_sqr_p_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_tall_1_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_tall_p_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_tall_1_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_tall_p_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_fat_1_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_fat_p_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_fat_1_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_fat_p_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_economic_1_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_economic_p_row_economic FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_economic_p_row_sqr FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_economic_p_row_fat FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_economic_1_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_economic_p_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_Mx1_1_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_Mx1_p_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_delete_last_p_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_non_unit_strides_1_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_non_unit_strides_p_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_non_unit_strides_1_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_non_unit_strides_p_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_neg_strides_1_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_neg_strides_p_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_neg_strides_1_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_neg_strides_p_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_non_itemize_strides_1_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_non_itemize_strides_p_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_non_itemize_strides_1_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_non_itemize_strides_p_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_non_native_byte_order_1_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_non_native_byte_order_p_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_non_native_byte_order_1_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_non_native_byte_order_p_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_neg_k FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_overwrite_qr_1_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_overwrite_economic_qr_1_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_overwrite_qr_1_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_overwrite_qr_p_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_overwrite_economic_qr_p_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRdelete_f::test_overwrite_qr_p_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_sqr_1_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_sqr_p_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_sqr_1_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_sqr_p_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_tall_1_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_tall_p_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_tall_1_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_tall_p_col_tall FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_tall_p_col_sqr FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_tall_p_col_fat FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_fat_1_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_fat_p_row_fat FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_fat_p_row_sqr FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_fat_p_row_tall FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_fat_1_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_fat_p_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_economic_1_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_economic_p_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_economic_1_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_economic_p_col_eco FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_economic_p_col_sqr FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_economic_p_col_fat FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_non_unit_strides_1_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_non_unit_strides_p_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_non_unit_strides_1_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_non_unit_strides_p_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_neg_strides_1_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_neg_strides_p_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_neg_strides_1_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_neg_strides_p_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_non_itemsize_strides_1_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_non_itemsize_strides_p_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_non_itemsize_strides_1_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_non_itemsize_strides_p_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_non_native_byte_order_1_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_non_native_byte_order_p_row FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_non_native_byte_order_1_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_non_native_byte_order_p_col FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_overwrite_qu_rank_1 FAILED scipy/linalg/tests/test_decomp_update.py::TestQRinsert_f::test_overwrite_qu_rank_p FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_sqr_rank_1 FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_sqr_rank_p FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_tall_rank_1 FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_tall_rank_p FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_fat_rank_1 FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_fat_rank_p FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_economic_rank_1 FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_economic_rank_p FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_non_unit_strides_rank_1 FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_non_unit_strides_economic_rank_1 FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_non_unit_strides_rank_p FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_non_unit_strides_economic_rank_p FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_neg_strides_rank_1 FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_neg_strides_economic_rank_1 FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_neg_strides_rank_p FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_neg_strides_economic_rank_p FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_non_itemsize_strides_rank_1 FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_non_itemsize_strides_economic_rank_1 FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_non_itemsize_strides_rank_p FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_non_itemsize_strides_economic_rank_p FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_non_native_byte_order_rank_1 FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_non_native_byte_order_economic_rank_1 FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_non_native_byte_order_rank_p FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_non_native_byte_order_economic_rank_p FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_overwrite_qruv_rank_1 FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_overwrite_qruv_rank_1_economic FAILED scipy/linalg/tests/test_decomp_update.py::TestQRupdate_f::test_overwrite_qruv_rank_p FAILED scipy/linalg/tests/test_lapack.py::test_sygst - AssertionError: FAILED scipy/linalg/tests/test_lapack.py::test_ormrz_unmrz - AssertionError: FAILED scipy/linalg/tests/test_lapack.py::test_pftrf - AssertionError: FAILED scipy/linalg/tests/test_lapack.py::test_pftri - AssertionError: FAILED scipy/linalg/tests/test_lapack.py::test_pftrs - AssertionError: FAILED scipy/linalg/tests/test_lapack.py::TestBlockedQR::test_tpqrt_tpmqrt - ... FAILED scipy/linalg/tests/test_lapack.py::test_pstrf - AssertionError: FAILED scipy/linalg/tests/test_lapack.py::test_pstf2 - AssertionError: FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-0-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-0-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-0-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-0-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-0-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-0-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-0-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-0-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-0-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-0-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-0-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-0-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-1-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-1-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-1-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-1-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-1-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-1-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-1-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-1-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-1-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-1-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-1-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-1-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-2-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-2-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-2-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-2-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-2-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-2-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-2-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-2-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-2-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-2-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-2-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-2-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-3-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-3-0-float32-size1] FAILED scipy/interpolate/tests/test_bary_rational.py::test_dtype_preservation[float32-AAA] FAILED scipy/interpolate/tests/test_bary_rational.py::test_dtype_preservation[float32-FloaterHormannInterpolator] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-3-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-3-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-3-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-3-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-3-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-3-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-3-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-3-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-3-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-0-3-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-1-0-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-1-0-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-1-0-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-1-0-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-1-0-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-1-0-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-1-0-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-1-0-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-1-0-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-1-0-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-1-0-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-1-0-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-1-1-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-1-1-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-1-1-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-1-1-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-1-1-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-1-1-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-1-1-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-1-1-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-1-1-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-1-1-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-1-1-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-1-1-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-0-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-0-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-0-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-0-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-0-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-0-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-0-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-0-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-0-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-0-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-0-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-0-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-1-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-1-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-1-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-1-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-1-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-1-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-1-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-1-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-1-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-1-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-1-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-1-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-2-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-2-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-2-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-2-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-2-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-2-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-2-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-2-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-2-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-2-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-2-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-2-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-3-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-3-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-3-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-3-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-3-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-3-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-3-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-3-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-3-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-3-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-3-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-2-3-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-0-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-0-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-0-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-0-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-0-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-0-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-0-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-0-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-0-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-0-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-0-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-0-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-1-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-1-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-1-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-1-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-1-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-1-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-1-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-1-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-1-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-1-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-1-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-1-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-2-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-2-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-2-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-2-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-2-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-2-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-2-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-2-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-2-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-2-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-2-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-2-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-3-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-3-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-3-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-3-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-3-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-3-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-3-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-3-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-3-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-3-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-3-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-0-3-3-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-0-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-0-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-0-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-0-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-0-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-0-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-0-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-0-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-0-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-0-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-0-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-0-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-1-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-1-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-1-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-1-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-1-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-1-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-1-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-1-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-1-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-1-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-1-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-1-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-2-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-2-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-2-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-2-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-2-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-2-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-2-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-2-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-2-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-2-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-2-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-2-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-3-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-3-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-3-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-3-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-3-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-3-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-3-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-3-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-3-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-3-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-3-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-0-3-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-1-0-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-1-0-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-1-0-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-1-0-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-1-0-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-1-0-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-1-0-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-1-0-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-1-0-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-1-0-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-1-0-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-1-0-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-1-1-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-1-1-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-1-1-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-1-1-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-1-1-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-1-1-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-1-1-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-1-1-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-1-1-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-1-1-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-1-1-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-1-1-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-0-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-0-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-0-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-0-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-0-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-0-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-0-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-0-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-0-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-0-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-0-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-0-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-1-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-1-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-1-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-1-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-1-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-1-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-1-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-1-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-1-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-1-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-1-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-1-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-2-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-2-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-2-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-2-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-2-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-2-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-2-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-2-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-2-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-2-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-2-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-2-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-3-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-3-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-3-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-3-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-3-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-3-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-3-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-3-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-3-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-3-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-3-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-2-3-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-0-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-0-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-0-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-0-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-0-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-0-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-0-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-0-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-0-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-0-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-0-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-0-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-1-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-1-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-1-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-1-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-1-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-1-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-1-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-1-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-1-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-1-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-1-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-1-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-2-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-2-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-2-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-2-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-2-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-2-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-2-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-2-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-2-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-2-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-2-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-2-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-3-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-3-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-3-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-3-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-3-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-3-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-3-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-3-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-3-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-3-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-3-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[0-1-3-3-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-0-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-0-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-0-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-0-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-0-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-0-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-0-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-0-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-0-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-0-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-0-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-0-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-1-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-1-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-1-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-1-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-1-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-1-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-1-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-1-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-1-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-1-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-1-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-1-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-2-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-2-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-2-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-2-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-2-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-2-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-2-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-2-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-2-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-2-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-2-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-2-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-3-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-3-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-3-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-3-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-3-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-3-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-3-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-3-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-3-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-3-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-3-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-0-3-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-1-0-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-1-0-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-1-0-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-1-0-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-1-0-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-1-0-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-1-0-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-1-0-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-1-0-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-1-0-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-1-0-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-1-0-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-1-1-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-1-1-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-1-1-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-1-1-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-1-1-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-1-1-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-1-1-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-1-1-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-1-1-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-1-1-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-1-1-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-1-1-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-0-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-0-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-0-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-0-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-0-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-0-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-0-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-0-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-0-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-0-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-0-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-0-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-1-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-1-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-1-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-1-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-1-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-1-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-1-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-1-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-1-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-1-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-1-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-1-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-2-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-2-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-2-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-2-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-2-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-2-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-2-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-2-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-2-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-2-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-2-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-2-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-3-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-3-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-3-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-3-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-3-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-3-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-3-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-3-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-3-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-3-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-3-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-2-3-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-0-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-0-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-0-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-0-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-0-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-0-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-0-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-0-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-0-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-0-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-0-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-0-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-1-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-1-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-1-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-1-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-1-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-1-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-1-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-1-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-1-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-1-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-1-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-1-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-2-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-2-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-2-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-2-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-2-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-2-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-2-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-2-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-2-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-2-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-2-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-2-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-3-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-3-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-3-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-3-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-3-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-3-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-3-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-3-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-3-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-3-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-3-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-0-3-3-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-0-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-0-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-0-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-0-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-0-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-0-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-0-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-0-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-0-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-0-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-0-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-0-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-1-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-1-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-1-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-1-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-1-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-1-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-1-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-1-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-1-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-1-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-1-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-1-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-2-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-2-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-2-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-2-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-2-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-2-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-2-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-2-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-2-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-2-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-2-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-2-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-3-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-3-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-3-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-3-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-3-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-3-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-3-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-3-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-3-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-3-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-3-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-0-3-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-1-0-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-1-0-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-1-0-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-1-0-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-1-0-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-1-0-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-1-0-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-1-0-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-1-0-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-1-0-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-1-0-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-1-0-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-1-1-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-1-1-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-1-1-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-1-1-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-1-1-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-1-1-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-1-1-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-1-1-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-1-1-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-1-1-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-1-1-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-1-1-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-0-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-0-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-0-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-0-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-0-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-0-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-0-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-0-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-0-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-0-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-0-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-0-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-1-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-1-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-1-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-1-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-1-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-1-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-1-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-1-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-1-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-1-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-1-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-1-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-2-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-2-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-2-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-2-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-2-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-2-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-2-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-2-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-2-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-2-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-2-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-2-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-3-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-3-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-3-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-3-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-3-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-3-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-3-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-3-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-3-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-3-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-3-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-2-3-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-0-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-0-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-0-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-0-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-0-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-0-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-0-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-0-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-0-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-0-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-0-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-0-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-1-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-1-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-1-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-1-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-1-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-1-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-1-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-1-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-1-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-1-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-1-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-1-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-2-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-2-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-2-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-2-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-2-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-2-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-2-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-2-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-2-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-2-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-2-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-2-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-3-0-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-3-0-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-3-1-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-3-1-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-3-2-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-3-2-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-3-3-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-3-3-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-3-4-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-3-4-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-3-5-float32-size0] FAILED scipy/linalg/tests/test_lapack.py::test_gejsv_general[1-1-3-3-5-float32-size1] FAILED scipy/linalg/tests/test_lapack.py::test_pttrf_pttrs[float32-float32] FAILED scipy/linalg/tests/test_lapack.py::test_geqrfp[matrix_size1-float32] FAILED scipy/linalg/tests/test_lapack.py::test_geqrfp[matrix_size2-float32] FAILED scipy/linalg/tests/test_lapack.py::test_orcsd_uncsd[float32] - Asserti... FAILED scipy/linalg/tests/test_lapack.py::test_pptrs_pptri_pptrf_ppsv_ppcon[float32-False] FAILED scipy/linalg/tests/test_lapack.py::test_gees_trexc[float32] - Assertio... FAILED scipy/linalg/tests/test_lapack.py::test_gges_tgexc[float32] - Assertio... FAILED scipy/linalg/tests/test_lapack.py::test_gees_trsen[float32] - Assertio... FAILED scipy/linalg/tests/test_lapack.py::test_gges_tgsen[float32] - Assertio... FAILED scipy/linalg/tests/test_lapack.py::test_tgsyl[0-N-float32] - Assertion... FAILED scipy/linalg/tests/test_lapack.py::test_tgsyl[0-T-float32] - Assertion... FAILED scipy/linalg/tests/test_lapack.py::test_tgsyl[1-N-float32] - Assertion... FAILED scipy/linalg/tests/test_lapack.py::test_tgsyl[1-T-float32] - Assertion... FAILED scipy/linalg/tests/test_lapack.py::test_tgsyl[2-N-float32] - Assertion... FAILED scipy/linalg/tests/test_lapack.py::test_tgsyl[2-T-float32] - Assertion... FAILED scipy/linalg/tests/test_lapack.py::test_tgsyl[3-N-float32] - Assertion... FAILED scipy/linalg/tests/test_lapack.py::test_tgsyl[3-T-float32] - Assertion... FAILED scipy/linalg/tests/test_lapack.py::test_tgsyl[4-N-float32] - Assertion... FAILED scipy/linalg/tests/test_lapack.py::test_tgsyl[4-T-float32] - Assertion... FAILED scipy/linalg/tests/test_lapack.py::test_sy_hetrs[1-float32-sy] - Asser... FAILED scipy/linalg/tests/test_lapack.py::test_sy_he_tri[1-float32-sy] - Asse... FAILED scipy/sparse/linalg/_eigen/arpack/tests/test_arpack.py::test_symmetric_modes FAILED scipy/sparse/linalg/_eigen/arpack/tests/test_arpack.py::test_symmetric_starting_vector FAILED scipy/sparse/linalg/_eigen/arpack/tests/test_arpack.py::test_real_nonsymmetric_modes FAILED scipy/sparse/linalg/_eigen/arpack/tests/test_arpack.py::test_regression_arpackng_1315 FAILED scipy/sparse/linalg/_eigen/arpack/tests/test_arpack.py::test_real_eigs_real_k_subset FAILED scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_b_orthonormalize[float32-int32-float32-10-50] FAILED scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_b_orthonormalize[float32-int64-float32-10-50] FAILED scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_b_orthonormalize[float32-longlong-float32-10-50] FAILED scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_b_orthonormalize[float32-uint32-float32-10-50] FAILED scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_b_orthonormalize[float32-uint64-float32-10-50] FAILED scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_b_orthonormalize[float32-ulonglong-float32-10-50] FAILED scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_b_orthonormalize[float32-float32-float32-10-50] FAILED scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_b_orthonormalize[float32-float64-float32-10-50] FAILED scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_b_orthonormalize[float32-longdouble-float32-10-50] FAILED scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_b_orthonormalize[float32-complex64-float32-10-50] FAILED scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_b_orthonormalize[float32-complex128-float32-10-50] FAILED scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_b_orthonormalize[float32-clongdouble-float32-10-50] FAILED scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_b_orthonormalize[float64-float32-float32-10-50] FAILED scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_b_orthonormalize[longdouble-float32-float32-10-50] FAILED scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_b_orthonormalize[complex64-float32-float32-10-50] FAILED scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_b_orthonormalize[complex128-float32-float32-10-50] FAILED scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_b_orthonormalize[clongdouble-float32-float32-10-50] FAILED scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_dtypes[array-float32-float32] FAILED scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_dtypes[csr_array-float32-float32] FAILED scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_dtypes[coo_array-float32-float32] FAILED scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_diagonal_data_types[1-15] FAILED scipy/sparse/linalg/_eigen/lobpcg/tests/test_lobpcg.py::test_diagonal_data_types[2-15] FAILED scipy/sparse/linalg/_eigen/tests/test_svds.py::Test_SVDS_ARPACK::test_small_sigma_sparse[float32-shape0] FAILED scipy/sparse/linalg/_eigen/tests/test_svds.py::Test_SVDS_ARPACK::test_small_sigma_sparse[float32-shape1] FAILED scipy/sparse/linalg/_eigen/tests/test_svds.py::Test_SVDS_ARPACK::test_small_sigma[float32-shape1] FAILED scipy/sparse/linalg/_eigen/tests/test_svds.py::Test_SVDS_ARPACK::test_small_sigma2[float32] FAILED scipy/sparse/linalg/_eigen/tests/test_svds.py::Test_SVDS_LOBPCG::test_small_sigma2[float32] FAILED scipy/sparse/linalg/_eigen/tests/test_svds.py::Test_SVDS_PROPACK::test_small_sigma[float32-shape1] FAILED scipy/sparse/linalg/_eigen/tests/test_svds.py::Test_SVDS_PROPACK::test_small_sigma2[float32] FAILED scipy/sparse/linalg/tests/test_expm_multiply.py::test_expm_multiply_dtype[False-float32-float32] = 913 failed, 77785 passed, 4990 skipped, 327 xfailed, 16 xpassed, 2668 warnings in 15897.19s (4:24:57) = error: Bad exit status from /var/tmp/rpm-tmp.UXy9Ca (%check) RPM build errors: Bad exit status from /var/tmp/rpm-tmp.UXy9Ca (%check) Finish: rpmbuild scipy-1.16.2-2.fc44.src.rpm Finish: build phase for scipy-1.16.2-2.fc44.src.rpm INFO: chroot_scan: 1 files copied to /var/lib/copr-rpmbuild/results/chroot_scan INFO: /var/lib/mock/fedora-42-ppc64le-1764958924.560307/root/var/log/dnf5.log INFO: chroot_scan: creating tarball /var/lib/copr-rpmbuild/results/chroot_scan.tar.gz /bin/tar: Removing leading `/' from member names ERROR: Exception(/var/lib/copr-rpmbuild/results/scipy-1.16.2-2.fc44.src.rpm) Config(fedora-42-ppc64le) 296 minutes 58 seconds INFO: Results and/or logs in: /var/lib/copr-rpmbuild/results INFO: Cleaning up build root ('cleanup_on_failure=True') Start: clean chroot INFO: unmounting tmpfs. Finish: clean chroot ERROR: Command failed: # /usr/bin/systemd-nspawn -q -M 1dcf567965424c3997884001f3ad7398 -D /var/lib/mock/fedora-42-ppc64le-1764958924.560307/root -a -u mockbuild --capability=cap_ipc_lock --capability=cap_ipc_lock --bind=/tmp/mock-resolv.ddkl1m0l:/etc/resolv.conf --bind=/dev/btrfs-control --bind=/dev/mapper/control --bind=/dev/fuse --bind=/dev/loop-control --bind=/dev/loop0 --bind=/dev/loop1 --bind=/dev/loop2 --bind=/dev/loop3 --bind=/dev/loop4 --bind=/dev/loop5 --bind=/dev/loop6 --bind=/dev/loop7 --bind=/dev/loop8 --bind=/dev/loop9 --bind=/dev/loop10 --bind=/dev/loop11 --console=pipe --setenv=TERM=vt100 --setenv=SHELL=/bin/bash --setenv=HOME=/builddir --setenv=HOSTNAME=mock --setenv=PATH=/usr/bin:/bin:/usr/sbin:/sbin '--setenv=PROMPT_COMMAND=printf "\033]0;\007"' '--setenv=PS1= \s-\v\$ ' --setenv=LANG=C.UTF-8 --resolv-conf=off bash --login -c '/usr/bin/rpmbuild -ba --noprep --target ppc64le /builddir/build/originals/scipy.spec' Copr build error: Build failed