1 package org.djunits.value.vfloat.matrix;
2
3 import org.djunits.unit.AbsoluteLinearUnit;
4 import org.djunits.unit.Unit;
5 import org.djunits.value.StorageType;
6 import org.djunits.value.ValueException;
7 import org.djunits.value.vfloat.scalar.FloatScalar;
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 public abstract class FloatMatrix
23 {
24
25
26
27
28
29 public static class Abs<AU extends AbsoluteLinearUnit<AU, RU>, RU extends Unit<RU>> extends AbstractFloatMatrixAbs<AU, RU,
30 FloatMatrix.Abs<AU, RU>, FloatMatrix.Rel<RU>, MutableFloatMatrix.Abs<AU, RU>, FloatScalar.Abs<AU, RU>>
31 {
32
33 private static final long serialVersionUID = 20151003L;
34
35
36
37
38
39
40
41
42 public Abs(final float[][] values, final AU unit, final StorageType storageType) throws ValueException
43 {
44 super(values, unit, storageType);
45 }
46
47
48
49
50
51
52
53 public Abs(final FloatScalar.Abs<AU, RU>[][] values, final StorageType storageType) throws ValueException
54 {
55 super(values, storageType);
56 }
57
58
59
60
61
62
63 Abs(final FloatMatrixData data, final AU unit)
64 {
65 super(data, unit);
66 }
67
68
69 @Override
70 @SuppressWarnings("designforextension")
71 public FloatMatrix.Abs<AU, RU> toDense()
72 {
73 return this.data.isDense() ? this : instantiateTypeAbs(this.data.toDense(), getUnit());
74 }
75
76
77 @Override
78 @SuppressWarnings("designforextension")
79 public FloatMatrix.Abs<AU, RU> toSparse()
80 {
81 return this.data.isSparse() ? this : instantiateTypeAbs(this.data.toSparse(), getUnit());
82 }
83
84
85 @Override
86 protected final FloatMatrix.Abs<AU, RU> instantiateTypeAbs(final FloatMatrixData dmd, final AU unit)
87 {
88 return new FloatMatrix.Abs<AU, RU>(dmd, unit);
89 }
90
91
92 @Override
93 protected final FloatMatrix.Rel<RU> instantiateTypeRel(final FloatMatrixData dmd, final RU unit)
94 {
95 return new FloatMatrix.Rel<RU>(dmd, unit);
96 }
97
98
99 @Override
100 protected final MutableFloatMatrix.Abs<AU, RU> instantiateMutableType(final FloatMatrixData dmd, final AU unit)
101 {
102 return new MutableFloatMatrix.Abs<AU, RU>(dmd, unit);
103 }
104
105
106 @Override
107 protected final FloatScalar.Abs<AU, RU> instantiateScalar(final float value, final AU unit)
108 {
109 return new FloatScalar.Abs<AU, RU>(value, unit);
110 }
111 }
112
113
114
115
116
117 public static class Rel<U extends Unit<U>>
118 extends AbstractFloatMatrixRel<U, FloatMatrix.Rel<U>, MutableFloatMatrix.Rel<U>, FloatScalar.Rel<U>>
119 {
120
121 private static final long serialVersionUID = 20151003L;
122
123
124
125
126
127
128
129
130 public Rel(final float[][] values, final U unit, final StorageType storageType) throws ValueException
131 {
132 super(values, unit, storageType);
133 }
134
135
136
137
138
139
140
141 public Rel(final FloatScalar.Rel<U>[][] values, final StorageType storageType) throws ValueException
142 {
143 super(values, storageType);
144 }
145
146
147
148
149
150
151 Rel(final FloatMatrixData data, final U unit)
152 {
153 super(data, unit);
154 }
155
156
157 @Override
158 @SuppressWarnings("designforextension")
159 public FloatMatrix.Rel<U> toDense()
160 {
161 return this.data.isDense() ? this : instantiateType(this.data.toDense(), getUnit());
162 }
163
164
165 @Override
166 @SuppressWarnings("designforextension")
167 public FloatMatrix.Rel<U> toSparse()
168 {
169 return this.data.isSparse() ? this : instantiateType(this.data.toSparse(), getUnit());
170 }
171
172
173 @Override
174 protected final FloatMatrix.Rel<U> instantiateType(final FloatMatrixData dmd, final U unit)
175 {
176 return new FloatMatrix.Rel<U>(dmd, unit);
177 }
178
179
180 @Override
181 protected final MutableFloatMatrix.Rel<U> instantiateMutableType(final FloatMatrixData dmd, final U unit)
182 {
183 return new MutableFloatMatrix.Rel<U>(dmd, unit);
184 }
185
186
187 @Override
188 protected final FloatScalar.Rel<U> instantiateScalar(final float value, final U unit)
189 {
190 return new FloatScalar.Rel<U>(value, unit);
191 }
192 }
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207 static <AU extends AbsoluteLinearUnit<AU, RU>, RU extends Unit<RU>> FloatMatrix.Abs<AU, RU> plus(
208 final FloatMatrix.Abs<AU, RU> left, final FloatMatrix.Rel<RU> right) throws ValueException
209 {
210 return left.mutable().plus(right);
211 }
212
213
214
215
216
217
218
219
220
221 static <U extends Unit<U>> FloatMatrix.Rel<U> plus(final FloatMatrix.Rel<U> left, final FloatMatrix.Rel<U> right)
222 throws ValueException
223 {
224 return left.mutable().plus(right);
225 }
226
227
228
229
230
231
232
233
234
235
236 static <AU extends AbsoluteLinearUnit<AU, RU>, RU extends Unit<RU>> FloatMatrix.Abs<AU, RU> minus(
237 final FloatMatrix.Abs<AU, RU> left, final FloatMatrix.Rel<RU> right) throws ValueException
238 {
239 return left.mutable().minus(right);
240 }
241
242
243
244
245
246
247
248
249
250
251 static <AU extends AbsoluteLinearUnit<AU, RU>, RU extends Unit<RU>> FloatMatrix.Rel<RU> minus(
252 final FloatMatrix.Abs<AU, RU> left, final FloatMatrix.Abs<AU, RU> right) throws ValueException
253 {
254 return left.mutable().minus(right);
255 }
256
257
258
259
260
261
262
263
264
265 static <U extends Unit<U>> FloatMatrix.Rel<U> minus(final FloatMatrix.Rel<U> left, final FloatMatrix.Rel<U> right)
266 throws ValueException
267 {
268 return left.mutable().minus(right);
269 }
270
271
272
273
274
275
276
277
278
279
280 static <U extends Unit<U>> FloatMatrix.Rel<U> times(final FloatMatrix.Rel<U> left, final FloatMatrix.Rel<U> right)
281 throws ValueException
282 {
283 return left.mutable().times(right);
284 }
285
286
287
288
289
290
291
292
293
294
295 static <U extends Unit<U>> FloatMatrix.Rel<U> divide(final FloatMatrix.Rel<U> left, final FloatMatrix.Rel<U> right)
296 throws ValueException
297 {
298 return left.mutable().divide(right);
299 }
300
301 }