--- /dev/null
+package net.sf.openrocket.util;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+public class PolyInterpolatorTest {
+
+ @Test
+ public void oldMainTest() {
+ {
+ PolyInterpolator p0 = new PolyInterpolator(
+ new double[] {0.6, 1.1},
+ new double[] {0.6, 1.1}
+ );
+ double[] r0 = p0.interpolator(1.5, 1.6, 2, -3);
+ double[] answer0 = new double[] {
+ /* x=0.60*/ 1.4999999999999987,
+ /* x=0.61*/ 1.5199143999999984,
+ /* x=0.62*/ 1.5396351999999984,
+ /* x=0.63*/ 1.5591287999999988,
+ /* x=0.64*/ 1.578361599999998,
+ /* x=0.65*/ 1.597299999999998,
+ /* x=0.66*/ 1.6159103999999977,
+ /* x=0.67*/ 1.6341591999999976,
+ /* x=0.68*/ 1.6520127999999976,
+ /* x=0.69*/ 1.669437599999997,
+ /* x=0.70*/ 1.6863999999999977,
+ /* x=0.71*/ 1.702866399999997,
+ /* x=0.72*/ 1.7188031999999964,
+ /* x=0.73*/ 1.7341767999999966,
+ /* x=0.74*/ 1.7489535999999957,
+ /* x=0.75*/ 1.7630999999999966,
+ /* x=0.76*/ 1.7765823999999952,
+ /* x=0.77*/ 1.7893671999999965,
+ /* x=0.78*/ 1.8014207999999958,
+ /* x=0.79*/ 1.8127095999999945,
+ /* x=0.80*/ 1.8231999999999942,
+ /* x=0.81*/ 1.8328583999999952,
+ /* x=0.82*/ 1.841651199999994,
+ /* x=0.83*/ 1.849544799999994,
+ /* x=0.84*/ 1.856505599999993,
+ /* x=0.85*/ 1.8624999999999927,
+ /* x=0.86*/ 1.8674943999999924,
+ /* x=0.87*/ 1.8714551999999918,
+ /* x=0.88*/ 1.8743487999999924,
+ /* x=0.89*/ 1.876141599999992,
+ /* x=0.90*/ 1.8767999999999914,
+ /* x=0.91*/ 1.8762903999999914,
+ /* x=0.92*/ 1.8745791999999906,
+ /* x=0.93*/ 1.8716327999999898,
+ /* x=0.94*/ 1.8674175999999907,
+ /* x=0.95*/ 1.8618999999999888,
+ /* x=0.96*/ 1.8550463999999902,
+ /* x=0.97*/ 1.8468231999999887,
+ /* x=0.98*/ 1.8371967999999885,
+ /* x=0.99*/ 1.826133599999988,
+ /* x=1.00*/ 1.8135999999999868,
+ /* x=1.01*/ 1.7995623999999868,
+ /* x=1.02*/ 1.783987199999987,
+ /* x=1.03*/ 1.7668407999999873,
+ /* x=1.04*/ 1.748089599999986,
+ /* x=1.05*/ 1.7276999999999854,
+ /* x=1.06*/ 1.7056383999999847,
+ /* x=1.07*/ 1.6818711999999838,
+ /* x=1.08*/ 1.6563647999999844,
+ /* x=1.09*/ 1.629085599999983,
+ /* x=1.10*/ 1.5999999999999837
+ };
+ double x=0.6;
+ for (int i=0; i<answer0.length; i++) {
+ assertEquals("r0 different at x=" + x, PolyInterpolator.eval(x, r0), answer0[i],0.00001);
+ x+=0.01;
+ }
+ }
+
+ {
+ PolyInterpolator p1 = new PolyInterpolator(
+ new double[] {0.6, 1.1},
+ new double[] {0.6, 1.1},
+ new double[] {0.6}
+ );
+ double[] r1 = p1.interpolator(1.5, 1.6, 2, -3, 0);
+ double[] answer1 = new double[] {
+ /* x=0.60*/ 1.4999999999999907,
+ /* x=0.61*/ 1.5199912319999909,
+ /* x=0.62*/ 1.5399301119999906,
+ /* x=0.63*/ 1.5597649919999914,
+ /* x=0.64*/ 1.5794449919999898,
+ /* x=0.65*/ 1.5989199999999888,
+ /* x=0.66*/ 1.6181406719999905,
+ /* x=0.67*/ 1.6370584319999903,
+ /* x=0.68*/ 1.655625471999989,
+ /* x=0.69*/ 1.6737947519999874,
+ /* x=0.70*/ 1.691519999999989,
+ /* x=0.71*/ 1.7087557119999883,
+ /* x=0.72*/ 1.7254571519999873,
+ /* x=0.73*/ 1.741580351999988,
+ /* x=0.74*/ 1.7570821119999884,
+ /* x=0.75*/ 1.7719199999999875,
+ /* x=0.76*/ 1.7860523519999871,
+ /* x=0.77*/ 1.7994382719999862,
+ /* x=0.78*/ 1.8120376319999876,
+ /* x=0.79*/ 1.8238110719999838,
+ /* x=0.80*/ 1.8347199999999855,
+ /* x=0.81*/ 1.8447265919999851,
+ /* x=0.82*/ 1.8537937919999865,
+ /* x=0.83*/ 1.861885311999986,
+ /* x=0.84*/ 1.8689656319999832,
+ /* x=0.85*/ 1.8749999999999836,
+ /* x=0.86*/ 1.8799544319999804,
+ /* x=0.87*/ 1.8837957119999817,
+ /* x=0.88*/ 1.8864913919999804,
+ /* x=0.89*/ 1.8880097919999814,
+ /* x=0.90*/ 1.8883199999999807,
+ /* x=0.91*/ 1.8873918719999794,
+ /* x=0.92*/ 1.88519603199998,
+ /* x=0.93*/ 1.8817038719999788,
+ /* x=0.94*/ 1.8768875519999786,
+ /* x=0.95*/ 1.8707199999999764,
+ /* x=0.96*/ 1.8631749119999794,
+ /* x=0.97*/ 1.8542267519999784,
+ /* x=0.98*/ 1.8438507519999745,
+ /* x=0.99*/ 1.832022911999974,
+ /* x=1.00*/ 1.8187199999999768,
+ /* x=1.01*/ 1.8039195519999738,
+ /* x=1.02*/ 1.7875998719999755,
+ /* x=1.03*/ 1.7697400319999765,
+ /* x=1.04*/ 1.7503198719999729,
+ /* x=1.05*/ 1.7293199999999675,
+ /* x=1.06*/ 1.7067217919999687,
+ /* x=1.07*/ 1.6825073919999713,
+ /* x=1.08*/ 1.656659711999966,
+ /* x=1.09*/ 1.629162431999962,
+ /* x=1.10*/ 1.5999999999999686
+ };
+ double x=0.6;
+ for (int i=0; i<answer1.length; i++) {
+ assertEquals("r1 different at x=" + x, PolyInterpolator.eval(x, r1), answer1[i],0.00001);
+ x+=0.01;
+ }
+ }
+ {
+ PolyInterpolator p2 = new PolyInterpolator(
+ new double[] {0.6, 1.1},
+ new double[] {0.6, 1.1},
+ new double[] {0.6, 1.1}
+ );
+ double[] r2 = p2.interpolator(1.5, 1.6, 2, -3, 0, 0);
+ double[] answer2 = new double[] {
+ /* x=0.60*/ 1.5000000000000844,
+ /* x=0.61*/ 1.520007366720093,
+ /* x=0.62*/ 1.5400539750400783,
+ /* x=0.63*/ 1.5601657929600794,
+ /* x=0.64*/ 1.58035504128011,
+ /* x=0.65*/ 1.6006210000000962,
+ /* x=0.66*/ 1.620950814720107,
+ /* x=0.67*/ 1.641320303040109,
+ /* x=0.68*/ 1.6616947609601311,
+ /* x=0.69*/ 1.682029769280133,
+ /* x=0.70*/ 1.7022720000001055,
+ /* x=0.71*/ 1.7223600227201015,
+ /* x=0.72*/ 1.7422251110400993,
+ /* x=0.73*/ 1.7617920489601087,
+ /* x=0.74*/ 1.7809799372800814,
+ /* x=0.75*/ 1.7997030000000898,
+ /* x=0.76*/ 1.8178713907201,
+ /* x=0.77*/ 1.8353919990401195,
+ /* x=0.78*/ 1.85216925696011,
+ /* x=0.79*/ 1.8681059452800994,
+ /* x=0.80*/ 1.8831040000000847,
+ /* x=0.81*/ 1.897065318720074,
+ /* x=0.82*/ 1.9098925670401137,
+ /* x=0.83*/ 1.921489984960104,
+ /* x=0.84*/ 1.931764193280106,
+ /* x=0.85*/ 1.940625000000086,
+ /* x=0.86*/ 1.9479862067200955,
+ /* x=0.87*/ 1.9537664150401213,
+ /* x=0.88*/ 1.9578898329600989,
+ /* x=0.89*/ 1.9602870812801143,
+ /* x=0.90*/ 1.960896000000119,
+ /* x=0.91*/ 1.9596624547200818,
+ /* x=0.92*/ 1.9565411430400914,
+ /* x=0.93*/ 1.9514964009601528,
+ /* x=0.94*/ 1.9445030092801048,
+ /* x=0.95*/ 1.9355470000001276,
+ /* x=0.96*/ 1.92462646272012,
+ /* x=0.97*/ 1.9117523510400858,
+ /* x=0.98*/ 1.8969492889601298,
+ /* x=0.99*/ 1.8802563772801548,
+ /* x=1.00*/ 1.86172800000017,
+ /* x=1.01*/ 1.8414346307201441,
+ /* x=1.02*/ 1.8194636390400944,
+ /* x=1.03*/ 1.7959200969601596,
+ /* x=1.04*/ 1.7709275852801198,
+ /* x=1.05*/ 1.7446290000001738,
+ /* x=1.06*/ 1.7171873587201247,
+ /* x=1.07*/ 1.6887866070401714,
+ /* x=1.08*/ 1.659632424960222,
+ /* x=1.09*/ 1.6299530332800884,
+ /* x=1.10*/ 1.6000000000001648
+ };
+
+ double x=0.6;
+ for (int i=0; i<answer2.length; i++) {
+ assertEquals("r2 different at x=" + x, PolyInterpolator.eval(x, r2), answer2[i],0.00001);
+ x+=0.01;
+ }
+
+ }
+ }
+}