1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.hipparchus.linear;
23
24 import org.hipparchus.analysis.UnivariateFunction;
25 import org.hipparchus.analysis.function.Abs;
26 import org.hipparchus.analysis.function.Acos;
27 import org.hipparchus.analysis.function.Asin;
28 import org.hipparchus.analysis.function.Atan;
29 import org.hipparchus.analysis.function.Cbrt;
30 import org.hipparchus.analysis.function.Ceil;
31 import org.hipparchus.analysis.function.Cos;
32 import org.hipparchus.analysis.function.Cosh;
33 import org.hipparchus.analysis.function.Exp;
34 import org.hipparchus.analysis.function.Expm1;
35 import org.hipparchus.analysis.function.Floor;
36 import org.hipparchus.analysis.function.Log1p;
37 import org.hipparchus.analysis.function.Power;
38 import org.hipparchus.analysis.function.Rint;
39 import org.hipparchus.analysis.function.Sin;
40 import org.hipparchus.analysis.function.Sinh;
41 import org.hipparchus.analysis.function.Sqrt;
42 import org.hipparchus.analysis.function.Tan;
43 import org.hipparchus.analysis.function.Tanh;
44 import org.junit.jupiter.api.Test;
45
46 import static org.junit.jupiter.api.Assertions.assertEquals;
47
48
49
50
51
52 public class SparseRealVectorTest extends RealVectorAbstractTest {
53
54 @Override
55 public RealVector create(double[] data) {
56 return new OpenMapRealVector(data);
57 }
58
59 @Test
60 void testConstructors() {
61 final double[] vec1 = {1d, 2d, 3d};
62 final Double[] dvec1 = {1d, 2d, 3d, 4d, 5d, 6d, 7d, 8d, 9d};
63
64 OpenMapRealVector v0 = new OpenMapRealVector();
65 assertEquals(0, v0.getDimension(), "testData len");
66
67 OpenMapRealVector v1 = new OpenMapRealVector(7);
68 assertEquals(7, v1.getDimension(), "testData len");
69 assertEquals(0.0, v1.getEntry(6), 0, "testData is 0.0 ");
70
71 OpenMapRealVector v3 = new OpenMapRealVector(vec1);
72 assertEquals(3, v3.getDimension(), "testData len");
73 assertEquals(2.0, v3.getEntry(1), 0, "testData is 2.0 ");
74
75
76
77
78
79
80
81
82
83
84
85 RealVector v5_i = new OpenMapRealVector(dvec1);
86 assertEquals(9, v5_i.getDimension(), "testData len");
87 assertEquals(9.0, v5_i.getEntry(8), 0, "testData is 9.0 ");
88
89 OpenMapRealVector v5 = new OpenMapRealVector(dvec1);
90 assertEquals(9, v5.getDimension(), "testData len");
91 assertEquals(9.0, v5.getEntry(8), 0, "testData is 9.0 ");
92
93 OpenMapRealVector v7 = new OpenMapRealVector(v1);
94 assertEquals(7, v7.getDimension(), "testData len");
95 assertEquals(0.0, v7.getEntry(6), 0, "testData is 0.0 ");
96
97 RealVectorTestImpl v7_i = new RealVectorTestImpl(vec1);
98
99 OpenMapRealVector v7_2 = new OpenMapRealVector(v7_i);
100 assertEquals(3, v7_2.getDimension(), "testData len");
101 assertEquals(2.0d, v7_2.getEntry(1), 0, "testData is 0.0 ");
102
103 OpenMapRealVector v8 = new OpenMapRealVector(v1);
104 assertEquals(7, v8.getDimension(), "testData len");
105 assertEquals(0.0, v8.getEntry(6), 0, "testData is 0.0 ");
106
107 }
108
109
110 @Test
111 void testConcurrentModification() {
112 final RealVector u = new OpenMapRealVector(3, 1e-6);
113 u.setEntry(0, 1);
114 u.setEntry(1, 0);
115 u.setEntry(2, 2);
116
117 final RealVector v1 = new OpenMapRealVector(3, 1e-6);
118 v1.setEntry(0, 0);
119 v1.setEntry(1, 3);
120 v1.setEntry(2, 0);
121
122 u.ebeMultiply(v1);
123 u.ebeDivide(v1);
124 }
125
126 @Test
127 @Override
128 public void testEbeMultiplyMixedTypes() {
129 doTestEbeBinaryOperation(BinaryOperation.MUL, true, true);
130 }
131
132 @Test
133 @Override
134 public void testEbeMultiplySameType() {
135 doTestEbeBinaryOperation(BinaryOperation.MUL, false, true);
136 }
137
138 @Test
139 @Override
140 public void testEbeDivideSameType() {
141 doTestEbeBinaryOperation(BinaryOperation.DIV, false, true);
142 }
143
144 @Override
145 protected UnivariateFunction[] createFunctions() {
146 return new UnivariateFunction[] {
147 new Power(2.0), new Exp(), new Expm1(),
148 new Log1p(), new Cosh(), new Sinh(), new Tanh(), new Cos(),
149 new Sin(), new Tan(), new Acos(), new Asin(), new Atan(),
150 new Abs(), new Sqrt(), new Cbrt(), new Ceil(),
151 new Floor(), new Rint()
152 };
153 }
154
155 }