forked from cython/cython
/
elementwise.pyx
91 lines (83 loc) · 3.11 KB
/
elementwise.pyx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# tag: numpy
# mode: run
cimport numpy as np
import numpy as np
def test_simple_binop_assign(int[:] m):
"""
>>> a = np.arange(10, dtype='i')
>>> np.asarray(test_simple_binop_assign(a))
array([ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81], dtype=int32)
"""
m[:] = m * m
return m
def test_simple_binop_assign_contig(int[::1] m):
"""
>>> a = np.arange(10, dtype='i')
>>> np.asarray(test_simple_binop_assign_contig(a))
array([ 0, 1, 4, 9, 16, 25, 36, 49, 64, 81], dtype=int32)
"""
m[:] = m * m
return m
def test_simple_binop_assign_2d(int[:, :] m):
"""
>>> a2d = np.arange(100, dtype='i').reshape(10, 10)
>>> np.asarray(test_simple_binop_assign_2d(a2d))
array([[ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27],
[ 30, 33, 36, 39, 42, 45, 48, 51, 54, 57],
[ 60, 63, 66, 69, 72, 75, 78, 81, 84, 87],
[ 90, 93, 96, 99, 102, 105, 108, 111, 114, 117],
[120, 123, 126, 129, 132, 135, 138, 141, 144, 147],
[150, 153, 156, 159, 162, 165, 168, 171, 174, 177],
[180, 183, 186, 189, 192, 195, 198, 201, 204, 207],
[210, 213, 216, 219, 222, 225, 228, 231, 234, 237],
[240, 243, 246, 249, 252, 255, 258, 261, 264, 267],
[270, 273, 276, 279, 282, 285, 288, 291, 294, 297]], dtype=int32)
"""
m[:] = m + m + m
return m
def test_simple_binop_assign_contig_2d(int[:, :] m):
"""
>>> a2d = np.arange(100, dtype='i').reshape(10, 10)
>>> np.asarray(test_simple_binop_assign_contig_2d(a2d))
array([[ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27],
[ 30, 33, 36, 39, 42, 45, 48, 51, 54, 57],
[ 60, 63, 66, 69, 72, 75, 78, 81, 84, 87],
[ 90, 93, 96, 99, 102, 105, 108, 111, 114, 117],
[120, 123, 126, 129, 132, 135, 138, 141, 144, 147],
[150, 153, 156, 159, 162, 165, 168, 171, 174, 177],
[180, 183, 186, 189, 192, 195, 198, 201, 204, 207],
[210, 213, 216, 219, 222, 225, 228, 231, 234, 237],
[240, 243, 246, 249, 252, 255, 258, 261, 264, 267],
[270, 273, 276, 279, 282, 285, 288, 291, 294, 297]], dtype=int32)
"""
m[:] = m + m + m
return m
def test_typedef(np.int32_t[:] m):
"""
>>> np.asarray(test_typedef(np.arange(10, dtype=np.int32)))
array([ 0, 3, 6, 9, 12, 15, 18, 21, 24, 27], dtype=int32)
"""
m[:] = m + m + m
return m
def test_arbitrary_dtypes(long[:] m1, long double[:] m2):
"""
>>> a = np.arange(10, dtype='l')
>>> b = np.arange(10, dtype=np.longdouble)
>>> test_arbitrary_dtypes(a, b)
>>> a
array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
>>> b
array([ 0.0, 2.0, 4.0, 6.0, 8.0, 10.0, 12.0, 14.0, 16.0, 18.0], dtype=float128)
"""
m1[:] = m1 + m1
m2[:] = m2 + m2
# def test_tougher_arbitrary_dtypes(double complex[:] m1, object[:] m2):
# """
# >>> a = np.arange(10, dtype=np.complex64)
# >>> b = np.arange(10, dtype=np.object)
# >>> test_tougher_arbitrary_dtypes(a, b)
# >>> a
# >>> b
# """
# m1[:] = m1 + m1
# m2[:] = m2 + m2