1 package org.djunits.value.vdouble.matrix;
2
3 import org.djunits.unit.AbsoluteLinearUnit;
4 import org.djunits.unit.Unit;
5 import org.djunits.value.FunctionsAbs;
6 import org.djunits.value.MathFunctionsAbs;
7 import org.djunits.value.MathFunctionsRel;
8 import org.djunits.value.StorageType;
9 import org.djunits.value.ValueException;
10 import org.djunits.value.vdouble.DoubleMathFunctions;
11 import org.djunits.value.vdouble.scalar.DoubleScalar;
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 public abstract class MutableDoubleMatrix
27 {
28
29
30
31
32
33 public static class Abs<AU extends AbsoluteLinearUnit<AU, RU>, RU extends Unit<RU>> extends
34 AbstractMutableDoubleMatrixAbs<AU, RU, DoubleMatrix.Abs<AU, RU>, DoubleMatrix.Rel<RU>,
35 MutableDoubleMatrix.Abs<AU, RU>, DoubleScalar.Abs<AU, RU>>
36 implements MathFunctionsAbs<MutableDoubleMatrix.Abs<AU, RU>>,
37 FunctionsAbs<AU, RU, DoubleMatrix.Abs<AU, RU>, DoubleMatrix.Rel<RU>>,
38 DoubleMathFunctions<MutableDoubleMatrix.Abs<AU, RU>>
39 {
40
41 private static final long serialVersionUID = 20151003L;
42
43
44
45
46
47
48
49
50 public Abs(final double[][] values, final AU unit, final StorageType storageType) throws ValueException
51 {
52 super(values, unit, storageType);
53 }
54
55
56
57
58
59
60
61 public Abs(final DoubleScalar.Abs<AU, RU>[][] values, final StorageType storageType) throws ValueException
62 {
63 super(values, storageType);
64 }
65
66
67
68
69
70
71 Abs(final DoubleMatrixData data, final AU unit)
72 {
73 super(data, unit);
74 }
75
76
77 @Override
78 @SuppressWarnings("designforextension")
79 public MutableDoubleMatrix.Abs<AU, RU> toDense()
80 {
81 return this.data.isDense() ? this : instantiateMutableType(this.data.toDense(), getUnit());
82 }
83
84
85 @Override
86 @SuppressWarnings("designforextension")
87 public MutableDoubleMatrix.Abs<AU, RU> toSparse()
88 {
89 return this.data.isSparse() ? this : instantiateMutableType(this.data.toSparse(), getUnit());
90 }
91
92
93 @Override
94 protected final DoubleMatrix.Abs<AU, RU> instantiateTypeAbs(final DoubleMatrixData dmd, final AU unit)
95 {
96 return new DoubleMatrix.Abs<AU, RU>(dmd, unit);
97 }
98
99
100 @Override
101 protected final DoubleMatrix.Rel<RU> instantiateTypeRel(final DoubleMatrixData dmd, final RU unit)
102 {
103 return new DoubleMatrix.Rel<RU>(dmd, unit);
104 }
105
106
107 @Override
108 protected final MutableDoubleMatrix.Abs<AU, RU> instantiateMutableType(final DoubleMatrixData dmd, final AU unit)
109 {
110 return new MutableDoubleMatrix.Abs<AU, RU>(dmd, unit);
111 }
112
113
114 @Override
115 protected final DoubleScalar.Abs<AU, RU> instantiateScalar(final double value, final AU unit)
116 {
117 return new DoubleScalar.Abs<AU, RU>(value, unit);
118 }
119 }
120
121
122
123
124
125 public static class Rel<U extends Unit<U>>
126 extends AbstractMutableDoubleMatrixRel<U, DoubleMatrix.Rel<U>, MutableDoubleMatrix.Rel<U>, DoubleScalar.Rel<U>>
127 implements MathFunctionsRel<MutableDoubleMatrix.Rel<U>>
128 {
129
130 private static final long serialVersionUID = 20151003L;
131
132
133
134
135
136
137
138
139 public Rel(final double[][] values, final U unit, final StorageType storageType) throws ValueException
140 {
141 super(values, unit, storageType);
142 }
143
144
145
146
147
148
149
150 public Rel(final DoubleScalar.Rel<U>[][] values, final StorageType storageType) throws ValueException
151 {
152 super(values, storageType);
153 }
154
155
156
157
158
159
160 Rel(final DoubleMatrixData data, final U unit)
161 {
162 super(data, unit);
163 }
164
165
166 @Override
167 @SuppressWarnings("designforextension")
168 public MutableDoubleMatrix.Rel<U> toDense()
169 {
170 return this.data.isDense() ? this : new MutableDoubleMatrix.Rel<U>(this.data.toDense(), getUnit());
171 }
172
173
174 @Override
175 @SuppressWarnings("designforextension")
176 public MutableDoubleMatrix.Rel<U> toSparse()
177 {
178 return this.data.isSparse() ? this : new MutableDoubleMatrix.Rel<U>(this.data.toSparse(), getUnit());
179 }
180
181
182 @Override
183 protected final DoubleMatrix.Rel<U> instantiateType(final DoubleMatrixData dmd, final U unit)
184 {
185 return new DoubleMatrix.Rel<U>(dmd, unit);
186 }
187
188
189 @Override
190 protected final MutableDoubleMatrix.Rel<U> instantiateMutableType(final DoubleMatrixData dmd, final U unit)
191 {
192 return new MutableDoubleMatrix.Rel<U>(dmd, unit);
193 }
194
195
196 @Override
197 protected final DoubleScalar.Rel<U> instantiateScalar(final double value, final U unit)
198 {
199 return new DoubleScalar.Rel<U>(value, unit);
200 }
201 }
202 }