summaryrefslogtreecommitdiff
path: root/numpy/lib
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/lib')
-rw-r--r--numpy/lib/convertcode.py24
-rw-r--r--numpy/lib/setup.py31
-rw-r--r--numpy/lib/tests/test_type_check.py238
-rw-r--r--numpy/lib/tests/test_ufunclike.py63
4 files changed, 344 insertions, 12 deletions
diff --git a/numpy/lib/convertcode.py b/numpy/lib/convertcode.py
index 5c532b394..aba998f78 100644
--- a/numpy/lib/convertcode.py
+++ b/numpy/lib/convertcode.py
@@ -90,20 +90,20 @@ def replaceother(astr):
import datetime
def fromstr(filestr):
filestr = replacetypechars(filestr)
- filestr, fromall1 = changeimports(filestr, 'Numeric', 'scipy')
+ filestr, fromall1 = changeimports(filestr, 'Numeric', 'numpy')
filestr, fromall1 = changeimports(filestr, 'multiarray',
- 'scipy.base.multiarray')
+ 'numpy.core.multiarray')
filestr, fromall1 = changeimports(filestr, 'umath',
- 'scipy.base.umath')
- filestr, fromall1 = changeimports(filestr, 'Precision', 'scipy.base')
- filestr, fromall2 = changeimports(filestr, 'numerix', 'scipy.base')
- filestr, fromall3 = changeimports(filestr, 'scipy_base', 'scipy.base')
- filestr, fromall3 = changeimports(filestr, 'MLab', 'scipy.base.mlab')
- filestr, fromall3 = changeimports(filestr, 'LinearAlgebra', 'scipy.corelinalg')
- filestr, fromall3 = changeimports(filestr, 'RNG', 'scipy.random')
- filestr, fromall3 = changeimports(filestr, 'RandomArray', 'scipy.random')
- filestr, fromall3 = changeimports(filestr, 'FFT', 'scipy.corefft')
- filestr, fromall3 = changeimports(filestr, 'MA', 'scipy.base.ma')
+ 'numpy.core.umath')
+ filestr, fromall1 = changeimports(filestr, 'Precision', 'numpy.core')
+ filestr, fromall2 = changeimports(filestr, 'numerix', 'numpy.core')
+ filestr, fromall3 = changeimports(filestr, 'scipy_base', 'numpy.core')
+ filestr, fromall3 = changeimports(filestr, 'MLab', 'numpy.core.mlab')
+ filestr, fromall3 = changeimports(filestr, 'LinearAlgebra', 'numpy.linalg')
+ filestr, fromall3 = changeimports(filestr, 'RNG', 'numpy.random')
+ filestr, fromall3 = changeimports(filestr, 'RandomArray', 'numpy.random')
+ filestr, fromall3 = changeimports(filestr, 'FFT', 'numpy.dft')
+ filestr, fromall3 = changeimports(filestr, 'MA', 'numpy.core.ma')
fromall = fromall1 or fromall2 or fromall3
filestr = replaceattr(filestr)
filestr = replaceother(filestr)
diff --git a/numpy/lib/setup.py b/numpy/lib/setup.py
new file mode 100644
index 000000000..7e3eeb030
--- /dev/null
+++ b/numpy/lib/setup.py
@@ -0,0 +1,31 @@
+
+import imp
+import os
+from os.path import join
+from glob import glob
+from distutils.dep_util import newer,newer_group
+
+def configuration(parent_package='',top_path=None):
+ from numpy.distutils.misc_util import Configuration,dot_join
+ from numpy.distutils.system_info import get_info
+
+ config = Configuration('lib',parent_package,top_path)
+ local_dir = config.local_path
+
+ config.add_include_dirs(join('..','core','include'))
+
+
+ config.add_extension('_compiled_base',
+ sources=[join('src','_compiled_base.c'),
+ generate_config_h,
+ generate_array_api,
+ ],
+ )
+
+ config.add_data_dir('tests')
+
+ return config
+
+if __name__=='__main__':
+ from numpy.distutils.core import setup
+ setup(**configuration(top_path='').todict())
diff --git a/numpy/lib/tests/test_type_check.py b/numpy/lib/tests/test_type_check.py
new file mode 100644
index 000000000..aac24bd6e
--- /dev/null
+++ b/numpy/lib/tests/test_type_check.py
@@ -0,0 +1,238 @@
+
+import sys
+
+from scipy.testing import *
+set_package_path()
+import scipy.base;reload(scipy.base);reload(scipy.base.type_check)
+from scipy.base import *
+restore_path()
+
+def assert_all(x):
+ assert(all(x)), x
+
+class test_mintypecode(ScipyTestCase):
+
+ def check_default_1(self):
+ for itype in '1bcsuwil':
+ assert_equal(mintypecode(itype),'d')
+ assert_equal(mintypecode('f'),'f')
+ assert_equal(mintypecode('d'),'d')
+ assert_equal(mintypecode('F'),'F')
+ assert_equal(mintypecode('D'),'D')
+
+ def check_default_2(self):
+ for itype in '1bcsuwil':
+ assert_equal(mintypecode(itype+'f'),'f')
+ assert_equal(mintypecode(itype+'d'),'d')
+ assert_equal(mintypecode(itype+'F'),'F')
+ assert_equal(mintypecode(itype+'D'),'D')
+ assert_equal(mintypecode('ff'),'f')
+ assert_equal(mintypecode('fd'),'d')
+ assert_equal(mintypecode('fF'),'F')
+ assert_equal(mintypecode('fD'),'D')
+ assert_equal(mintypecode('df'),'d')
+ assert_equal(mintypecode('dd'),'d')
+ #assert_equal(mintypecode('dF',savespace=1),'F')
+ assert_equal(mintypecode('dF'),'D')
+ assert_equal(mintypecode('dD'),'D')
+ assert_equal(mintypecode('Ff'),'F')
+ #assert_equal(mintypecode('Fd',savespace=1),'F')
+ assert_equal(mintypecode('Fd'),'D')
+ assert_equal(mintypecode('FF'),'F')
+ assert_equal(mintypecode('FD'),'D')
+ assert_equal(mintypecode('Df'),'D')
+ assert_equal(mintypecode('Dd'),'D')
+ assert_equal(mintypecode('DF'),'D')
+ assert_equal(mintypecode('DD'),'D')
+
+ def check_default_3(self):
+ assert_equal(mintypecode('fdF'),'D')
+ #assert_equal(mintypecode('fdF',savespace=1),'F')
+ assert_equal(mintypecode('fdD'),'D')
+ assert_equal(mintypecode('fFD'),'D')
+ assert_equal(mintypecode('dFD'),'D')
+
+ assert_equal(mintypecode('ifd'),'d')
+ assert_equal(mintypecode('ifF'),'F')
+ assert_equal(mintypecode('ifD'),'D')
+ assert_equal(mintypecode('idF'),'D')
+ #assert_equal(mintypecode('idF',savespace=1),'F')
+ assert_equal(mintypecode('idD'),'D')
+
+class test_isscalar(ScipyTestCase):
+ def check_basic(self):
+ assert(isscalar(3))
+ assert(not isscalar([3]))
+ assert(not isscalar((3,)))
+ assert(isscalar(3j))
+ assert(isscalar(10L))
+ assert(isscalar(4.0))
+
+class test_real(ScipyTestCase):
+ def check_real(self):
+ y = rand(10,)
+ assert_array_equal(y,real(y))
+
+ def check_cmplx(self):
+ y = rand(10,)+1j*rand(10,)
+ assert_array_equal(y.real,real(y))
+
+class test_imag(ScipyTestCase):
+ def check_real(self):
+ y = rand(10,)
+ assert_array_equal(0,imag(y))
+
+ def check_cmplx(self):
+ y = rand(10,)+1j*rand(10,)
+ assert_array_equal(y.imag,imag(y))
+
+class test_iscomplex(ScipyTestCase):
+ def check_fail(self):
+ z = array([-1,0,1])
+ res = iscomplex(z)
+ assert(not sometrue(res))
+ def check_pass(self):
+ z = array([-1j,1,0])
+ res = iscomplex(z)
+ assert_array_equal(res,[1,0,0])
+
+class test_isreal(ScipyTestCase):
+ def check_pass(self):
+ z = array([-1,0,1j])
+ res = isreal(z)
+ assert_array_equal(res,[1,1,0])
+ def check_fail(self):
+ z = array([-1j,1,0])
+ res = isreal(z)
+ assert_array_equal(res,[0,1,1])
+
+class test_iscomplexobj(ScipyTestCase):
+ def check_basic(self):
+ z = array([-1,0,1])
+ assert(not iscomplexobj(z))
+ z = array([-1j,0,-1])
+ assert(iscomplexobj(z))
+
+class test_isrealobj(ScipyTestCase):
+ def check_basic(self):
+ z = array([-1,0,1])
+ assert(isrealobj(z))
+ z = array([-1j,0,-1])
+ assert(not isrealobj(z))
+
+class test_isnan(ScipyTestCase):
+ def check_goodvalues(self):
+ z = array((-1.,0.,1.))
+ res = isnan(z) == 0
+ assert_all(alltrue(res))
+ def check_posinf(self):
+ assert_all(isnan(array((1.,))/0.) == 0)
+ def check_neginf(self):
+ assert_all(isnan(array((-1.,))/0.) == 0)
+ def check_ind(self):
+ assert_all(isnan(array((0.,))/0.) == 1)
+ #def check_qnan(self): log(-1) return pi*j now
+ # assert_all(isnan(log(-1.)) == 1)
+ def check_integer(self):
+ assert_all(isnan(1) == 0)
+ def check_complex(self):
+ assert_all(isnan(1+1j) == 0)
+ def check_complex1(self):
+ assert_all(isnan(array(0+0j)/0.) == 1)
+
+class test_isfinite(ScipyTestCase):
+ def check_goodvalues(self):
+ z = array((-1.,0.,1.))
+ res = isfinite(z) == 1
+ assert_all(alltrue(res))
+ def check_posinf(self):
+ assert_all(isfinite(array((1.,))/0.) == 0)
+ def check_neginf(self):
+ assert_all(isfinite(array((-1.,))/0.) == 0)
+ def check_ind(self):
+ assert_all(isfinite(array((0.,))/0.) == 0)
+ #def check_qnan(self):
+ # assert_all(isfinite(log(-1.)) == 0)
+ def check_integer(self):
+ assert_all(isfinite(1) == 1)
+ def check_complex(self):
+ assert_all(isfinite(1+1j) == 1)
+ def check_complex1(self):
+ assert_all(isfinite(array(1+1j)/0.) == 0)
+
+class test_isinf(ScipyTestCase):
+ def check_goodvalues(self):
+ z = array((-1.,0.,1.))
+ res = isinf(z) == 0
+ assert_all(alltrue(res))
+ def check_posinf(self):
+ assert_all(isinf(array((1.,))/0.) == 1)
+ def check_posinf_scalar(self):
+ assert_all(isinf(array(1.,)/0.) == 1)
+ def check_neginf(self):
+ assert_all(isinf(array((-1.,))/0.) == 1)
+ def check_neginf_scalar(self):
+ assert_all(isinf(array(-1.)/0.) == 1)
+ def check_ind(self):
+ assert_all(isinf(array((0.,))/0.) == 0)
+ #def check_qnan(self):
+ # assert_all(isinf(log(-1.)) == 0)
+ # assert_all(isnan(log(-1.)) == 1)
+
+class test_isposinf(ScipyTestCase):
+ def check_generic(self):
+ vals = isposinf(array((-1.,0,1))/0.)
+ assert(vals[0] == 0)
+ assert(vals[1] == 0)
+ assert(vals[2] == 1)
+
+class test_isneginf(ScipyTestCase):
+ def check_generic(self):
+ vals = isneginf(array((-1.,0,1))/0.)
+ assert(vals[0] == 1)
+ assert(vals[1] == 0)
+ assert(vals[2] == 0)
+
+class test_nan_to_num(ScipyTestCase):
+ def check_generic(self):
+ vals = nan_to_num(array((-1.,0,1))/0.)
+ assert_all(vals[0] < -1e10) and assert_all(isfinite(vals[0]))
+ assert(vals[1] == 0)
+ assert_all(vals[2] > 1e10) and assert_all(isfinite(vals[2]))
+ def check_integer(self):
+ vals = nan_to_num(1)
+ assert_all(vals == 1)
+ def check_complex_good(self):
+ vals = nan_to_num(1+1j)
+ assert_all(vals == 1+1j)
+ def check_complex_bad(self):
+ v = 1+1j
+ v += array(0+1.j)/0.
+ vals = nan_to_num(v)
+ # !! This is actually (unexpectedly) zero
+ assert_all(isfinite(vals))
+ def check_complex_bad2(self):
+ v = 1+1j
+ v += array(-1+1.j)/0.
+ vals = nan_to_num(v)
+ assert_all(isfinite(vals))
+ #assert_all(vals.imag > 1e10) and assert_all(isfinite(vals))
+ # !! This is actually (unexpectedly) positive
+ # !! inf. Comment out for now, and see if it
+ # !! changes
+ #assert_all(vals.real < -1e10) and assert_all(isfinite(vals))
+
+
+class test_real_if_close(ScipyTestCase):
+ def check_basic(self):
+ a = rand(10)
+ b = real_if_close(a+1e-15j)
+ assert_all(isrealobj(b))
+ assert_array_equal(a,b)
+ b = real_if_close(a+1e-7j)
+ assert_all(iscomplexobj(b))
+ b = real_if_close(a+1e-7j,tol=1e-6)
+ assert_all(isrealobj(b))
+
+if __name__ == "__main__":
+ ScipyTest().run()
diff --git a/numpy/lib/tests/test_ufunclike.py b/numpy/lib/tests/test_ufunclike.py
new file mode 100644
index 000000000..ca06140c7
--- /dev/null
+++ b/numpy/lib/tests/test_ufunclike.py
@@ -0,0 +1,63 @@
+"""
+>>> import scipy.base as nx
+>>> import scipy.base.ufunclike as U
+
+Test fix:
+>>> a = nx.array([[1.0, 1.1, 1.5, 1.8], [-1.0, -1.1, -1.5, -1.8]])
+>>> U.fix(a)
+array([[ 1., 1., 1., 1.],
+ [ 0., -1., -1., -1.]])
+>>> y = nx.zeros(a.shape, float)
+>>> U.fix(a, y)
+array([[ 1., 1., 1., 1.],
+ [ 0., -1., -1., -1.]])
+>>> y
+array([[ 1., 1., 1., 1.],
+ [ 0., -1., -1., -1.]])
+
+Test isposinf, isneginf, sign
+>>> a = nx.array([nx.Inf, -nx.Inf, nx.NaN, 0.0, 3.0, -3.0])
+>>> U.isposinf(a)
+array([True, False, False, False, False, False], dtype=bool)
+>>> U.isneginf(a)
+array([False, True, False, False, False, False], dtype=bool)
+>>> U.sign(a)
+array([ 1, -1, 0, 0, 1, -1])
+
+Same thing with an output array:
+>>> y = nx.zeros(a.shape, bool)
+>>> U.isposinf(a, y)
+array([True, False, False, False, False, False], dtype=bool)
+>>> y
+array([True, False, False, False, False, False], dtype=bool)
+>>> U.isneginf(a, y)
+array([False, True, False, False, False, False], dtype=bool)
+>>> y
+array([False, True, False, False, False, False], dtype=bool)
+>>> U.sign(a, y)
+array([True, True, False, False, True, True], dtype=bool)
+>>> y
+array([True, True, False, False, True, True], dtype=bool)
+
+Now log2:
+>>> a = nx.array([4.5, 2.3, 6.5])
+>>> U.log2(a)
+array([ 2.169925 , 1.20163386, 2.70043972])
+>>> 2**_
+array([ 4.5, 2.3, 6.5])
+>>> y = nx.zeros(a.shape, float)
+>>> U.log2(a, y)
+array([ 2.169925 , 1.20163386, 2.70043972])
+>>> y
+array([ 2.169925 , 1.20163386, 2.70043972])
+
+"""
+
+from scipy.testing import *
+
+import doctest
+def test_suite(level=1):
+ return doctest.DocTestSuite()
+
+if __name__ == "__main__":
+ ScipyTest().run()