forked from SciSharp/NumSharp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnp.math.Test.cs
More file actions
142 lines (119 loc) · 5.22 KB
/
np.math.Test.cs
File metadata and controls
142 lines (119 loc) · 5.22 KB
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace NumSharp.UnitTest.APIs
{
[TestClass]
public class ApiMathTest
{
[TestMethod]
public void AddInt32()
{
var x = np.arange(3);
var y = np.arange(3);
var z = np.add(x, y);
Assert.IsTrue(Enumerable.SequenceEqual(z.Data<int>(), new int[] {0, 2, 4}));
x = np.arange(9);
y = np.arange(9);
z = np.add(x, y);
Assert.IsTrue(Enumerable.SequenceEqual(z.Data<int>(), new int[] {0, 2, 4, 6, 8, 10, 12, 14, 16}));
}
[TestMethod]
public void DivideInt32()
{
var x = np.arange(1, 4);
var y = np.arange(1, 4);
var z = np.divide(x, y);
Assert.IsTrue(Enumerable.SequenceEqual(z.Data<int>(), new int[] {1, 1, 1}));
x = np.arange(1, 10);
y = np.arange(1, 10);
z = np.divide(x, y);
Assert.IsTrue(Enumerable.SequenceEqual(z.Data<int>(), new int[] {1, 1, 1, 1, 1, 1, 1, 1, 1}));
}
[TestMethod]
public void Sum2x2Int32()
{
var data = new int[,] {{0, 1}, {0, 5}};
int s = np.sum(data);
Assert.AreEqual(s, 6);
var s0 = np.sum(data, axis: 0);
Assert.IsTrue(Enumerable.SequenceEqual(s0.shape, new int[] {2}));
Assert.IsTrue(Enumerable.SequenceEqual(s0.Data<int>(), new int[] {0, 6}));
var s1 = np.sum(data, axis: 1);
Assert.IsTrue(Enumerable.SequenceEqual(s1.shape, new int[] {2}));
Assert.IsTrue(Enumerable.SequenceEqual(s1.Data<int>(), new int[] {1, 5}));
var s2 = np.sum(data, axis: -1);
Assert.IsTrue(Enumerable.SequenceEqual(s1.shape, new int[] {2}));
Assert.IsTrue(Enumerable.SequenceEqual(s1.Data<int>(), new int[] {1, 5}));
}
[TestMethod]
public void Sum2x3x2Int32()
{
var data = np.arange(12).reshape(2, 3, 2);
int s = (int) np.sum(data);
Assert.AreEqual(s, 66);
var s0 = np.sum(data, axis: 0);
Assert.IsTrue(Enumerable.SequenceEqual(s0.shape, new int[] {3, 2}));
Assert.IsTrue(Enumerable.SequenceEqual(s0.Data<int>(), new int[] {6, 8, 10, 12, 14, 16}));
var s1 = np.sum(data, axis: 1);
Assert.IsTrue(Enumerable.SequenceEqual(s1.shape, new int[] {2, 2}));
Assert.IsTrue(Enumerable.SequenceEqual(s1.Data<int>(), new int[] {6, 9, 24, 27}));
var s2 = np.sum(data, axis: 2);
Assert.IsTrue(Enumerable.SequenceEqual(s2.shape, new int[] {2, 3}));
Assert.IsTrue(Enumerable.SequenceEqual(s2.Data<int>(), new int[] {1, 5, 9, 13, 17, 21}));
var s3 = np.sum(data, axis: -1);
Assert.IsTrue(Enumerable.SequenceEqual(s2.shape, new int[] {2, 3}));
Assert.IsTrue(Enumerable.SequenceEqual(s2.Data<int>(), new int[] {1, 5, 9, 13, 17, 21}));
}
[TestMethod]
public void AddUInt8()
{
var x = np.arange(3).astype(np.uint8);
var y = np.arange(3).astype(np.uint8);
var z = np.add(x, y);
Assert.IsTrue(Enumerable.SequenceEqual(z.Data<Byte>(), new Byte[] {0, 2, 4}));
x = np.arange(9).astype(np.uint8);
y = np.arange(9).astype(np.uint8);
z = np.add(x, y);
Assert.IsTrue(Enumerable.SequenceEqual(z.Data<Byte>(), new Byte[] {0, 2, 4, 6, 8, 10, 12, 14, 16}));
}
[TestMethod]
public void DivideUInt8()
{
var x = np.arange(1, 4).astype(np.uint8);
var y = np.arange(1, 4).astype(np.uint8);
var z = np.divide(x, y);
Assert.IsTrue(Enumerable.SequenceEqual(z.Data<Byte>(), new Byte[] {1, 1, 1}));
x = np.arange(1, 10).astype(np.uint8);
y = np.arange(1, 10).astype(np.uint8);
z = np.divide(x, y);
Assert.IsTrue(Enumerable.SequenceEqual(z.Data<Byte>(), new Byte[] {1, 1, 1, 1, 1, 1, 1, 1, 1}));
}
[TestMethod]
public void AddUInt16()
{
var x = np.arange(3).astype(np.uint16);
var y = np.arange(3).astype(np.uint16);
var z = np.add(x, y);
Assert.IsTrue(Enumerable.SequenceEqual(z.Data<UInt16>(), new UInt16[] {0, 2, 4}));
x = np.arange(9).astype(np.uint16);
y = np.arange(9).astype(np.uint16);
z = np.add(x, y);
Assert.IsTrue(Enumerable.SequenceEqual(z.Data<UInt16>(), new UInt16[] {0, 2, 4, 6, 8, 10, 12, 14, 16}));
}
[TestMethod]
public void DivideUInt16()
{
var x = np.arange(1, 4).astype(np.uint16);
var y = np.arange(1, 4).astype(np.uint16);
var z = np.divide(x, y);
Assert.IsTrue(Enumerable.SequenceEqual(z.Data<UInt16>(), new UInt16[] {1, 1, 1}));
x = np.arange(1, 10).astype(np.uint16);
y = np.arange(1, 10).astype(np.uint16);
z = np.divide(x, y);
Assert.IsTrue(Enumerable.SequenceEqual(z.Data<UInt16>(), new UInt16[] {1, 1, 1, 1, 1, 1, 1, 1, 1}));
}
}
}