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.analysis.integration.gauss;
23
24 import org.hipparchus.analysis.CalculusFieldUnivariateFunction;
25 import org.hipparchus.util.Binary64;
26 import org.hipparchus.util.Pair;
27 import org.junit.jupiter.api.Test;
28
29 import static org.junit.jupiter.api.Assertions.assertEquals;
30
31
32
33
34
35 class FieldGaussIntegratorTest {
36 @Test
37 void testGetWeights() {
38 final double[] points = { 0, 1.2, 3.4 };
39 final double[] weights = { 9.8, 7.6, 5.4 };
40
41 final FieldGaussIntegrator<Binary64> integrator
42 = new FieldGaussIntegrator<>(new Pair<>(toBinary64(points), toBinary64(weights)));
43
44 assertEquals(weights.length, integrator.getNumberOfPoints());
45
46 for (int i = 0; i < integrator.getNumberOfPoints(); i++) {
47 assertEquals(weights[i], integrator.getWeight(i).getReal(), 0d);
48 }
49 }
50
51 @Test
52 void testGetPoints() {
53 final double[] points = { 0, 1.2, 3.4 };
54 final double[] weights = { 9.8, 7.6, 5.4 };
55
56 final FieldGaussIntegrator<Binary64> integrator
57 = new FieldGaussIntegrator<>(new Pair<>(toBinary64(points), toBinary64(weights)));
58
59 assertEquals(points.length, integrator.getNumberOfPoints());
60
61 for (int i = 0; i < integrator.getNumberOfPoints(); i++) {
62 assertEquals(points[i], integrator.getPoint(i).getReal(), 0d);
63 }
64 }
65
66 @Test
67 void testIntegrate() {
68 final double[] points = { 0, 1, 2, 3, 4, 5 };
69 final double[] weights = { 1, 1, 1, 1, 1, 1 };
70
71 final FieldGaussIntegrator<Binary64> integrator
72 = new FieldGaussIntegrator<>(new Pair<>(toBinary64(points), toBinary64(weights)));
73
74 final Binary64 val = new Binary64(123.456);
75 final CalculusFieldUnivariateFunction<Binary64> c = x -> val;
76
77 final Binary64 s = integrator.integrate(c);
78 assertEquals(val.multiply(points.length).getReal(), s.getReal(), 0d);
79 }
80
81 private Binary64[] toBinary64(final double[] a) {
82 final Binary64[] d = new Binary64[a.length];
83 for (int i = 0; i < a.length; ++i) {
84 d[i] = new Binary64(a[i]);
85 }
86 return d;
87 }
88
89 }