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