-
Cristian Lalescu authoredCristian Lalescu authored
spline_n9.cpp 42.22 KiB
/**********************************************************************
* *
* Copyright 2015 Max Planck Institute *
* for Dynamics and Self-Organization *
* *
* This file is part of bfps. *
* *
* bfps is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published *
* by the Free Software Foundation, either version 3 of the License, *
* or (at your option) any later version. *
* *
* bfps is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with bfps. If not, see <http://www.gnu.org/licenses/> *
* *
* Contact: Cristian.Lalescu@ds.mpg.de *
* *
**********************************************************************/
#include "spline_n9.hpp"
#include <cmath>
void beta_n9_m0(int deriv, double x, double *poly_val) {
switch(deriv)
{
case 0:
poly_val[0] = 0;
poly_val[1] = 0;
poly_val[2] = 0;
poly_val[3] = 0;
poly_val[4] = 0;
poly_val[5] = 0;
poly_val[6] = 0;
poly_val[7] = 0;
poly_val[8] = 0;
poly_val[9] = -x + 1;
poly_val[10] = x;
poly_val[11] = 0;
poly_val[12] = 0;
poly_val[13] = 0;
poly_val[14] = 0;
poly_val[15] = 0;
poly_val[16] = 0;
poly_val[17] = 0;
poly_val[18] = 0;
poly_val[19] = 0;
break;
case 1:
poly_val[0] = 0;
poly_val[1] = 0;
poly_val[2] = 0;
poly_val[3] = 0;
poly_val[4] = 0;
poly_val[5] = 0;
poly_val[6] = 0;
poly_val[7] = 0;
poly_val[8] = 0;
poly_val[9] = -1;
poly_val[10] = 1;
poly_val[11] = 0;
poly_val[12] = 0;
poly_val[13] = 0;
poly_val[14] = 0;
poly_val[15] = 0;
poly_val[16] = 0;
poly_val[17] = 0;
poly_val[18] = 0;
poly_val[19] = 0;
break;
case 2:
poly_val[0] = 0;
poly_val[1] = 0;
poly_val[2] = 0;
poly_val[3] = 0;
poly_val[4] = 0;
poly_val[5] = 0;
poly_val[6] = 0;
poly_val[7] = 0;
poly_val[8] = 0;
poly_val[9] = 0;
poly_val[10] = 0;
poly_val[11] = 0;
poly_val[12] = 0;
poly_val[13] = 0;
poly_val[14] = 0;
poly_val[15] = 0;
poly_val[16] = 0;
poly_val[17] = 0;
poly_val[18] = 0;
poly_val[19] = 0;
break;
}
}
void beta_n9_m1(int deriv, double x, double *poly_val) {
switch(deriv)
{
case 0:
poly_val[0] = x*(x*(-1.0L/437580.0L*x + 1.0L/218790.0L) - 1.0L/437580.0L);
poly_val[1] = x*(x*((7.0L/159120.0L)*x - 79.0L/875160.0L) + 9.0L/194480.0L);
poly_val[2] = x*(x*(-549.0L/1361360.0L*x + 1161.0L/1361360.0L) - 9.0L/20020.0L);
poly_val[3] = x*(x*((47.0L/20020.0L)*x - 103.0L/20020.0L) + 2.0L/715.0L);
poly_val[4] = x*(x*(-7.0L/715.0L*x + 16.0L/715.0L) - 9.0L/715.0L);
poly_val[5] = x*(x*((9.0L/286.0L)*x - 54.0L/715.0L) + 63.0L/1430.0L);
poly_val[6] = x*(x*(-119.0L/1430.0L*x + 301.0L/1430.0L) - 7.0L/55.0L);
poly_val[7] = x*(x*((1.0L/5.0L)*x - 29.0L/55.0L) + 18.0L/55.0L);
poly_val[8] = x*(x*(-63.0L/110.0L*x + 81.0L/55.0L) - 9.0L/10.0L);
poly_val[9] = pow(x, 2)*((11.0L/10.0L)*x - 21.0L/10.0L) + 1;
poly_val[10] = x*(x*(-11.0L/10.0L*x + 6.0L/5.0L) + 9.0L/10.0L);
poly_val[11] = x*(x*((63.0L/110.0L)*x - 27.0L/110.0L) - 18.0L/55.0L);
poly_val[12] = x*(x*(-1.0L/5.0L*x + 4.0L/55.0L) + 7.0L/55.0L);
poly_val[13] = x*(x*((119.0L/1430.0L)*x - 28.0L/715.0L) - 63.0L/1430.0L);
poly_val[14] = x*(x*(-9.0L/286.0L*x + 27.0L/1430.0L) + 9.0L/715.0L);
poly_val[15] = x*(x*((7.0L/715.0L)*x - 1.0L/143.0L) - 2.0L/715.0L);
poly_val[16] = x*(x*(-47.0L/20020.0L*x + 19.0L/10010.0L) + 9.0L/20020.0L);
poly_val[17] = x*(x*((549.0L/1361360.0L)*x - 243.0L/680680.0L) - 9.0L/194480.0L);
poly_val[18] = x*(x*(-7.0L/159120.0L*x + 73.0L/1750320.0L) + 1.0L/437580.0L);
poly_val[19] = pow(x, 2)*((1.0L/437580.0L)*x - 1.0L/437580.0L);
break;
case 1:
poly_val[0] = x*(-1.0L/145860.0L*x + 1.0L/109395.0L) - 1.0L/437580.0L;
poly_val[1] = x*((7.0L/53040.0L)*x - 79.0L/437580.0L) + 9.0L/194480.0L;
poly_val[2] = x*(-1647.0L/1361360.0L*x + 1161.0L/680680.0L) - 9.0L/20020.0L;
poly_val[3] = x*((141.0L/20020.0L)*x - 103.0L/10010.0L) + 2.0L/715.0L;
poly_val[4] = x*(-21.0L/715.0L*x + 32.0L/715.0L) - 9.0L/715.0L;
poly_val[5] = x*((27.0L/286.0L)*x - 108.0L/715.0L) + 63.0L/1430.0L;
poly_val[6] = x*(-357.0L/1430.0L*x + 301.0L/715.0L) - 7.0L/55.0L;
poly_val[7] = x*((3.0L/5.0L)*x - 58.0L/55.0L) + 18.0L/55.0L;
poly_val[8] = x*(-189.0L/110.0L*x + 162.0L/55.0L) - 9.0L/10.0L;
poly_val[9] = x*((33.0L/10.0L)*x - 21.0L/5.0L);
poly_val[10] = x*(-33.0L/10.0L*x + 12.0L/5.0L) + 9.0L/10.0L;
poly_val[11] = x*((189.0L/110.0L)*x - 27.0L/55.0L) - 18.0L/55.0L;
poly_val[12] = x*(-3.0L/5.0L*x + 8.0L/55.0L) + 7.0L/55.0L;
poly_val[13] = x*((357.0L/1430.0L)*x - 56.0L/715.0L) - 63.0L/1430.0L;
poly_val[14] = x*(-27.0L/286.0L*x + 27.0L/715.0L) + 9.0L/715.0L;
poly_val[15] = x*((21.0L/715.0L)*x - 2.0L/143.0L) - 2.0L/715.0L;
poly_val[16] = x*(-141.0L/20020.0L*x + 19.0L/5005.0L) + 9.0L/20020.0L;
poly_val[17] = x*((1647.0L/1361360.0L)*x - 243.0L/340340.0L) - 9.0L/194480.0L;
poly_val[18] = x*(-7.0L/53040.0L*x + 73.0L/875160.0L) + 1.0L/437580.0L;
poly_val[19] = x*((1.0L/145860.0L)*x - 1.0L/218790.0L);
break;
case 2:
poly_val[0] = -1.0L/72930.0L*x + 1.0L/109395.0L;
poly_val[1] = (7.0L/26520.0L)*x - 79.0L/437580.0L;
poly_val[2] = -1647.0L/680680.0L*x + 1161.0L/680680.0L;
poly_val[3] = (141.0L/10010.0L)*x - 103.0L/10010.0L;
poly_val[4] = -42.0L/715.0L*x + 32.0L/715.0L;
poly_val[5] = (27.0L/143.0L)*x - 108.0L/715.0L;
poly_val[6] = -357.0L/715.0L*x + 301.0L/715.0L;
poly_val[7] = (6.0L/5.0L)*x - 58.0L/55.0L;
poly_val[8] = -189.0L/55.0L*x + 162.0L/55.0L;
poly_val[9] = (33.0L/5.0L)*x - 21.0L/5.0L;
poly_val[10] = -33.0L/5.0L*x + 12.0L/5.0L;
poly_val[11] = (189.0L/55.0L)*x - 27.0L/55.0L;
poly_val[12] = -6.0L/5.0L*x + 8.0L/55.0L;
poly_val[13] = (357.0L/715.0L)*x - 56.0L/715.0L;
poly_val[14] = -27.0L/143.0L*x + 27.0L/715.0L;
poly_val[15] = (42.0L/715.0L)*x - 2.0L/143.0L;
poly_val[16] = -141.0L/10010.0L*x + 19.0L/5005.0L;
poly_val[17] = (1647.0L/680680.0L)*x - 243.0L/340340.0L;
poly_val[18] = -7.0L/26520.0L*x + 73.0L/875160.0L;
poly_val[19] = (1.0L/72930.0L)*x - 1.0L/218790.0L;
break;
}
}
void beta_n9_m2(int deriv, double x, double *poly_val) {
switch(deriv)
{
case 0:
poly_val[0] = x*(x*(x*(x*((1.0L/151470.0L)*x - 23.0L/1312740.0L) + 1.0L/77220.0L) + 1.0L/3938220.0L) - 1.0L/437580.0L);
poly_val[1] = x*(x*(x*(x*(-15871.0L/126023040.0L*x + 42389.0L/126023040.0L) - 31621.0L/126023040.0L) - 9.0L/1555840.0L) + 9.0L/194480.0L);
poly_val[2] = x*(x*(x*(x*((17379.0L/15247232.0L)*x - 23391.0L/7623616.0L) + 176391.0L/76236160.0L) + 9.0L/140140.0L) - 9.0L/20020.0L);
poly_val[3] = x*(x*(x*(x*(-1369.0L/210210.0L*x + 2481.0L/140140.0L) - 379.0L/28028.0L) - 1.0L/2145.0L) + 2.0L/715.0L);
poly_val[4] = x*(x*(x*(x*((283.0L/10725.0L)*x - 779.0L/10725.0L) + 604.0L/10725.0L) + 9.0L/3575.0L) - 9.0L/715.0L);
poly_val[5] = x*(x*(x*(x*(-2313.0L/28600.0L*x + 6471.0L/28600.0L) - 5103.0L/28600.0L) - 63.0L/5720.0L) + 63.0L/1430.0L);
poly_val[6] = x*(x*(x*(x*((259.0L/1320.0L)*x - 1603.0L/2860.0L) + 2569.0L/5720.0L) + 7.0L/165.0L) - 7.0L/55.0L);
poly_val[7] = x*(x*(x*(x*(-13.0L/33.0L*x + 38.0L/33.0L) - 152.0L/165.0L) - 9.0L/55.0L) + 18.0L/55.0L);
poly_val[8] = x*(x*(x*(x*((36.0L/55.0L)*x - 207.0L/110.0L) + 27.0L/22.0L) + 9.0L/10.0L) - 9.0L/10.0L);
poly_val[9] = pow(x, 2)*(x*(x*(-5462819.0L/6350400.0L*x + 4827779.0L/2116800.0L) - 1864259.0L/2116800.0L) - 9778141.0L/6350400.0L) + 1;
poly_val[10] = x*(x*(x*(x*((5462819.0L/6350400.0L)*x - 6415379.0L/3175200.0L) + 2287619.0L/6350400.0L) + 9.0L/10.0L) + 9.0L/10.0L);
poly_val[11] = x*(x*(x*(x*(-36.0L/55.0L*x + 153.0L/110.0L) - 27.0L/110.0L) - 9.0L/55.0L) - 18.0L/55.0L);
poly_val[12] = x*(x*(x*(x*((13.0L/33.0L)*x - 9.0L/11.0L) + 14.0L/55.0L) + 7.0L/165.0L) + 7.0L/55.0L);
poly_val[13] = x*(x*(x*(x*(-259.0L/1320.0L*x + 7217.0L/17160.0L) - 581.0L/3432.0L) - 63.0L/5720.0L) - 63.0L/1430.0L);
poly_val[14] = x*(x*(x*(x*((2313.0L/28600.0L)*x - 2547.0L/14300.0L) + 2349.0L/28600.0L) + 9.0L/3575.0L) + 9.0L/715.0L);
poly_val[15] = x*(x*(x*(x*(-283.0L/10725.0L*x + 212.0L/3575.0L) - 106.0L/3575.0L) - 1.0L/2145.0L) - 2.0L/715.0L);
poly_val[16] = x*(x*(x*(x*((1369.0L/210210.0L)*x - 6247.0L/420420.0L) + 3293.0L/420420.0L) + 9.0L/140140.0L) + 9.0L/20020.0L);
poly_val[17] = x*(x*(x*(x*(-17379.0L/15247232.0L*x + 40113.0L/15247232.0L) - 6453.0L/4484480.0L) - 9.0L/1555840.0L) - 9.0L/194480.0L);
poly_val[18] = x*(x*(x*(x*((15871.0L/126023040.0L)*x - 6161.0L/21003840.0L) + 1385.0L/8401536.0L) + 1.0L/3938220.0L) + 1.0L/437580.0L);
poly_val[19] = pow(x, 3)*(x*(-1.0L/151470.0L*x + 61.0L/3938220.0L) - 7.0L/787644.0L);
break;
case 1:
poly_val[0] = x*(x*(x*((1.0L/30294.0L)*x - 23.0L/328185.0L) + 1.0L/25740.0L) + 1.0L/1969110.0L) - 1.0L/437580.0L;
poly_val[1] = x*(x*(x*(-15871.0L/25204608.0L*x + 42389.0L/31505760.0L) - 31621.0L/42007680.0L) - 9.0L/777920.0L) + 9.0L/194480.0L;
poly_val[2] = x*(x*(x*((86895.0L/15247232.0L)*x - 23391.0L/1905904.0L) + 529173.0L/76236160.0L) + 9.0L/70070.0L) - 9.0L/20020.0L;
poly_val[3] = x*(x*(x*(-1369.0L/42042.0L*x + 2481.0L/35035.0L) - 1137.0L/28028.0L) - 2.0L/2145.0L) + 2.0L/715.0L;
poly_val[4] = x*(x*(x*((283.0L/2145.0L)*x - 3116.0L/10725.0L) + 604.0L/3575.0L) + 18.0L/3575.0L) - 9.0L/715.0L;
poly_val[5] = x*(x*(x*(-2313.0L/5720.0L*x + 6471.0L/7150.0L) - 15309.0L/28600.0L) - 63.0L/2860.0L) + 63.0L/1430.0L;
poly_val[6] = x*(x*(x*((259.0L/264.0L)*x - 1603.0L/715.0L) + 7707.0L/5720.0L) + 14.0L/165.0L) - 7.0L/55.0L;
poly_val[7] = x*(x*(x*(-65.0L/33.0L*x + 152.0L/33.0L) - 152.0L/55.0L) - 18.0L/55.0L) + 18.0L/55.0L;
poly_val[8] = x*(x*(x*((36.0L/11.0L)*x - 414.0L/55.0L) + 81.0L/22.0L) + 9.0L/5.0L) - 9.0L/10.0L;
poly_val[9] = x*(x*(x*(-5462819.0L/1270080.0L*x + 4827779.0L/529200.0L) - 1864259.0L/705600.0L) - 9778141.0L/3175200.0L);
poly_val[10] = x*(x*(x*((5462819.0L/1270080.0L)*x - 6415379.0L/793800.0L) + 2287619.0L/2116800.0L) + 9.0L/5.0L) + 9.0L/10.0L;
poly_val[11] = x*(x*(x*(-36.0L/11.0L*x + 306.0L/55.0L) - 81.0L/110.0L) - 18.0L/55.0L) - 18.0L/55.0L;
poly_val[12] = x*(x*(x*((65.0L/33.0L)*x - 36.0L/11.0L) + 42.0L/55.0L) + 14.0L/165.0L) + 7.0L/55.0L;
poly_val[13] = x*(x*(x*(-259.0L/264.0L*x + 7217.0L/4290.0L) - 581.0L/1144.0L) - 63.0L/2860.0L) - 63.0L/1430.0L;
poly_val[14] = x*(x*(x*((2313.0L/5720.0L)*x - 2547.0L/3575.0L) + 7047.0L/28600.0L) + 18.0L/3575.0L) + 9.0L/715.0L;
poly_val[15] = x*(x*(x*(-283.0L/2145.0L*x + 848.0L/3575.0L) - 318.0L/3575.0L) - 2.0L/2145.0L) - 2.0L/715.0L;
poly_val[16] = x*(x*(x*((1369.0L/42042.0L)*x - 6247.0L/105105.0L) + 3293.0L/140140.0L) + 9.0L/70070.0L) + 9.0L/20020.0L;
poly_val[17] = x*(x*(x*(-86895.0L/15247232.0L*x + 40113.0L/3811808.0L) - 19359.0L/4484480.0L) - 9.0L/777920.0L) - 9.0L/194480.0L;
poly_val[18] = x*(x*(x*((15871.0L/25204608.0L)*x - 6161.0L/5250960.0L) + 1385.0L/2800512.0L) + 1.0L/1969110.0L) + 1.0L/437580.0L;
poly_val[19] = pow(x, 2)*(x*(-1.0L/30294.0L*x + 61.0L/984555.0L) - 7.0L/262548.0L);
break;
case 2:
poly_val[0] = x*(x*((2.0L/15147.0L)*x - 23.0L/109395.0L) + 1.0L/12870.0L) + 1.0L/1969110.0L;
poly_val[1] = x*(x*(-15871.0L/6301152.0L*x + 42389.0L/10501920.0L) - 31621.0L/21003840.0L) - 9.0L/777920.0L;
poly_val[2] = x*(x*((86895.0L/3811808.0L)*x - 70173.0L/1905904.0L) + 529173.0L/38118080.0L) + 9.0L/70070.0L;
poly_val[3] = x*(x*(-2738.0L/21021.0L*x + 7443.0L/35035.0L) - 1137.0L/14014.0L) - 2.0L/2145.0L;
poly_val[4] = x*(x*((1132.0L/2145.0L)*x - 3116.0L/3575.0L) + 1208.0L/3575.0L) + 18.0L/3575.0L;
poly_val[5] = x*(x*(-2313.0L/1430.0L*x + 19413.0L/7150.0L) - 15309.0L/14300.0L) - 63.0L/2860.0L;
poly_val[6] = x*(x*((259.0L/66.0L)*x - 4809.0L/715.0L) + 7707.0L/2860.0L) + 14.0L/165.0L;
poly_val[7] = x*(x*(-260.0L/33.0L*x + 152.0L/11.0L) - 304.0L/55.0L) - 18.0L/55.0L;
poly_val[8] = x*(x*((144.0L/11.0L)*x - 1242.0L/55.0L) + 81.0L/11.0L) + 9.0L/5.0L;
poly_val[9] = x*(x*(-5462819.0L/317520.0L*x + 4827779.0L/176400.0L) - 1864259.0L/352800.0L) - 9778141.0L/3175200.0L;
poly_val[10] = x*(x*((5462819.0L/317520.0L)*x - 6415379.0L/264600.0L) + 2287619.0L/1058400.0L) + 9.0L/5.0L;
poly_val[11] = x*(x*(-144.0L/11.0L*x + 918.0L/55.0L) - 81.0L/55.0L) - 18.0L/55.0L;
poly_val[12] = x*(x*((260.0L/33.0L)*x - 108.0L/11.0L) + 84.0L/55.0L) + 14.0L/165.0L;
poly_val[13] = x*(x*(-259.0L/66.0L*x + 7217.0L/1430.0L) - 581.0L/572.0L) - 63.0L/2860.0L;
poly_val[14] = x*(x*((2313.0L/1430.0L)*x - 7641.0L/3575.0L) + 7047.0L/14300.0L) + 18.0L/3575.0L;
poly_val[15] = x*(x*(-1132.0L/2145.0L*x + 2544.0L/3575.0L) - 636.0L/3575.0L) - 2.0L/2145.0L;
poly_val[16] = x*(x*((2738.0L/21021.0L)*x - 6247.0L/35035.0L) + 3293.0L/70070.0L) + 9.0L/70070.0L;
poly_val[17] = x*(x*(-86895.0L/3811808.0L*x + 120339.0L/3811808.0L) - 19359.0L/2242240.0L) - 9.0L/777920.0L;
poly_val[18] = x*(x*((15871.0L/6301152.0L)*x - 6161.0L/1750320.0L) + 1385.0L/1400256.0L) + 1.0L/1969110.0L;
poly_val[19] = x*(x*(-2.0L/15147.0L*x + 61.0L/328185.0L) - 7.0L/131274.0L);
break;
}
}
void beta_n9_m3(int deriv, double x, double *poly_val) {
switch(deriv)
{
case 0:
poly_val[0] = x*(x*(x*(x*(x*(x*(-1888217.0L/102918816000.0L*x + 4978651.0L/77189112000.0L) - 11858753.0L/154378224000.0L) + 44201.0L/1513512000.0L) + 63397.0L/18162144000.0L) + 1.0L/3938220.0L) - 1.0L/437580.0L);
poly_val[1] = x*(x*(x*(x*(x*(x*((3845371.0L/11027016000.0L)*x - 378705053.0L/308756448000.0L) + 451208881.0L/308756448000.0L) - 11393267.0L/20583763200.0L) - 10949.0L/155232000.0L) - 9.0L/1555840.0L) + 9.0L/194480.0L);
poly_val[2] = x*(x*(x*(x*(x*(x*(-53864479.0L/17153136000.0L*x + 34466423.0L/3118752000.0L) - 50212829.0L/3811808000.0L) + 4865737.0L/980179200.0L) + 196909.0L/288288000.0L) + 9.0L/140140.0L) - 9.0L/20020.0L);
poly_val[3] = x*(x*(x*(x*(x*(x*((323440939.0L/18162144000.0L)*x - 1139100889.0L/18162144000.0L) + 452791811.0L/6054048000.0L) - 2074439.0L/74131200.0L) - 9601741.0L/2270268000.0L) - 1.0L/2145.0L) + 2.0L/715.0L);
poly_val[4] = x*(x*(x*(x*(x*(x*(-46260611.0L/648648000.0L*x + 190244191.0L/756756000.0L) - 28367477.0L/94594500.0L) + 252001891.0L/2270268000.0L) + 5861.0L/310464.0L) + 9.0L/3575.0L) - 9.0L/715.0L);
poly_val[5] = x*(x*(x*(x*(x*(x*((216286123.0L/1009008000.0L)*x - 381611761.0L/504504000.0L) + 25287533.0L/28028000.0L) - 12734027.0L/38808000.0L) - 9381241.0L/144144000.0L) - 63.0L/5720.0L) + 63.0L/1430.0L);
poly_val[6] = x*(x*(x*(x*(x*(x*(-650812303.0L/1297296000.0L*x + 328457149.0L/185328000.0L) - 912727037.0L/432432000.0L) + 192796181.0L/259459200.0L) + 9072541.0L/49896000.0L) + 7.0L/165.0L) - 7.0L/55.0L);
poly_val[7] = x*(x*(x*(x*(x*(x*((326737249.0L/349272000.0L)*x - 384845203.0L/116424000.0L) + 455197111.0L/116424000.0L) - 89503367.0L/69854400.0L) - 8190541.0L/19404000.0L) - 9.0L/55.0L) + 18.0L/55.0L);
poly_val[8] = x*(x*(x*(x*(x*(x*(-15623459.0L/11088000.0L*x + 12051359.0L/2425500.0L) - 24996777.0L/4312000.0L) + 3398939.0L/1940400.0L) + 3427741.0L/7056000.0L) + 9.0L/10.0L) - 9.0L/10.0L);
poly_val[9] = pow(x, 2)*(pow(x, 2)*(x*(x*((109653629.0L/63504000.0L)*x - 128296219.0L/21168000.0L) + 442116007.0L/63504000.0L) - 18943367.0L/9072000.0L) - 9778141.0L/6350400.0L) + 1;
poly_val[10] = x*(x*(x*(x*(x*(x*(-109653629.0L/63504000.0L*x + 191343373.0L/31752000.0L) - 217755137.0L/31752000.0L) + 10180259.0L/4536000.0L) - 3427741.0L/7056000.0L) + 9.0L/10.0L) + 9.0L/10.0L);
poly_val[11] = x*(x*(x*(x*(x*(x*((15623459.0L/11088000.0L)*x - 379906003.0L/77616000.0L) + 48081059.0L/8624000.0L) - 31369501.0L/15523200.0L) + 8190541.0L/19404000.0L) - 9.0L/55.0L) - 18.0L/55.0L);
poly_val[12] = x*(x*(x*(x*(x*(x*(-326737249.0L/349272000.0L*x + 566312567.0L/174636000.0L) - 108321659.0L/29106000.0L) + 49820941.0L/34927200.0L) - 9072541.0L/49896000.0L) + 7.0L/165.0L) + 7.0L/55.0L);
poly_val[13] = x*(x*(x*(x*(x*(x*((650812303.0L/1297296000.0L)*x - 4884169.0L/2808000.0L) + 54375817.0L/27027000.0L) - 101735461.0L/129729600.0L) + 9381241.0L/144144000.0L) - 63.0L/5720.0L) - 63.0L/1430.0L);
poly_val[14] = x*(x*(x*(x*(x*(x*(-216286123.0L/1009008000.0L*x + 750779339.0L/1009008000.0L) - 97002071.0L/112112000.0L) + 342332713.0L/1009008000.0L) - 5861.0L/310464.0L) + 9.0L/3575.0L) + 9.0L/715.0L);
poly_val[15] = x*(x*(x*(x*(x*(x*((46260611.0L/648648000.0L)*x - 1125304793.0L/4540536000.0L) + 437719279.0L/1513512000.0L) - 516063203.0L/4540536000.0L) + 9601741.0L/2270268000.0L) - 1.0L/2145.0L) - 2.0L/715.0L);
poly_val[16] = x*(x*(x*(x*(x*(x*(-323440939.0L/18162144000.0L*x + 93748807.0L/1513512000.0L) - 219338303.0L/3027024000.0L) + 3696851.0L/129729600.0L) - 196909.0L/288288000.0L) + 9.0L/140140.0L) + 9.0L/20020.0L);
poly_val[17] = x*(x*(x*(x*(x*(x*((53864479.0L/17153136000.0L)*x - 374972053.0L/34306272000.0L) + 48826629.0L/3811808000.0L) - 290471.0L/57657600.0L) + 10949.0L/155232000.0L) - 9.0L/1555840.0L) - 9.0L/194480.0L);
poly_val[18] = x*(x*(x*(x*(x*(x*(-3845371.0L/11027016000.0L*x + 374987663.0L/308756448000.0L) - 440056711.0L/308756448000.0L) + 2662049.0L/4750099200.0L) - 63397.0L/18162144000.0L) + 1.0L/3938220.0L) + 1.0L/437580.0L);
poly_val[19] = pow(x, 4)*(x*(x*((1888217.0L/102918816000.0L)*x - 19737953.0L/308756448000.0L) + 23187553.0L/308756448000.0L) - 9114251.0L/308756448000.0L);
break;
case 1:
poly_val[0] = x*(x*(x*(x*(x*(-1888217.0L/14702688000.0L*x + 4978651.0L/12864852000.0L) - 11858753.0L/30875644800.0L) + 44201.0L/378378000.0L) + 63397.0L/6054048000.0L) + 1.0L/1969110.0L) - 1.0L/437580.0L;
poly_val[1] = x*(x*(x*(x*(x*((3845371.0L/1575288000.0L)*x - 378705053.0L/51459408000.0L) + 451208881.0L/61751289600.0L) - 11393267.0L/5145940800.0L) - 10949.0L/51744000.0L) - 9.0L/777920.0L) + 9.0L/194480.0L;
poly_val[2] = x*(x*(x*(x*(x*(-53864479.0L/2450448000.0L*x + 34466423.0L/519792000.0L) - 50212829.0L/762361600.0L) + 4865737.0L/245044800.0L) + 196909.0L/96096000.0L) + 9.0L/70070.0L) - 9.0L/20020.0L;
poly_val[3] = x*(x*(x*(x*(x*((323440939.0L/2594592000.0L)*x - 1139100889.0L/3027024000.0L) + 452791811.0L/1210809600.0L) - 2074439.0L/18532800.0L) - 9601741.0L/756756000.0L) - 2.0L/2145.0L) + 2.0L/715.0L;
poly_val[4] = x*(x*(x*(x*(x*(-46260611.0L/92664000.0L*x + 190244191.0L/126126000.0L) - 28367477.0L/18918900.0L) + 252001891.0L/567567000.0L) + 5861.0L/103488.0L) + 18.0L/3575.0L) - 9.0L/715.0L;
poly_val[5] = x*(x*(x*(x*(x*((216286123.0L/144144000.0L)*x - 381611761.0L/84084000.0L) + 25287533.0L/5605600.0L) - 12734027.0L/9702000.0L) - 9381241.0L/48048000.0L) - 63.0L/2860.0L) + 63.0L/1430.0L;
poly_val[6] = x*(x*(x*(x*(x*(-650812303.0L/185328000.0L*x + 328457149.0L/30888000.0L) - 912727037.0L/86486400.0L) + 192796181.0L/64864800.0L) + 9072541.0L/16632000.0L) + 14.0L/165.0L) - 7.0L/55.0L;
poly_val[7] = x*(x*(x*(x*(x*((326737249.0L/49896000.0L)*x - 384845203.0L/19404000.0L) + 455197111.0L/23284800.0L) - 89503367.0L/17463600.0L) - 8190541.0L/6468000.0L) - 18.0L/55.0L) + 18.0L/55.0L;
poly_val[8] = x*(x*(x*(x*(x*(-15623459.0L/1584000.0L*x + 12051359.0L/404250.0L) - 24996777.0L/862400.0L) + 3398939.0L/485100.0L) + 3427741.0L/2352000.0L) + 9.0L/5.0L) - 9.0L/10.0L;
poly_val[9] = x*(pow(x, 2)*(x*(x*((109653629.0L/9072000.0L)*x - 128296219.0L/3528000.0L) + 442116007.0L/12700800.0L) - 18943367.0L/2268000.0L) - 9778141.0L/3175200.0L);
poly_val[10] = x*(x*(x*(x*(x*(-109653629.0L/9072000.0L*x + 191343373.0L/5292000.0L) - 217755137.0L/6350400.0L) + 10180259.0L/1134000.0L) - 3427741.0L/2352000.0L) + 9.0L/5.0L) + 9.0L/10.0L;
poly_val[11] = x*(x*(x*(x*(x*((15623459.0L/1584000.0L)*x - 379906003.0L/12936000.0L) + 48081059.0L/1724800.0L) - 31369501.0L/3880800.0L) + 8190541.0L/6468000.0L) - 18.0L/55.0L) - 18.0L/55.0L;
poly_val[12] = x*(x*(x*(x*(x*(-326737249.0L/49896000.0L*x + 566312567.0L/29106000.0L) - 108321659.0L/5821200.0L) + 49820941.0L/8731800.0L) - 9072541.0L/16632000.0L) + 14.0L/165.0L) + 7.0L/55.0L;
poly_val[13] = x*(x*(x*(x*(x*((650812303.0L/185328000.0L)*x - 4884169.0L/468000.0L) + 54375817.0L/5405400.0L) - 101735461.0L/32432400.0L) + 9381241.0L/48048000.0L) - 63.0L/2860.0L) - 63.0L/1430.0L;
poly_val[14] = x*(x*(x*(x*(x*(-216286123.0L/144144000.0L*x + 750779339.0L/168168000.0L) - 97002071.0L/22422400.0L) + 342332713.0L/252252000.0L) - 5861.0L/103488.0L) + 18.0L/3575.0L) + 9.0L/715.0L;
poly_val[15] = x*(x*(x*(x*(x*((46260611.0L/92664000.0L)*x - 1125304793.0L/756756000.0L) + 437719279.0L/302702400.0L) - 516063203.0L/1135134000.0L) + 9601741.0L/756756000.0L) - 2.0L/2145.0L) - 2.0L/715.0L;
poly_val[16] = x*(x*(x*(x*(x*(-323440939.0L/2594592000.0L*x + 93748807.0L/252252000.0L) - 219338303.0L/605404800.0L) + 3696851.0L/32432400.0L) - 196909.0L/96096000.0L) + 9.0L/70070.0L) + 9.0L/20020.0L;
poly_val[17] = x*(x*(x*(x*(x*((53864479.0L/2450448000.0L)*x - 374972053.0L/5717712000.0L) + 48826629.0L/762361600.0L) - 290471.0L/14414400.0L) + 10949.0L/51744000.0L) - 9.0L/777920.0L) - 9.0L/194480.0L;
poly_val[18] = x*(x*(x*(x*(x*(-3845371.0L/1575288000.0L*x + 374987663.0L/51459408000.0L) - 440056711.0L/61751289600.0L) + 2662049.0L/1187524800.0L) - 63397.0L/6054048000.0L) + 1.0L/1969110.0L) + 1.0L/437580.0L;
poly_val[19] = pow(x, 3)*(x*(x*((1888217.0L/14702688000.0L)*x - 19737953.0L/51459408000.0L) + 23187553.0L/61751289600.0L) - 9114251.0L/77189112000.0L);
break;
case 2:
poly_val[0] = x*(x*(x*(x*(-1888217.0L/2450448000.0L*x + 4978651.0L/2572970400.0L) - 11858753.0L/7718911200.0L) + 44201.0L/126126000.0L) + 63397.0L/3027024000.0L) + 1.0L/1969110.0L;
poly_val[1] = x*(x*(x*(x*((3845371.0L/262548000.0L)*x - 378705053.0L/10291881600.0L) + 451208881.0L/15437822400.0L) - 11393267.0L/1715313600.0L) - 10949.0L/25872000.0L) - 9.0L/777920.0L;
poly_val[2] = x*(x*(x*(x*(-53864479.0L/408408000.0L*x + 34466423.0L/103958400.0L) - 50212829.0L/190590400.0L) + 4865737.0L/81681600.0L) + 196909.0L/48048000.0L) + 9.0L/70070.0L;
poly_val[3] = x*(x*(x*(x*((323440939.0L/432432000.0L)*x - 1139100889.0L/605404800.0L) + 452791811.0L/302702400.0L) - 2074439.0L/6177600.0L) - 9601741.0L/378378000.0L) - 2.0L/2145.0L;
poly_val[4] = x*(x*(x*(x*(-46260611.0L/15444000.0L*x + 190244191.0L/25225200.0L) - 28367477.0L/4729725.0L) + 252001891.0L/189189000.0L) + 5861.0L/51744.0L) + 18.0L/3575.0L;
poly_val[5] = x*(x*(x*(x*((216286123.0L/24024000.0L)*x - 381611761.0L/16816800.0L) + 25287533.0L/1401400.0L) - 12734027.0L/3234000.0L) - 9381241.0L/24024000.0L) - 63.0L/2860.0L;
poly_val[6] = x*(x*(x*(x*(-650812303.0L/30888000.0L*x + 328457149.0L/6177600.0L) - 912727037.0L/21621600.0L) + 192796181.0L/21621600.0L) + 9072541.0L/8316000.0L) + 14.0L/165.0L;
poly_val[7] = x*(x*(x*(x*((326737249.0L/8316000.0L)*x - 384845203.0L/3880800.0L) + 455197111.0L/5821200.0L) - 89503367.0L/5821200.0L) - 8190541.0L/3234000.0L) - 18.0L/55.0L;
poly_val[8] = x*(x*(x*(x*(-15623459.0L/264000.0L*x + 12051359.0L/80850.0L) - 24996777.0L/215600.0L) + 3398939.0L/161700.0L) + 3427741.0L/1176000.0L) + 9.0L/5.0L;
poly_val[9] = pow(x, 2)*(x*(x*((109653629.0L/1512000.0L)*x - 128296219.0L/705600.0L) + 442116007.0L/3175200.0L) - 18943367.0L/756000.0L) - 9778141.0L/3175200.0L;
poly_val[10] = x*(x*(x*(x*(-109653629.0L/1512000.0L*x + 191343373.0L/1058400.0L) - 217755137.0L/1587600.0L) + 10180259.0L/378000.0L) - 3427741.0L/1176000.0L) + 9.0L/5.0L;
poly_val[11] = x*(x*(x*(x*((15623459.0L/264000.0L)*x - 379906003.0L/2587200.0L) + 48081059.0L/431200.0L) - 31369501.0L/1293600.0L) + 8190541.0L/3234000.0L) - 18.0L/55.0L;
poly_val[12] = x*(x*(x*(x*(-326737249.0L/8316000.0L*x + 566312567.0L/5821200.0L) - 108321659.0L/1455300.0L) + 49820941.0L/2910600.0L) - 9072541.0L/8316000.0L) + 14.0L/165.0L;
poly_val[13] = x*(x*(x*(x*((650812303.0L/30888000.0L)*x - 4884169.0L/93600.0L) + 54375817.0L/1351350.0L) - 101735461.0L/10810800.0L) + 9381241.0L/24024000.0L) - 63.0L/2860.0L;
poly_val[14] = x*(x*(x*(x*(-216286123.0L/24024000.0L*x + 750779339.0L/33633600.0L) - 97002071.0L/5605600.0L) + 342332713.0L/84084000.0L) - 5861.0L/51744.0L) + 18.0L/3575.0L;
poly_val[15] = x*(x*(x*(x*((46260611.0L/15444000.0L)*x - 1125304793.0L/151351200.0L) + 437719279.0L/75675600.0L) - 516063203.0L/378378000.0L) + 9601741.0L/378378000.0L) - 2.0L/2145.0L;
poly_val[16] = x*(x*(x*(x*(-323440939.0L/432432000.0L*x + 93748807.0L/50450400.0L) - 219338303.0L/151351200.0L) + 3696851.0L/10810800.0L) - 196909.0L/48048000.0L) + 9.0L/70070.0L;
poly_val[17] = x*(x*(x*(x*((53864479.0L/408408000.0L)*x - 374972053.0L/1143542400.0L) + 48826629.0L/190590400.0L) - 290471.0L/4804800.0L) + 10949.0L/25872000.0L) - 9.0L/777920.0L;
poly_val[18] = x*(x*(x*(x*(-3845371.0L/262548000.0L*x + 374987663.0L/10291881600.0L) - 440056711.0L/15437822400.0L) + 2662049.0L/395841600.0L) - 63397.0L/3027024000.0L) + 1.0L/1969110.0L;
poly_val[19] = pow(x, 2)*(x*(x*((1888217.0L/2450448000.0L)*x - 19737953.0L/10291881600.0L) + 23187553.0L/15437822400.0L) - 9114251.0L/25729704000.0L);
break;
}
}
void beta_n9_m4(int deriv, double x, double *poly_val) {
switch(deriv)
{
case 0:
poly_val[0] = x*(x*(x*(x*(x*(x*(x*(x*((41064761.0L/694702008000.0L)*x - 739266961.0L/2778808032000.0L) + 19438393.0L/42750892800.0L) - 252257.0L/721768320.0L) + 1645439.0L/16345929600.0L) - 63397.0L/163459296000.0L) + 63397.0L/18162144000.0L) + 1.0L/3938220.0L) - 1.0L/437580.0L);
poly_val[1] = x*(x*(x*(x*(x*(x*(x*(x*(-24967737721.0L/22230464256000.0L*x + 112371677293.0L/22230464256000.0L) - 32009510671.0L/3705077376000.0L) + 73804272761.0L/11115232128000.0L) - 2040029.0L/1067489280.0L) + 10949.0L/1241856000.0L) - 10949.0L/155232000.0L) - 9.0L/1555840.0L) + 9.0L/194480.0L);
poly_val[2] = x*(x*(x*(x*(x*(x*(x*(x*((2774247673.0L/274450176000.0L)*x - 346838241.0L/7623616000.0L) + 27714803.0L/356428800.0L) - 4099765343.0L/68612544000.0L) + 1571889307.0L/91483392000.0L) - 196909.0L/2018016000.0L) + 196909.0L/288288000.0L) + 9.0L/140140.0L) - 9.0L/20020.0L);
poly_val[3] = x*(x*(x*(x*(x*(x*(x*(x*(-390139199.0L/6810804000.0L*x + 14047573997.0L/54486432000.0L) - 3429833893.0L/7783776000.0L) + 67075889.0L/198132480.0L) - 58224899.0L/598752000.0L) + 9601741.0L/13621608000.0L) - 9601741.0L/2270268000.0L) - 1.0L/2145.0L) + 2.0L/715.0L);
poly_val[4] = x*(x*(x*(x*(x*(x*(x*(x*((3121232971.0L/13621608000.0L)*x - 2809674701.0L/2724321600.0L) + 8003230493.0L/4540536000.0L) - 4610296543.0L/3405402000.0L) + 5290082767.0L/13621608000.0L) - 5861.0L/1552320.0L) + 5861.0L/310464.0L) + 9.0L/3575.0L) - 9.0L/715.0L);
poly_val[5] = x*(x*(x*(x*(x*(x*(x*(x*(-2774576947.0L/4036032000.0L*x + 1387590587.0L/448448000.0L) - 2134234717.0L/403603200.0L) + 234077981.0L/57657600.0L) - 62576029.0L/53813760.0L) + 9381241.0L/576576000.0L) - 9381241.0L/144144000.0L) - 63.0L/5720.0L) + 63.0L/1430.0L);
poly_val[6] = x*(x*(x*(x*(x*(x*(x*(x*((3567551993.0L/2223936000.0L)*x - 1003596169.0L/138996000.0L) + 96036348283.0L/7783776000.0L) - 119617651.0L/12636000.0L) + 8431990223.0L/3113510400.0L) - 9072541.0L/149688000.0L) + 9072541.0L/49896000.0L) + 7.0L/165.0L) - 7.0L/55.0L);
poly_val[7] = x*(x*(x*(x*(x*(x*(x*(x*(-3121831129.0L/1047816000.0L*x + 3512754907.0L/261954000.0L) - 29097643.0L/1270080.0L) + 2629412623.0L/149688000.0L) - 2639918789.0L/523908000.0L) + 8190541.0L/38808000.0L) - 8190541.0L/19404000.0L) - 9.0L/55.0L) + 18.0L/55.0L);
poly_val[8] = x*(x*(x*(x*(x*(x*(x*(x*((173445649.0L/38808000.0L)*x - 173469767.0L/8624000.0L) + 2666634419.0L/77616000.0L) - 204389797.0L/7761600.0L) + 7042859.0L/924000.0L) - 3427741.0L/7056000.0L) + 3427741.0L/7056000.0L) + 9.0L/10.0L) - 9.0L/10.0L);
poly_val[9] = pow(x, 2)*(pow(x, 2)*(x*(x*(x*(x*(-24977055133.0L/4572288000.0L*x + 4496095937.0L/182891520.0L) - 13710284363.0L/326592000.0L) + 73580652293.0L/2286144000.0L) - 43121414201.0L/4572288000.0L) + 117868837.0L/182891520.0L) - 9778141.0L/6350400.0L) + 1;
poly_val[10] = x*(x*(x*(x*(x*(x*(x*(x*((24977055133.0L/4572288000.0L)*x - 28097774443.0L/1143072000.0L) + 913803707.0L/21772800.0L) - 7362601913.0L/228614400.0L) + 1244337839.0L/130636800.0L) - 3427741.0L/7056000.0L) - 3427741.0L/7056000.0L) + 9.0L/10.0L) + 9.0L/10.0L);
poly_val[11] = x*(x*(x*(x*(x*(x*(x*(x*(-173445649.0L/38808000.0L*x + 173421531.0L/8624000.0L) - 2664897923.0L/77616000.0L) + 186093701.0L/7056000.0L) - 40471741.0L/5174400.0L) + 8190541.0L/38808000.0L) + 8190541.0L/19404000.0L) - 9.0L/55.0L) - 18.0L/55.0L);
poly_val[12] = x*(x*(x*(x*(x*(x*(x*(x*((3121831129.0L/1047816000.0L)*x - 14045460533.0L/1047816000.0L) + 4796663819.0L/209563200.0L) - 41156842.0L/2338875.0L) + 5454795473.0L/1047816000.0L) - 9072541.0L/149688000.0L) - 9072541.0L/49896000.0L) + 7.0L/165.0L) + 7.0L/55.0L);
poly_val[13] = x*(x*(x*(x*(x*(x*(x*(x*(-3567551993.0L/2223936000.0L*x + 16050429233.0L/2223936000.0L) - 223628941.0L/18144000.0L) + 2108327369.0L/222393600.0L) - 43498588667.0L/15567552000.0L) + 9381241.0L/576576000.0L) + 9381241.0L/144144000.0L) - 63.0L/5720.0L) - 63.0L/1430.0L);
poly_val[14] = x*(x*(x*(x*(x*(x*(x*(x*((2774576947.0L/4036032000.0L)*x - 34674659.0L/11211200.0L) + 10660297499.0L/2018016000.0L) - 26627609.0L/6552000.0L) + 1606926733.0L/1345344000.0L) - 5861.0L/1552320.0L) - 5861.0L/310464.0L) + 9.0L/3575.0L) + 9.0L/715.0L);
poly_val[15] = x*(x*(x*(x*(x*(x*(x*(x*(-3121232971.0L/13621608000.0L*x + 7021361617.0L/6810804000.0L) - 4797418079.0L/2724321600.0L) + 3691153121.0L/2724321600.0L) - 38663749.0L/97297200.0L) + 9601741.0L/13621608000.0L) + 9601741.0L/2270268000.0L) - 1.0L/2145.0L) - 2.0L/715.0L);
poly_val[16] = x*(x*(x*(x*(x*(x*(x*(x*((390139199.0L/6810804000.0L)*x - 14042448331.0L/54486432000.0L) + 1142301647.0L/2594592000.0L) - 9228730547.0L/27243216000.0L) + 41576923.0L/419126400.0L) - 196909.0L/2018016000.0L) - 196909.0L/288288000.0L) + 9.0L/140140.0L) + 9.0L/20020.0L);
poly_val[17] = x*(x*(x*(x*(x*(x*(x*(x*(-2774247673.0L/274450176000.0L*x + 1386894709.0L/30494464000.0L) - 304627159.0L/3920716800.0L) + 745799291.0L/12475008000.0L) - 1920359.0L/109824000.0L) + 10949.0L/1241856000.0L) + 10949.0L/155232000.0L) - 9.0L/1555840.0L) - 9.0L/194480.0L);
poly_val[18] = x*(x*(x*(x*(x*(x*(x*(x*((24967737721.0L/22230464256000.0L)*x - 28084490549.0L/5557616064000.0L) + 8723736529.0L/1010475648000.0L) - 7383695351.0L/1111523212800.0L) + 2538335281.0L/1307674368000.0L) - 63397.0L/163459296000.0L) - 63397.0L/18162144000.0L) + 1.0L/3938220.0L) + 1.0L/437580.0L);
poly_val[19] = pow(x, 5)*(x*(x*(x*(-41064761.0L/694702008000.0L*x + 147812887.0L/555761606400.0L) - 420895147.0L/926269344000.0L) + 138794879.0L/396972576000.0L) - 283684103.0L/2778808032000.0L);
break;
case 1:
poly_val[0] = x*(x*(x*(x*(x*(x*(x*((41064761.0L/77189112000.0L)*x - 739266961.0L/347351004000.0L) + 19438393.0L/6107270400.0L) - 252257.0L/120294720.0L) + 1645439.0L/3269185920.0L) - 63397.0L/40864824000.0L) + 63397.0L/6054048000.0L) + 1.0L/1969110.0L) - 1.0L/437580.0L;
poly_val[1] = x*(x*(x*(x*(x*(x*(x*(-24967737721.0L/2470051584000.0L*x + 112371677293.0L/2778808032000.0L) - 32009510671.0L/529296768000.0L) + 73804272761.0L/1852538688000.0L) - 2040029.0L/213497856.0L) + 10949.0L/310464000.0L) - 10949.0L/51744000.0L) - 9.0L/777920.0L) + 9.0L/194480.0L;
poly_val[2] = x*(x*(x*(x*(x*(x*(x*((2774247673.0L/30494464000.0L)*x - 346838241.0L/952952000.0L) + 27714803.0L/50918400.0L) - 4099765343.0L/11435424000.0L) + 1571889307.0L/18296678400.0L) - 196909.0L/504504000.0L) + 196909.0L/96096000.0L) + 9.0L/70070.0L) - 9.0L/20020.0L;
poly_val[3] = x*(x*(x*(x*(x*(x*(x*(-390139199.0L/756756000.0L*x + 14047573997.0L/6810804000.0L) - 3429833893.0L/1111968000.0L) + 67075889.0L/33022080.0L) - 58224899.0L/119750400.0L) + 9601741.0L/3405402000.0L) - 9601741.0L/756756000.0L) - 2.0L/2145.0L) + 2.0L/715.0L;
poly_val[4] = x*(x*(x*(x*(x*(x*(x*((3121232971.0L/1513512000.0L)*x - 2809674701.0L/340540200.0L) + 8003230493.0L/648648000.0L) - 4610296543.0L/567567000.0L) + 5290082767.0L/2724321600.0L) - 5861.0L/388080.0L) + 5861.0L/103488.0L) + 18.0L/3575.0L) - 9.0L/715.0L;
poly_val[5] = x*(x*(x*(x*(x*(x*(x*(-2774576947.0L/448448000.0L*x + 1387590587.0L/56056000.0L) - 2134234717.0L/57657600.0L) + 234077981.0L/9609600.0L) - 62576029.0L/10762752.0L) + 9381241.0L/144144000.0L) - 9381241.0L/48048000.0L) - 63.0L/2860.0L) + 63.0L/1430.0L;
poly_val[6] = x*(x*(x*(x*(x*(x*(x*((3567551993.0L/247104000.0L)*x - 1003596169.0L/17374500.0L) + 96036348283.0L/1111968000.0L) - 119617651.0L/2106000.0L) + 8431990223.0L/622702080.0L) - 9072541.0L/37422000.0L) + 9072541.0L/16632000.0L) + 14.0L/165.0L) - 7.0L/55.0L;
poly_val[7] = x*(x*(x*(x*(x*(x*(x*(-3121831129.0L/116424000.0L*x + 3512754907.0L/32744250.0L) - 29097643.0L/181440.0L) + 2629412623.0L/24948000.0L) - 2639918789.0L/104781600.0L) + 8190541.0L/9702000.0L) - 8190541.0L/6468000.0L) - 18.0L/55.0L) + 18.0L/55.0L;
poly_val[8] = x*(x*(x*(x*(x*(x*(x*((173445649.0L/4312000.0L)*x - 173469767.0L/1078000.0L) + 2666634419.0L/11088000.0L) - 204389797.0L/1293600.0L) + 7042859.0L/184800.0L) - 3427741.0L/1764000.0L) + 3427741.0L/2352000.0L) + 9.0L/5.0L) - 9.0L/10.0L;
poly_val[9] = x*(pow(x, 2)*(x*(x*(x*(x*(-24977055133.0L/508032000.0L*x + 4496095937.0L/22861440.0L) - 13710284363.0L/46656000.0L) + 73580652293.0L/381024000.0L) - 43121414201.0L/914457600.0L) + 117868837.0L/45722880.0L) - 9778141.0L/3175200.0L);
poly_val[10] = x*(x*(x*(x*(x*(x*(x*((24977055133.0L/508032000.0L)*x - 28097774443.0L/142884000.0L) + 913803707.0L/3110400.0L) - 7362601913.0L/38102400.0L) + 1244337839.0L/26127360.0L) - 3427741.0L/1764000.0L) - 3427741.0L/2352000.0L) + 9.0L/5.0L) + 9.0L/10.0L;
poly_val[11] = x*(x*(x*(x*(x*(x*(x*(-173445649.0L/4312000.0L*x + 173421531.0L/1078000.0L) - 2664897923.0L/11088000.0L) + 186093701.0L/1176000.0L) - 40471741.0L/1034880.0L) + 8190541.0L/9702000.0L) + 8190541.0L/6468000.0L) - 18.0L/55.0L) - 18.0L/55.0L;
poly_val[12] = x*(x*(x*(x*(x*(x*(x*((3121831129.0L/116424000.0L)*x - 14045460533.0L/130977000.0L) + 4796663819.0L/29937600.0L) - 82313684.0L/779625.0L) + 5454795473.0L/209563200.0L) - 9072541.0L/37422000.0L) - 9072541.0L/16632000.0L) + 14.0L/165.0L) + 7.0L/55.0L;
poly_val[13] = x*(x*(x*(x*(x*(x*(x*(-3567551993.0L/247104000.0L*x + 16050429233.0L/277992000.0L) - 223628941.0L/2592000.0L) + 2108327369.0L/37065600.0L) - 43498588667.0L/3113510400.0L) + 9381241.0L/144144000.0L) + 9381241.0L/48048000.0L) - 63.0L/2860.0L) - 63.0L/1430.0L;
poly_val[14] = x*(x*(x*(x*(x*(x*(x*((2774576947.0L/448448000.0L)*x - 34674659.0L/1401400.0L) + 10660297499.0L/288288000.0L) - 26627609.0L/1092000.0L) + 1606926733.0L/269068800.0L) - 5861.0L/388080.0L) - 5861.0L/103488.0L) + 18.0L/3575.0L) + 9.0L/715.0L;
poly_val[15] = x*(x*(x*(x*(x*(x*(x*(-3121232971.0L/1513512000.0L*x + 7021361617.0L/851350500.0L) - 4797418079.0L/389188800.0L) + 3691153121.0L/454053600.0L) - 38663749.0L/19459440.0L) + 9601741.0L/3405402000.0L) + 9601741.0L/756756000.0L) - 2.0L/2145.0L) - 2.0L/715.0L;
poly_val[16] = x*(x*(x*(x*(x*(x*(x*((390139199.0L/756756000.0L)*x - 14042448331.0L/6810804000.0L) + 1142301647.0L/370656000.0L) - 9228730547.0L/4540536000.0L) + 41576923.0L/83825280.0L) - 196909.0L/504504000.0L) - 196909.0L/96096000.0L) + 9.0L/70070.0L) + 9.0L/20020.0L;
poly_val[17] = x*(x*(x*(x*(x*(x*(x*(-2774247673.0L/30494464000.0L*x + 1386894709.0L/3811808000.0L) - 304627159.0L/560102400.0L) + 745799291.0L/2079168000.0L) - 1920359.0L/21964800.0L) + 10949.0L/310464000.0L) + 10949.0L/51744000.0L) - 9.0L/777920.0L) - 9.0L/194480.0L;
poly_val[18] = x*(x*(x*(x*(x*(x*(x*((24967737721.0L/2470051584000.0L)*x - 28084490549.0L/694702008000.0L) + 8723736529.0L/144353664000.0L) - 7383695351.0L/185253868800.0L) + 2538335281.0L/261534873600.0L) - 63397.0L/40864824000.0L) - 63397.0L/6054048000.0L) + 1.0L/1969110.0L) + 1.0L/437580.0L;
poly_val[19] = pow(x, 4)*(x*(x*(x*(-41064761.0L/77189112000.0L*x + 147812887.0L/69470200800.0L) - 420895147.0L/132324192000.0L) + 138794879.0L/66162096000.0L) - 283684103.0L/555761606400.0L);
break;
case 2:
poly_val[0] = x*(x*(x*(x*(x*(x*((41064761.0L/9648639000.0L)*x - 739266961.0L/49621572000.0L) + 19438393.0L/1017878400.0L) - 252257.0L/24058944.0L) + 1645439.0L/817296480.0L) - 63397.0L/13621608000.0L) + 63397.0L/3027024000.0L) + 1.0L/1969110.0L;
poly_val[1] = x*(x*(x*(x*(x*(x*(-24967737721.0L/308756448000.0L*x + 112371677293.0L/396972576000.0L) - 32009510671.0L/88216128000.0L) + 73804272761.0L/370507737600.0L) - 2040029.0L/53374464.0L) + 10949.0L/103488000.0L) - 10949.0L/25872000.0L) - 9.0L/777920.0L;
poly_val[2] = x*(x*(x*(x*(x*(x*((2774247673.0L/3811808000.0L)*x - 346838241.0L/136136000.0L) + 27714803.0L/8486400.0L) - 4099765343.0L/2287084800.0L) + 1571889307.0L/4574169600.0L) - 196909.0L/168168000.0L) + 196909.0L/48048000.0L) + 9.0L/70070.0L;
poly_val[3] = x*(x*(x*(x*(x*(x*(-390139199.0L/94594500.0L*x + 14047573997.0L/972972000.0L) - 3429833893.0L/185328000.0L) + 67075889.0L/6604416.0L) - 58224899.0L/29937600.0L) + 9601741.0L/1135134000.0L) - 9601741.0L/378378000.0L) - 2.0L/2145.0L;
poly_val[4] = x*(x*(x*(x*(x*(x*((3121232971.0L/189189000.0L)*x - 2809674701.0L/48648600.0L) + 8003230493.0L/108108000.0L) - 4610296543.0L/113513400.0L) + 5290082767.0L/681080400.0L) - 5861.0L/129360.0L) + 5861.0L/51744.0L) + 18.0L/3575.0L;
poly_val[5] = x*(x*(x*(x*(x*(x*(-2774576947.0L/56056000.0L*x + 1387590587.0L/8008000.0L) - 2134234717.0L/9609600.0L) + 234077981.0L/1921920.0L) - 62576029.0L/2690688.0L) + 9381241.0L/48048000.0L) - 9381241.0L/24024000.0L) - 63.0L/2860.0L;
poly_val[6] = x*(x*(x*(x*(x*(x*((3567551993.0L/30888000.0L)*x - 7025173183.0L/17374500.0L) + 96036348283.0L/185328000.0L) - 119617651.0L/421200.0L) + 8431990223.0L/155675520.0L) - 9072541.0L/12474000.0L) + 9072541.0L/8316000.0L) + 14.0L/165.0L;
poly_val[7] = x*(x*(x*(x*(x*(x*(-3121831129.0L/14553000.0L*x + 3512754907.0L/4677750.0L) - 29097643.0L/30240.0L) + 2629412623.0L/4989600.0L) - 2639918789.0L/26195400.0L) + 8190541.0L/3234000.0L) - 8190541.0L/3234000.0L) - 18.0L/55.0L;
poly_val[8] = x*(x*(x*(x*(x*(x*((173445649.0L/539000.0L)*x - 173469767.0L/154000.0L) + 2666634419.0L/1848000.0L) - 204389797.0L/258720.0L) + 7042859.0L/46200.0L) - 3427741.0L/588000.0L) + 3427741.0L/1176000.0L) + 9.0L/5.0L;
poly_val[9] = pow(x, 2)*(x*(x*(x*(x*(-24977055133.0L/63504000.0L*x + 4496095937.0L/3265920.0L) - 13710284363.0L/7776000.0L) + 73580652293.0L/76204800.0L) - 43121414201.0L/228614400.0L) + 117868837.0L/15240960.0L) - 9778141.0L/3175200.0L;
poly_val[10] = x*(x*(x*(x*(x*(x*((24977055133.0L/63504000.0L)*x - 28097774443.0L/20412000.0L) + 913803707.0L/518400.0L) - 7362601913.0L/7620480.0L) + 1244337839.0L/6531840.0L) - 3427741.0L/588000.0L) - 3427741.0L/1176000.0L) + 9.0L/5.0L;
poly_val[11] = x*(x*(x*(x*(x*(x*(-173445649.0L/539000.0L*x + 173421531.0L/154000.0L) - 2664897923.0L/1848000.0L) + 186093701.0L/235200.0L) - 40471741.0L/258720.0L) + 8190541.0L/3234000.0L) + 8190541.0L/3234000.0L) - 18.0L/55.0L;
poly_val[12] = x*(x*(x*(x*(x*(x*((3121831129.0L/14553000.0L)*x - 14045460533.0L/18711000.0L) + 4796663819.0L/4989600.0L) - 82313684.0L/155925.0L) + 5454795473.0L/52390800.0L) - 9072541.0L/12474000.0L) - 9072541.0L/8316000.0L) + 14.0L/165.0L;
poly_val[13] = x*(x*(x*(x*(x*(x*(-3567551993.0L/30888000.0L*x + 112353004631.0L/277992000.0L) - 223628941.0L/432000.0L) + 2108327369.0L/7413120.0L) - 43498588667.0L/778377600.0L) + 9381241.0L/48048000.0L) + 9381241.0L/24024000.0L) - 63.0L/2860.0L;
poly_val[14] = x*(x*(x*(x*(x*(x*((2774576947.0L/56056000.0L)*x - 34674659.0L/200200.0L) + 10660297499.0L/48048000.0L) - 26627609.0L/218400.0L) + 1606926733.0L/67267200.0L) - 5861.0L/129360.0L) - 5861.0L/51744.0L) + 18.0L/3575.0L;
poly_val[15] = x*(x*(x*(x*(x*(x*(-3121232971.0L/189189000.0L*x + 7021361617.0L/121621500.0L) - 4797418079.0L/64864800.0L) + 3691153121.0L/90810720.0L) - 38663749.0L/4864860.0L) + 9601741.0L/1135134000.0L) + 9601741.0L/378378000.0L) - 2.0L/2145.0L;
poly_val[16] = x*(x*(x*(x*(x*(x*((390139199.0L/94594500.0L)*x - 14042448331.0L/972972000.0L) + 1142301647.0L/61776000.0L) - 9228730547.0L/908107200.0L) + 41576923.0L/20956320.0L) - 196909.0L/168168000.0L) - 196909.0L/48048000.0L) + 9.0L/70070.0L;
poly_val[17] = x*(x*(x*(x*(x*(x*(-2774247673.0L/3811808000.0L*x + 1386894709.0L/544544000.0L) - 304627159.0L/93350400.0L) + 745799291.0L/415833600.0L) - 1920359.0L/5491200.0L) + 10949.0L/103488000.0L) + 10949.0L/25872000.0L) - 9.0L/777920.0L;
poly_val[18] = x*(x*(x*(x*(x*(x*((24967737721.0L/308756448000.0L)*x - 28084490549.0L/99243144000.0L) + 8723736529.0L/24058944000.0L) - 7383695351.0L/37050773760.0L) + 2538335281.0L/65383718400.0L) - 63397.0L/13621608000.0L) - 63397.0L/3027024000.0L) + 1.0L/1969110.0L;
poly_val[19] = pow(x, 3)*(x*(x*(x*(-41064761.0L/9648639000.0L*x + 147812887.0L/9924314400.0L) - 420895147.0L/22054032000.0L) + 138794879.0L/13232419200.0L) - 283684103.0L/138940401600.0L);
break;
}
}