1 package net.sf.openrocket.util;
3 import static org.junit.Assert.assertEquals;
7 public class PolyInterpolatorTest {
10 public void oldMainTest() {
12 PolyInterpolator p0 = new PolyInterpolator(
13 new double[] {0.6, 1.1},
14 new double[] {0.6, 1.1}
16 double[] r0 = p0.interpolator(1.5, 1.6, 2, -3);
17 double[] answer0 = new double[] {
18 /* x=0.60*/ 1.4999999999999987,
19 /* x=0.61*/ 1.5199143999999984,
20 /* x=0.62*/ 1.5396351999999984,
21 /* x=0.63*/ 1.5591287999999988,
22 /* x=0.64*/ 1.578361599999998,
23 /* x=0.65*/ 1.597299999999998,
24 /* x=0.66*/ 1.6159103999999977,
25 /* x=0.67*/ 1.6341591999999976,
26 /* x=0.68*/ 1.6520127999999976,
27 /* x=0.69*/ 1.669437599999997,
28 /* x=0.70*/ 1.6863999999999977,
29 /* x=0.71*/ 1.702866399999997,
30 /* x=0.72*/ 1.7188031999999964,
31 /* x=0.73*/ 1.7341767999999966,
32 /* x=0.74*/ 1.7489535999999957,
33 /* x=0.75*/ 1.7630999999999966,
34 /* x=0.76*/ 1.7765823999999952,
35 /* x=0.77*/ 1.7893671999999965,
36 /* x=0.78*/ 1.8014207999999958,
37 /* x=0.79*/ 1.8127095999999945,
38 /* x=0.80*/ 1.8231999999999942,
39 /* x=0.81*/ 1.8328583999999952,
40 /* x=0.82*/ 1.841651199999994,
41 /* x=0.83*/ 1.849544799999994,
42 /* x=0.84*/ 1.856505599999993,
43 /* x=0.85*/ 1.8624999999999927,
44 /* x=0.86*/ 1.8674943999999924,
45 /* x=0.87*/ 1.8714551999999918,
46 /* x=0.88*/ 1.8743487999999924,
47 /* x=0.89*/ 1.876141599999992,
48 /* x=0.90*/ 1.8767999999999914,
49 /* x=0.91*/ 1.8762903999999914,
50 /* x=0.92*/ 1.8745791999999906,
51 /* x=0.93*/ 1.8716327999999898,
52 /* x=0.94*/ 1.8674175999999907,
53 /* x=0.95*/ 1.8618999999999888,
54 /* x=0.96*/ 1.8550463999999902,
55 /* x=0.97*/ 1.8468231999999887,
56 /* x=0.98*/ 1.8371967999999885,
57 /* x=0.99*/ 1.826133599999988,
58 /* x=1.00*/ 1.8135999999999868,
59 /* x=1.01*/ 1.7995623999999868,
60 /* x=1.02*/ 1.783987199999987,
61 /* x=1.03*/ 1.7668407999999873,
62 /* x=1.04*/ 1.748089599999986,
63 /* x=1.05*/ 1.7276999999999854,
64 /* x=1.06*/ 1.7056383999999847,
65 /* x=1.07*/ 1.6818711999999838,
66 /* x=1.08*/ 1.6563647999999844,
67 /* x=1.09*/ 1.629085599999983,
68 /* x=1.10*/ 1.5999999999999837
71 for (int i=0; i<answer0.length; i++) {
72 assertEquals("r0 different at x=" + x, PolyInterpolator.eval(x, r0), answer0[i],0.00001);
78 PolyInterpolator p1 = new PolyInterpolator(
79 new double[] {0.6, 1.1},
80 new double[] {0.6, 1.1},
83 double[] r1 = p1.interpolator(1.5, 1.6, 2, -3, 0);
84 double[] answer1 = new double[] {
85 /* x=0.60*/ 1.4999999999999907,
86 /* x=0.61*/ 1.5199912319999909,
87 /* x=0.62*/ 1.5399301119999906,
88 /* x=0.63*/ 1.5597649919999914,
89 /* x=0.64*/ 1.5794449919999898,
90 /* x=0.65*/ 1.5989199999999888,
91 /* x=0.66*/ 1.6181406719999905,
92 /* x=0.67*/ 1.6370584319999903,
93 /* x=0.68*/ 1.655625471999989,
94 /* x=0.69*/ 1.6737947519999874,
95 /* x=0.70*/ 1.691519999999989,
96 /* x=0.71*/ 1.7087557119999883,
97 /* x=0.72*/ 1.7254571519999873,
98 /* x=0.73*/ 1.741580351999988,
99 /* x=0.74*/ 1.7570821119999884,
100 /* x=0.75*/ 1.7719199999999875,
101 /* x=0.76*/ 1.7860523519999871,
102 /* x=0.77*/ 1.7994382719999862,
103 /* x=0.78*/ 1.8120376319999876,
104 /* x=0.79*/ 1.8238110719999838,
105 /* x=0.80*/ 1.8347199999999855,
106 /* x=0.81*/ 1.8447265919999851,
107 /* x=0.82*/ 1.8537937919999865,
108 /* x=0.83*/ 1.861885311999986,
109 /* x=0.84*/ 1.8689656319999832,
110 /* x=0.85*/ 1.8749999999999836,
111 /* x=0.86*/ 1.8799544319999804,
112 /* x=0.87*/ 1.8837957119999817,
113 /* x=0.88*/ 1.8864913919999804,
114 /* x=0.89*/ 1.8880097919999814,
115 /* x=0.90*/ 1.8883199999999807,
116 /* x=0.91*/ 1.8873918719999794,
117 /* x=0.92*/ 1.88519603199998,
118 /* x=0.93*/ 1.8817038719999788,
119 /* x=0.94*/ 1.8768875519999786,
120 /* x=0.95*/ 1.8707199999999764,
121 /* x=0.96*/ 1.8631749119999794,
122 /* x=0.97*/ 1.8542267519999784,
123 /* x=0.98*/ 1.8438507519999745,
124 /* x=0.99*/ 1.832022911999974,
125 /* x=1.00*/ 1.8187199999999768,
126 /* x=1.01*/ 1.8039195519999738,
127 /* x=1.02*/ 1.7875998719999755,
128 /* x=1.03*/ 1.7697400319999765,
129 /* x=1.04*/ 1.7503198719999729,
130 /* x=1.05*/ 1.7293199999999675,
131 /* x=1.06*/ 1.7067217919999687,
132 /* x=1.07*/ 1.6825073919999713,
133 /* x=1.08*/ 1.656659711999966,
134 /* x=1.09*/ 1.629162431999962,
135 /* x=1.10*/ 1.5999999999999686
138 for (int i=0; i<answer1.length; i++) {
139 assertEquals("r1 different at x=" + x, PolyInterpolator.eval(x, r1), answer1[i],0.00001);
144 PolyInterpolator p2 = new PolyInterpolator(
145 new double[] {0.6, 1.1},
146 new double[] {0.6, 1.1},
147 new double[] {0.6, 1.1}
149 double[] r2 = p2.interpolator(1.5, 1.6, 2, -3, 0, 0);
150 double[] answer2 = new double[] {
151 /* x=0.60*/ 1.5000000000000844,
152 /* x=0.61*/ 1.520007366720093,
153 /* x=0.62*/ 1.5400539750400783,
154 /* x=0.63*/ 1.5601657929600794,
155 /* x=0.64*/ 1.58035504128011,
156 /* x=0.65*/ 1.6006210000000962,
157 /* x=0.66*/ 1.620950814720107,
158 /* x=0.67*/ 1.641320303040109,
159 /* x=0.68*/ 1.6616947609601311,
160 /* x=0.69*/ 1.682029769280133,
161 /* x=0.70*/ 1.7022720000001055,
162 /* x=0.71*/ 1.7223600227201015,
163 /* x=0.72*/ 1.7422251110400993,
164 /* x=0.73*/ 1.7617920489601087,
165 /* x=0.74*/ 1.7809799372800814,
166 /* x=0.75*/ 1.7997030000000898,
167 /* x=0.76*/ 1.8178713907201,
168 /* x=0.77*/ 1.8353919990401195,
169 /* x=0.78*/ 1.85216925696011,
170 /* x=0.79*/ 1.8681059452800994,
171 /* x=0.80*/ 1.8831040000000847,
172 /* x=0.81*/ 1.897065318720074,
173 /* x=0.82*/ 1.9098925670401137,
174 /* x=0.83*/ 1.921489984960104,
175 /* x=0.84*/ 1.931764193280106,
176 /* x=0.85*/ 1.940625000000086,
177 /* x=0.86*/ 1.9479862067200955,
178 /* x=0.87*/ 1.9537664150401213,
179 /* x=0.88*/ 1.9578898329600989,
180 /* x=0.89*/ 1.9602870812801143,
181 /* x=0.90*/ 1.960896000000119,
182 /* x=0.91*/ 1.9596624547200818,
183 /* x=0.92*/ 1.9565411430400914,
184 /* x=0.93*/ 1.9514964009601528,
185 /* x=0.94*/ 1.9445030092801048,
186 /* x=0.95*/ 1.9355470000001276,
187 /* x=0.96*/ 1.92462646272012,
188 /* x=0.97*/ 1.9117523510400858,
189 /* x=0.98*/ 1.8969492889601298,
190 /* x=0.99*/ 1.8802563772801548,
191 /* x=1.00*/ 1.86172800000017,
192 /* x=1.01*/ 1.8414346307201441,
193 /* x=1.02*/ 1.8194636390400944,
194 /* x=1.03*/ 1.7959200969601596,
195 /* x=1.04*/ 1.7709275852801198,
196 /* x=1.05*/ 1.7446290000001738,
197 /* x=1.06*/ 1.7171873587201247,
198 /* x=1.07*/ 1.6887866070401714,
199 /* x=1.08*/ 1.659632424960222,
200 /* x=1.09*/ 1.6299530332800884,
201 /* x=1.10*/ 1.6000000000001648
205 for (int i=0; i<answer2.length; i++) {
206 assertEquals("r2 different at x=" + x, PolyInterpolator.eval(x, r2), answer2[i],0.00001);