-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
Open
Labels
Description
Describe your issue.
I'm working on adding an axis argument to scipy.stats.pearsonr. It uses scipy.linalg.norm instead of (e.g.) np.linalg.norm because scipy.linalg.norm tends to avoid premature overflow.
from scipy import linalg
x = [-5e210, 5e210, 3e200, -3e200]
linalg.norm(x)
# 7.071067811865475e+210Unfortunately, that advantage is lost when axis is not None.
linalg.norm(x, axis=0) # warning and infSimilarly, premature underflow can occur when the argument has small magnitude elements and axis is not None.
I can work around it if need be (e.g. manually scale), but can linalg.norm avoid premature under/overflow regardless of axis?
Reproducing Code Example
from scipy import linalg
x = [-5e210, 5e210, 3e200, -3e200]
linalg.norm(x, axis=0)Error message
RuntimeWarning: overflow encountered in multiply s = (x.conj() * x).realSciPy/NumPy/Python version and system information
import sys, scipy, numpy; print(scipy.__version__, numpy.__version__, sys.version_info); scipy.show_config()
1.13.0.dev0+1376.8360bac 1.26.0 sys.version_info(major=3, minor=11, micro=6, releaselevel='final', serial=0)
Build Dependencies:
blas:
detection method: pkgconfig
found: true
include directory: /Users/matthaberland/miniforge3/envs/scipy-dev/include
lib directory: /Users/matthaberland/miniforge3/envs/scipy-dev/lib
name: openblas
openblas configuration: USE_64BITINT=0 DYNAMIC_ARCH=0 DYNAMIC_OLDER= NO_CBLAS=
NO_LAPACK=0 NO_LAPACKE= NO_AFFINITY=1 USE_OPENMP=1 VORTEX MAX_THREADS=128
pc file directory: /Users/matthaberland/miniforge3/envs/scipy-dev/lib/pkgconfig
version: 0.3.24
lapack:
detection method: pkgconfig
found: true
include directory: /Users/matthaberland/miniforge3/envs/scipy-dev/include
lib directory: /Users/matthaberland/miniforge3/envs/scipy-dev/lib
name: openblas
openblas configuration: USE_64BITINT=0 DYNAMIC_ARCH=0 DYNAMIC_OLDER= NO_CBLAS=
NO_LAPACK=0 NO_LAPACKE= NO_AFFINITY=1 USE_OPENMP=1 VORTEX MAX_THREADS=128
pc file directory: /Users/matthaberland/miniforge3/envs/scipy-dev/lib/pkgconfig
version: 0.3.24
pybind11:
detection method: pkgconfig
include directory: /Users/matthaberland/miniforge3/envs/scipy-dev/include
name: pybind11
version: 2.11.1
Compilers:
c:
args: -ftree-vectorize, -fPIC, -fPIE, -fstack-protector-strong, -O2, -pipe, -isystem,
/Users/matthaberland/miniforge3/envs/scipy-dev/include, -D_FORTIFY_SOURCE=2,
-isystem, /Users/matthaberland/miniforge3/envs/scipy-dev/include
commands: arm64-apple-darwin20.0.0-clang
linker: ld64
linker args: -Wl,-pie, -Wl,-headerpad_max_install_names, -Wl,-dead_strip_dylibs,
-Wl,-rpath,/Users/matthaberland/miniforge3/envs/scipy-dev/lib, -L/Users/matthaberland/miniforge3/envs/scipy-dev/lib,
-ftree-vectorize, -fPIC, -fPIE, -fstack-protector-strong, -O2, -pipe, -isystem,
/Users/matthaberland/miniforge3/envs/scipy-dev/include, -D_FORTIFY_SOURCE=2,
-isystem, /Users/matthaberland/miniforge3/envs/scipy-dev/include
name: clang
version: 15.0.7
c++:
args: -ftree-vectorize, -fPIC, -fPIE, -fstack-protector-strong, -O2, -pipe, -stdlib=libc++,
-fvisibility-inlines-hidden, -fmessage-length=0, -isystem, /Users/matthaberland/miniforge3/envs/scipy-dev/include,
-D_FORTIFY_SOURCE=2, -isystem, /Users/matthaberland/miniforge3/envs/scipy-dev/include
commands: arm64-apple-darwin20.0.0-clang++
linker: ld64
linker args: -Wl,-pie, -Wl,-headerpad_max_install_names, -Wl,-dead_strip_dylibs,
-Wl,-rpath,/Users/matthaberland/miniforge3/envs/scipy-dev/lib, -L/Users/matthaberland/miniforge3/envs/scipy-dev/lib,
-ftree-vectorize, -fPIC, -fPIE, -fstack-protector-strong, -O2, -pipe, -stdlib=libc++,
-fvisibility-inlines-hidden, -fmessage-length=0, -isystem, /Users/matthaberland/miniforge3/envs/scipy-dev/include,
-D_FORTIFY_SOURCE=2, -isystem, /Users/matthaberland/miniforge3/envs/scipy-dev/include
name: clang
version: 15.0.7
cython:
commands: cython
linker: cython
name: cython
version: 3.0.4
fortran:
args: -march=armv8.3-a, -ftree-vectorize, -fPIC, -fno-stack-protector, -O2, -pipe,
-isystem, /Users/matthaberland/miniforge3/envs/scipy-dev/include
commands: /Users/matthaberland/miniforge3/envs/scipy-dev/bin/arm64-apple-darwin20.0.0-gfortran
linker: ld64
linker args: -Wl,-pie, -Wl,-headerpad_max_install_names, -Wl,-dead_strip_dylibs,
-Wl,-rpath,/Users/matthaberland/miniforge3/envs/scipy-dev/lib, -L/Users/matthaberland/miniforge3/envs/scipy-dev/lib,
-march=armv8.3-a, -ftree-vectorize, -fPIC, -fno-stack-protector, -O2, -pipe,
-isystem, /Users/matthaberland/miniforge3/envs/scipy-dev/include
name: gcc
version: 12.3.0
pythran:
include directory: ../../../miniforge3/envs/scipy-dev/lib/python3.11/site-packages/pythran
version: 0.14.0
Machine Information:
build:
cpu: aarch64
endian: little
family: aarch64
system: darwin
cross-compiled: false
host:
cpu: aarch64
endian: little
family: aarch64
system: darwin
Python Information:
path: /Users/matthaberland/miniforge3/envs/scipy-dev/bin/python
version: '3.11'