1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.hipparchus.analysis.differentiation;
19
20 import org.hipparchus.Field;
21 import org.hipparchus.analysis.differentiation.DerivativeTest.TestDerivative;
22 import org.hipparchus.exception.MathIllegalArgumentException;
23 import org.hipparchus.exception.MathRuntimeException;
24 import org.hipparchus.exception.NullArgumentException;
25 import org.hipparchus.util.FastMath;
26 import org.junit.jupiter.api.Test;
27
28 import static org.junit.jupiter.api.Assertions.assertEquals;
29
30 class FieldDerivativeTest {
31
32 private static final double TOLERANCE = 1e-10;
33
34 @Test
35 void testGetReal() {
36
37 final double expectedOperation = 0.5;
38 final TestDerivative testDerivative = new TestDerivative(expectedOperation);
39 final TestFieldDerivative testFieldDerivative = new TestFieldDerivative(testDerivative);
40
41 final double actualOperation = testFieldDerivative.getReal();
42
43 assertEquals(expectedOperation, actualOperation, 0.);
44 }
45
46 @Test
47 void testPow() {
48
49 final TestDerivative testDerivative = new TestDerivative(2.);
50 final TestFieldDerivative testFieldDerivative = new TestFieldDerivative(testDerivative);
51 final TestDerivative testDerivative2 = new TestDerivative(3.);
52 final TestFieldDerivative testFieldDerivative2 = new TestFieldDerivative(testDerivative2);
53
54 final TestFieldDerivative actualOperation = testFieldDerivative.pow(testFieldDerivative2);
55
56 final TestFieldDerivative expectedOperation = new TestFieldDerivative(new TestDerivative(FastMath
57 .pow(testDerivative.getValue(), testDerivative2.getValue())));
58 assertEquals(expectedOperation.getValue().getValue(), actualOperation.getValue().getValue(), TOLERANCE);
59 }
60
61 @Test
62 void testLog10() {
63
64 final TestDerivative testDerivative = new TestDerivative(0.5);
65 final TestFieldDerivative testFieldDerivative = new TestFieldDerivative(testDerivative);
66
67 final TestFieldDerivative actualOperation = testFieldDerivative.log10();
68
69 final TestFieldDerivative expectedOperation = new TestFieldDerivative(new TestDerivative(FastMath
70 .log10(testDerivative.getValue())));
71 assertEquals(expectedOperation.getValue().getValue(), actualOperation.getValue().getValue(), TOLERANCE);
72 }
73
74 @Test
75 void testCosh() {
76
77 final TestDerivative testDerivative = new TestDerivative(0.5);
78 final TestFieldDerivative testFieldDerivative = new TestFieldDerivative(testDerivative);
79
80 final TestFieldDerivative actualOperation = testFieldDerivative.cosh();
81
82 final TestFieldDerivative expectedOperation = new TestFieldDerivative(new TestDerivative(FastMath
83 .cosh(testDerivative.getValue())));
84 assertEquals(expectedOperation.getValue().getValue(), actualOperation.getValue().getValue(), TOLERANCE);
85 }
86
87 @Test
88 void testSinh() {
89
90 final TestDerivative testDerivative = new TestDerivative(0.5);
91 final TestFieldDerivative testFieldDerivative = new TestFieldDerivative(testDerivative);
92
93 final TestFieldDerivative actualOperation = testFieldDerivative.sinh();
94
95 final TestFieldDerivative expectedOperation = new TestFieldDerivative(new TestDerivative(FastMath
96 .sinh(testDerivative.getValue())));
97 assertEquals(expectedOperation.getValue().getValue(), actualOperation.getValue().getValue(), TOLERANCE);
98 }
99
100 @Test
101 void testAcos() {
102
103 final TestDerivative testDerivative = new TestDerivative(0.5);
104 final TestFieldDerivative testFieldDerivative = new TestFieldDerivative(testDerivative);
105
106 final TestFieldDerivative actualOperation = testFieldDerivative.acos();
107
108 final TestFieldDerivative expectedOperation = new TestFieldDerivative(new TestDerivative(FastMath
109 .acos(testDerivative.getValue())));
110 assertEquals(expectedOperation.getValue().getValue(), actualOperation.getValue().getValue(), TOLERANCE);
111 }
112
113 @Test
114 void testFloor() {
115
116 final TestDerivative testDerivative = new TestDerivative(0.5);
117 final TestFieldDerivative testFieldDerivative = new TestFieldDerivative(testDerivative);
118
119 final TestFieldDerivative actualOperation = testFieldDerivative.floor();
120
121 final TestFieldDerivative expectedOperation = new TestFieldDerivative(new TestDerivative(FastMath
122 .floor(testDerivative.getValue())));
123 assertEquals(expectedOperation.getValue().getValue(), actualOperation.getValue().getValue(), TOLERANCE);
124 }
125
126 @Test
127 void testCeil() {
128
129 final TestDerivative testDerivative = new TestDerivative(0.5);
130 final TestFieldDerivative testFieldDerivative = new TestFieldDerivative(testDerivative);
131
132 final TestFieldDerivative actualOperation = testFieldDerivative.ceil();
133
134 final TestFieldDerivative expectedOperation = new TestFieldDerivative(new TestDerivative(FastMath
135 .ceil(testDerivative.getValue())));
136 assertEquals(expectedOperation.getValue().getValue(), actualOperation.getValue().getValue(), TOLERANCE);
137 }
138
139 @Test
140 void testRint() {
141
142 final TestDerivative testDerivative = new TestDerivative(0.5);
143 final TestFieldDerivative testFieldDerivative = new TestFieldDerivative(testDerivative);
144
145 final TestFieldDerivative actualOperation = testFieldDerivative.rint();
146
147 final TestFieldDerivative expectedOperation = new TestFieldDerivative(new TestDerivative(FastMath
148 .rint(testDerivative.getValue())));
149 assertEquals(expectedOperation.getValue().getValue(), actualOperation.getValue().getValue(), TOLERANCE);
150 }
151
152 @Test
153 void testSign() {
154
155 final TestDerivative testDerivative = new TestDerivative(0.5);
156 final TestFieldDerivative testFieldDerivative = new TestFieldDerivative(testDerivative);
157
158 final TestFieldDerivative actualOperation = testFieldDerivative.sign();
159
160 final TestFieldDerivative expectedOperation = new TestFieldDerivative(new TestDerivative(FastMath
161 .signum(testDerivative.getValue())));
162 assertEquals(expectedOperation, actualOperation);
163 }
164
165 private static class TestFieldDerivative implements FieldDerivative<TestDerivative, TestFieldDerivative> {
166
167 private final TestDerivative value;
168
169 TestFieldDerivative (TestDerivative value) {
170 this.value = value;
171 }
172
173 @Override
174 public TestFieldDerivative getAddendum() {
175 return subtract(getReal());
176 }
177
178 @Override
179 public TestFieldDerivative newInstance(double value) {
180 return newInstance(new TestDerivative(value));
181 }
182
183 @Override
184 public TestFieldDerivative scalb(int n) {
185 return null;
186 }
187
188 @Override
189 public TestFieldDerivative hypot(TestFieldDerivative y) throws MathIllegalArgumentException {
190 return null;
191 }
192
193 @Override
194 public TestFieldDerivative exp() {
195 return newInstance(value.exp());
196 }
197
198 @Override
199 public TestFieldDerivative expm1() {
200 return null;
201 }
202
203 @Override
204 public TestFieldDerivative log() {
205 return newInstance(value.log());
206 }
207
208 @Override
209 public TestFieldDerivative log1p() {
210 return null;
211 }
212
213 @Override
214 public TestFieldDerivative cos() {
215 return null;
216 }
217
218 @Override
219 public TestFieldDerivative sin() {
220 return null;
221 }
222
223 @Override
224 public TestFieldDerivative asin() {
225 return newInstance(value.asin());
226 }
227
228 @Override
229 public TestFieldDerivative atan() {
230 return null;
231 }
232
233 @Override
234 public TestFieldDerivative atan2(TestFieldDerivative x) throws MathIllegalArgumentException {
235 return null;
236 }
237
238 @Override
239 public TestFieldDerivative acosh() {
240 return null;
241 }
242
243 @Override
244 public TestFieldDerivative asinh() {
245 return null;
246 }
247
248 @Override
249 public TestFieldDerivative atanh() {
250 return null;
251 }
252
253 @Override
254 public TestFieldDerivative linearCombination(TestFieldDerivative[] a, TestFieldDerivative[] b) throws MathIllegalArgumentException {
255 return null;
256 }
257
258 @Override
259 public TestFieldDerivative linearCombination(TestFieldDerivative a1, TestFieldDerivative b1, TestFieldDerivative a2, TestFieldDerivative b2) {
260 return null;
261 }
262
263 @Override
264 public TestFieldDerivative linearCombination(TestFieldDerivative a1, TestFieldDerivative b1, TestFieldDerivative a2, TestFieldDerivative b2, TestFieldDerivative a3, TestFieldDerivative b3) {
265 return null;
266 }
267
268 @Override
269 public TestFieldDerivative linearCombination(TestFieldDerivative a1, TestFieldDerivative b1, TestFieldDerivative a2, TestFieldDerivative b2, TestFieldDerivative a3, TestFieldDerivative b3, TestFieldDerivative a4, TestFieldDerivative b4) {
270 return null;
271 }
272
273 @Override
274 public TestFieldDerivative remainder(double a) {
275 return null;
276 }
277
278 @Override
279 public TestFieldDerivative remainder(TestFieldDerivative a) {
280 return null;
281 }
282
283 @Override
284 public TestFieldDerivative copySign(TestFieldDerivative sign) {
285 return null;
286 }
287
288 @Override
289 public TestFieldDerivative abs() {
290 return null;
291 }
292
293 @Override
294 public TestFieldDerivative add(TestFieldDerivative a) throws NullArgumentException {
295 return new TestFieldDerivative(value.add(a.value));
296 }
297
298 @Override
299 public TestFieldDerivative negate() {
300 return new TestFieldDerivative(value.negate());
301 }
302
303 @Override
304 public TestFieldDerivative multiply(TestFieldDerivative a) throws NullArgumentException {
305 return new TestFieldDerivative(value.multiply(a.value));
306 }
307
308 @Override
309 public TestFieldDerivative reciprocal() throws MathRuntimeException {
310 return new TestFieldDerivative(value.reciprocal());
311 }
312
313 @Override
314 public Field<TestFieldDerivative> getField() {
315 return null;
316 }
317
318 @Override
319 public int getFreeParameters() {
320 return 0;
321 }
322
323 @Override
324 public int getOrder() {
325 return 0;
326 }
327
328 @Override
329 public TestDerivative getValue() {
330 return value;
331 }
332
333 @Override
334 public TestDerivative getPartialDerivative(int... orders) throws MathIllegalArgumentException {
335 return null;
336 }
337
338 @Override
339 public TestFieldDerivative newInstance(TestDerivative value) {
340 return new TestFieldDerivative(value);
341 }
342
343 @Override
344 public boolean equals(Object obj) {
345 if (obj instanceof TestFieldDerivative) {
346 return value.equals(((TestFieldDerivative) obj).value);
347 } else {
348 return false;
349 }
350 }
351 }
352
353 }