diff options
Diffstat (limited to 'numpy/dual.py')
-rw-r--r-- | numpy/dual.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/numpy/dual.py b/numpy/dual.py new file mode 100644 index 000000000..c47f8f820 --- /dev/null +++ b/numpy/dual.py @@ -0,0 +1,57 @@ +# This module should be used for functions both in numpy and scipy if +# you want to use the numpy version if available but the scipy version +# otherwise. +# Usage --- from numpy.dual import fft, inv + +__all__ = ['fft','ifft','fftn','ifftn','fft2','ifft2', + 'norm','inv','svd','solve','det','eig','eigvals', + 'eigh','eigvalsh','lstsq', 'pinv','cholesky','i0'] + +import numpy.linalg as linpkg +import numpy.fft as fftpkg +from numpy.lib import i0 +import sys + + +fft = fftpkg.fft +ifft = fftpkg.ifft +fftn = fftpkg.fftn +ifftn = fftpkg.ifftn +fft2 = fftpkg.fft2 +ifft2 = fftpkg.ifft2 + +norm = linpkg.norm +inv = linpkg.inv +svd = linpkg.svd +solve = linpkg.solve +det = linpkg.det +eig = linpkg.eig +eigvals = linpkg.eigvals +eigh = linpkg.eigh +eigvalsh = linpkg.eigvalsh +lstsq = linpkg.lstsq +pinv = linpkg.pinv +cholesky = linpkg.cholesky + +_restore_dict = {} + +def register_func(name, func): + if name not in __all__: + raise ValueError, "%s not a dual function." % name + f = sys._getframe(0).f_globals + _restore_dict[name] = f[name] + f[name] = func + +def restore_func(name): + if name not in __all__: + raise ValueError, "%s not a dual function." % name + try: + val = _restore_dict[name] + except KeyError: + return + else: + sys._getframe(0).f_globals[name] = val + +def restore_all(): + for name in _restore_dict.keys(): + restore_func(name) |