-
Chichi Lalescu authoredChichi Lalescu authored
Lagrange_polys.cpp 149.96 KiB
/**********************************************************************
* *
* Copyright 2017 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 "Lagrange_polys.hpp"
#include <cmath>
void beta_Lagrange_n1(int deriv, double x, double *poly_val) {
switch(deriv)
{
case 0:
poly_val[0] = x*(x*(-1.0L/6.0L*x + 1.0L/2.0L) - 1.0L/3.0L);
poly_val[1] = x*(x*((1.0L/2.0L)*x - 1) - 1.0L/2.0L) + 1;
poly_val[2] = x*(x*(-1.0L/2.0L*x + 1.0L/2.0L) + 1);
poly_val[3] = x*((1.0L/6.0L)*pow(x, 2) - 1.0L/6.0L);
break;
case 1:
poly_val[0] = x*(-1.0L/2.0L*x + 1) - 1.0L/3.0L;
poly_val[1] = x*((3.0L/2.0L)*x - 2) - 1.0L/2.0L;
poly_val[2] = x*(-3.0L/2.0L*x + 1) + 1;
poly_val[3] = (1.0L/2.0L)*pow(x, 2) - 1.0L/6.0L;
break;
case 2:
poly_val[0] = -x + 1;
poly_val[1] = 3*x - 2;
poly_val[2] = -3*x + 1;
poly_val[3] = x;
break;
}
}
void beta_Lagrange_n2(int deriv, double x, double *poly_val) {
switch(deriv)
{
case 0:
poly_val[0] = x*(x*(x*(x*(-1.0L/120.0L*x + 1.0L/24.0L) - 1.0L/24.0L) - 1.0L/24.0L) + 1.0L/20.0L);
poly_val[1] = x*(x*(x*(x*((1.0L/24.0L)*x - 1.0L/6.0L) - 1.0L/24.0L) + 2.0L/3.0L) - 1.0L/2.0L);
poly_val[2] = x*(x*(x*(x*(-1.0L/12.0L*x + 1.0L/4.0L) + 5.0L/12.0L) - 5.0L/4.0L) - 1.0L/3.0L) + 1;
poly_val[3] = x*(x*(x*(x*((1.0L/12.0L)*x - 1.0L/6.0L) - 7.0L/12.0L) + 2.0L/3.0L) + 1);
poly_val[4] = x*(x*(x*(x*(-1.0L/24.0L*x + 1.0L/24.0L) + 7.0L/24.0L) - 1.0L/24.0L) - 1.0L/4.0L);
poly_val[5] = x*(pow(x, 2)*((1.0L/120.0L)*pow(x, 2) - 1.0L/24.0L) + 1.0L/30.0L);
break;
case 1:
poly_val[0] = x*(x*(x*(-1.0L/24.0L*x + 1.0L/6.0L) - 1.0L/8.0L) - 1.0L/12.0L) + 1.0L/20.0L;
poly_val[1] = x*(x*(x*((5.0L/24.0L)*x - 2.0L/3.0L) - 1.0L/8.0L) + 4.0L/3.0L) - 1.0L/2.0L;
poly_val[2] = x*(x*(x*(-5.0L/12.0L*x + 1) + 5.0L/4.0L) - 5.0L/2.0L) - 1.0L/3.0L;
poly_val[3] = x*(x*(x*((5.0L/12.0L)*x - 2.0L/3.0L) - 7.0L/4.0L) + 4.0L/3.0L) + 1;
poly_val[4] = x*(x*(x*(-5.0L/24.0L*x + 1.0L/6.0L) + 7.0L/8.0L) - 1.0L/12.0L) - 1.0L/4.0L;
poly_val[5] = pow(x, 2)*((1.0L/24.0L)*pow(x, 2) - 1.0L/8.0L) + 1.0L/30.0L;
break;
case 2:
poly_val[0] = x*(x*(-1.0L/6.0L*x + 1.0L/2.0L) - 1.0L/4.0L) - 1.0L/12.0L;
poly_val[1] = x*(x*((5.0L/6.0L)*x - 2) - 1.0L/4.0L) + 4.0L/3.0L;
poly_val[2] = x*(x*(-5.0L/3.0L*x + 3) + 5.0L/2.0L) - 5.0L/2.0L;
poly_val[3] = x*(x*((5.0L/3.0L)*x - 2) - 7.0L/2.0L) + 4.0L/3.0L;
poly_val[4] = x*(x*(-5.0L/6.0L*x + 1.0L/2.0L) + 7.0L/4.0L) - 1.0L/12.0L;
poly_val[5] = x*((1.0L/6.0L)*pow(x, 2) - 1.0L/4.0L);
break;
}
}
void beta_Lagrange_n3(int deriv, double x, double *poly_val) {
switch(deriv)
{
case 0:
poly_val[0] = x*(x*(x*(x*(x*(x*(-1.0L/5040.0L*x + 1.0L/720.0L) - 1.0L/720.0L) - 1.0L/144.0L) + 1.0L/90.0L) + 1.0L/180.0L) - 1.0L/105.0L);
poly_val[1] = x*(x*(x*(x*(x*(x*((1.0L/720.0L)*x - 1.0L/120.0L) - 1.0L/360.0L) + 1.0L/12.0L) - 71.0L/720.0L) - 3.0L/40.0L) + 1.0L/10.0L);
poly_val[2] = x*(x*(x*(x*(x*(x*(-1.0L/240.0L*x + 1.0L/48.0L) + 3.0L/80.0L) - 13.0L/48.0L) + 1.0L/15.0L) + 3.0L/4.0L) - 3.0L/5.0L);
poly_val[3] = x*(x*(x*(x*(x*(x*((1.0L/144.0L)*x - 1.0L/36.0L) - 7.0L/72.0L) + 7.0L/18.0L) + 49.0L/144.0L) - 49.0L/36.0L) - 1.0L/4.0L) + 1;
poly_val[4] = x*(x*(x*(x*(x*(x*(-1.0L/144.0L*x + 1.0L/48.0L) + 17.0L/144.0L) - 13.0L/48.0L) - 11.0L/18.0L) + 3.0L/4.0L) + 1);
poly_val[5] = x*(x*(x*(x*(x*(x*((1.0L/240.0L)*x - 1.0L/120.0L) - 3.0L/40.0L) + 1.0L/12.0L) + 89.0L/240.0L) - 3.0L/40.0L) - 3.0L/10.0L);
poly_val[6] = x*(x*(x*(x*(x*(x*(-1.0L/720.0L*x + 1.0L/720.0L) + 17.0L/720.0L) - 1.0L/144.0L) - 4.0L/45.0L) + 1.0L/180.0L) + 1.0L/15.0L);
poly_val[7] = x*(pow(x, 2)*(pow(x, 2)*((1.0L/5040.0L)*pow(x, 2) - 1.0L/360.0L) + 7.0L/720.0L) - 1.0L/140.0L);
break;
case 1:
poly_val[0] = x*(x*(x*(x*(x*(-1.0L/720.0L*x + 1.0L/120.0L) - 1.0L/144.0L) - 1.0L/36.0L) + 1.0L/30.0L) + 1.0L/90.0L) - 1.0L/105.0L;
poly_val[1] = x*(x*(x*(x*(x*((7.0L/720.0L)*x - 1.0L/20.0L) - 1.0L/72.0L) + 1.0L/3.0L) - 71.0L/240.0L) - 3.0L/20.0L) + 1.0L/10.0L;
poly_val[2] = x*(x*(x*(x*(x*(-7.0L/240.0L*x + 1.0L/8.0L) + 3.0L/16.0L) - 13.0L/12.0L) + 1.0L/5.0L) + 3.0L/2.0L) - 3.0L/5.0L;
poly_val[3] = x*(x*(x*(x*(x*((7.0L/144.0L)*x - 1.0L/6.0L) - 35.0L/72.0L) + 14.0L/9.0L) + 49.0L/48.0L) - 49.0L/18.0L) - 1.0L/4.0L;
poly_val[4] = x*(x*(x*(x*(x*(-7.0L/144.0L*x + 1.0L/8.0L) + 85.0L/144.0L) - 13.0L/12.0L) - 11.0L/6.0L) + 3.0L/2.0L) + 1;
poly_val[5] = x*(x*(x*(x*(x*((7.0L/240.0L)*x - 1.0L/20.0L) - 3.0L/8.0L) + 1.0L/3.0L) + 89.0L/80.0L) - 3.0L/20.0L) - 3.0L/10.0L;
poly_val[6] = x*(x*(x*(x*(x*(-7.0L/720.0L*x + 1.0L/120.0L) + 17.0L/144.0L) - 1.0L/36.0L) - 4.0L/15.0L) + 1.0L/90.0L) + 1.0L/15.0L;
poly_val[7] = pow(x, 2)*(pow(x, 2)*((1.0L/720.0L)*pow(x, 2) - 1.0L/72.0L) + 7.0L/240.0L) - 1.0L/140.0L;
break;
case 2:
poly_val[0] = x*(x*(x*(x*(-1.0L/120.0L*x + 1.0L/24.0L) - 1.0L/36.0L) - 1.0L/12.0L) + 1.0L/15.0L) + 1.0L/90.0L;
poly_val[1] = x*(x*(x*(x*((7.0L/120.0L)*x - 1.0L/4.0L) - 1.0L/18.0L) + 1) - 71.0L/120.0L) - 3.0L/20.0L;
poly_val[2] = x*(x*(x*(x*(-7.0L/40.0L*x + 5.0L/8.0L) + 3.0L/4.0L) - 13.0L/4.0L) + 2.0L/5.0L) + 3.0L/2.0L;
poly_val[3] = x*(x*(x*(x*((7.0L/24.0L)*x - 5.0L/6.0L) - 35.0L/18.0L) + 14.0L/3.0L) + 49.0L/24.0L) - 49.0L/18.0L;
poly_val[4] = x*(x*(x*(x*(-7.0L/24.0L*x + 5.0L/8.0L) + 85.0L/36.0L) - 13.0L/4.0L) - 11.0L/3.0L) + 3.0L/2.0L;
poly_val[5] = x*(x*(x*(x*((7.0L/40.0L)*x - 1.0L/4.0L) - 3.0L/2.0L) + 1) + 89.0L/40.0L) - 3.0L/20.0L;
poly_val[6] = x*(x*(x*(x*(-7.0L/120.0L*x + 1.0L/24.0L) + 17.0L/36.0L) - 1.0L/12.0L) - 8.0L/15.0L) + 1.0L/90.0L;
poly_val[7] = x*(pow(x, 2)*((1.0L/120.0L)*pow(x, 2) - 1.0L/18.0L) + 7.0L/120.0L);
break;
}
}
void beta_Lagrange_n4(int deriv, double x, double *poly_val) {
switch(deriv)
{
case 0:
poly_val[0] = x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/362880.0L*x + 1.0L/40320.0L) - 1.0L/60480.0L) - 1.0L/2880.0L) + 11.0L/17280.0L) + 7.0L/5760.0L) - 59.0L/22680.0L) - 1.0L/1120.0L) + 1.0L/504.0L);
poly_val[1] = x*(x*(x*(x*(x*(x*(x*(x*((1.0L/40320.0L)*x - 1.0L/5040.0L) - 1.0L/6720.0L) + 1.0L/240.0L) - 11.0L/1920.0L) - 1.0L/60.0L) + 299.0L/10080.0L) + 4.0L/315.0L) - 1.0L/42.0L);
poly_val[2] = x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/10080.0L*x + 1.0L/1440.0L) + 1.0L/630.0L) - 13.0L/720.0L) + 13.0L/1440.0L) + 169.0L/1440.0L) - 773.0L/5040.0L) - 1.0L/10.0L) + 1.0L/7.0L);
poly_val[3] = x*(x*(x*(x*(x*(x*(x*(x*((1.0L/4320.0L)*x - 1.0L/720.0L) - 1.0L/180.0L) + 29.0L/720.0L) + 11.0L/480.0L) - 61.0L/180.0L) + 161.0L/1080.0L) + 4.0L/5.0L) - 2.0L/3.0L);
poly_val[4] = x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/2880.0L*x + 1.0L/576.0L) + 1.0L/96.0L) - 5.0L/96.0L) - 91.0L/960.0L) + 91.0L/192.0L) + 41.0L/144.0L) - 205.0L/144.0L) - 1.0L/5.0L) + 1;
poly_val[5] = x*(x*(x*(x*(x*(x*(x*(x*((1.0L/2880.0L)*x - 1.0L/720.0L) - 17.0L/1440.0L) + 29.0L/720.0L) + 389.0L/2880.0L) - 61.0L/180.0L) - 449.0L/720.0L) + 4.0L/5.0L) + 1);
poly_val[6] = x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/4320.0L*x + 1.0L/1440.0L) + 1.0L/120.0L) - 13.0L/720.0L) - 143.0L/1440.0L) + 169.0L/1440.0L) + 917.0L/2160.0L) - 1.0L/10.0L) - 1.0L/3.0L);
poly_val[7] = x*(x*(x*(x*(x*(x*(x*(x*((1.0L/10080.0L)*x - 1.0L/5040.0L) - 1.0L/280.0L) + 1.0L/240.0L) + 19.0L/480.0L) - 1.0L/60.0L) - 331.0L/2520.0L) + 4.0L/315.0L) + 2.0L/21.0L);
poly_val[8] = x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/40320.0L*x + 1.0L/40320.0L) + 17.0L/20160.0L) - 1.0L/2880.0L) - 47.0L/5760.0L) + 7.0L/5760.0L) + 127.0L/5040.0L) - 1.0L/1120.0L) - 1.0L/56.0L);
poly_val[9] = x*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*((1.0L/362880.0L)*pow(x, 2) - 1.0L/12096.0L) + 13.0L/17280.0L) - 41.0L/18144.0L) + 1.0L/630.0L);
break;
case 1:
poly_val[0] = x*(x*(x*(x*(x*(x*(x*(-1.0L/40320.0L*x + 1.0L/5040.0L) - 1.0L/8640.0L) - 1.0L/480.0L) + 11.0L/3456.0L) + 7.0L/1440.0L) - 59.0L/7560.0L) - 1.0L/560.0L) + 1.0L/504.0L;
poly_val[1] = x*(x*(x*(x*(x*(x*(x*((1.0L/4480.0L)*x - 1.0L/630.0L) - 1.0L/960.0L) + 1.0L/40.0L) - 11.0L/384.0L) - 1.0L/15.0L) + 299.0L/3360.0L) + 8.0L/315.0L) - 1.0L/42.0L;
poly_val[2] = x*(x*(x*(x*(x*(x*(x*(-1.0L/1120.0L*x + 1.0L/180.0L) + 1.0L/90.0L) - 13.0L/120.0L) + 13.0L/288.0L) + 169.0L/360.0L) - 773.0L/1680.0L) - 1.0L/5.0L) + 1.0L/7.0L;
poly_val[3] = x*(x*(x*(x*(x*(x*(x*((1.0L/480.0L)*x - 1.0L/90.0L) - 7.0L/180.0L) + 29.0L/120.0L) + 11.0L/96.0L) - 61.0L/45.0L) + 161.0L/360.0L) + 8.0L/5.0L) - 2.0L/3.0L;
poly_val[4] = x*(x*(x*(x*(x*(x*(x*(-1.0L/320.0L*x + 1.0L/72.0L) + 7.0L/96.0L) - 5.0L/16.0L) - 91.0L/192.0L) + 91.0L/48.0L) + 41.0L/48.0L) - 205.0L/72.0L) - 1.0L/5.0L;
poly_val[5] = x*(x*(x*(x*(x*(x*(x*((1.0L/320.0L)*x - 1.0L/90.0L) - 119.0L/1440.0L) + 29.0L/120.0L) + 389.0L/576.0L) - 61.0L/45.0L) - 449.0L/240.0L) + 8.0L/5.0L) + 1;
poly_val[6] = x*(x*(x*(x*(x*(x*(x*(-1.0L/480.0L*x + 1.0L/180.0L) + 7.0L/120.0L) - 13.0L/120.0L) - 143.0L/288.0L) + 169.0L/360.0L) + 917.0L/720.0L) - 1.0L/5.0L) - 1.0L/3.0L;
poly_val[7] = x*(x*(x*(x*(x*(x*(x*((1.0L/1120.0L)*x - 1.0L/630.0L) - 1.0L/40.0L) + 1.0L/40.0L) + 19.0L/96.0L) - 1.0L/15.0L) - 331.0L/840.0L) + 8.0L/315.0L) + 2.0L/21.0L;
poly_val[8] = x*(x*(x*(x*(x*(x*(x*(-1.0L/4480.0L*x + 1.0L/5040.0L) + 17.0L/2880.0L) - 1.0L/480.0L) - 47.0L/1152.0L) + 7.0L/1440.0L) + 127.0L/1680.0L) - 1.0L/560.0L) - 1.0L/56.0L;
poly_val[9] = pow(x, 2)*(pow(x, 2)*(pow(x, 2)*((1.0L/40320.0L)*pow(x, 2) - 1.0L/1728.0L) + 13.0L/3456.0L) - 41.0L/6048.0L) + 1.0L/630.0L;
break;
case 2:
poly_val[0] = x*(x*(x*(x*(x*(x*(-1.0L/5040.0L*x + 1.0L/720.0L) - 1.0L/1440.0L) - 1.0L/96.0L) + 11.0L/864.0L) + 7.0L/480.0L) - 59.0L/3780.0L) - 1.0L/560.0L;
poly_val[1] = x*(x*(x*(x*(x*(x*((1.0L/560.0L)*x - 1.0L/90.0L) - 1.0L/160.0L) + 1.0L/8.0L) - 11.0L/96.0L) - 1.0L/5.0L) + 299.0L/1680.0L) + 8.0L/315.0L;
poly_val[2] = x*(x*(x*(x*(x*(x*(-1.0L/140.0L*x + 7.0L/180.0L) + 1.0L/15.0L) - 13.0L/24.0L) + 13.0L/72.0L) + 169.0L/120.0L) - 773.0L/840.0L) - 1.0L/5.0L;
poly_val[3] = x*(x*(x*(x*(x*(x*((1.0L/60.0L)*x - 7.0L/90.0L) - 7.0L/30.0L) + 29.0L/24.0L) + 11.0L/24.0L) - 61.0L/15.0L) + 161.0L/180.0L) + 8.0L/5.0L;
poly_val[4] = x*(x*(x*(x*(x*(x*(-1.0L/40.0L*x + 7.0L/72.0L) + 7.0L/16.0L) - 25.0L/16.0L) - 91.0L/48.0L) + 91.0L/16.0L) + 41.0L/24.0L) - 205.0L/72.0L;
poly_val[5] = x*(x*(x*(x*(x*(x*((1.0L/40.0L)*x - 7.0L/90.0L) - 119.0L/240.0L) + 29.0L/24.0L) + 389.0L/144.0L) - 61.0L/15.0L) - 449.0L/120.0L) + 8.0L/5.0L;
poly_val[6] = x*(x*(x*(x*(x*(x*(-1.0L/60.0L*x + 7.0L/180.0L) + 7.0L/20.0L) - 13.0L/24.0L) - 143.0L/72.0L) + 169.0L/120.0L) + 917.0L/360.0L) - 1.0L/5.0L;
poly_val[7] = x*(x*(x*(x*(x*(x*((1.0L/140.0L)*x - 1.0L/90.0L) - 3.0L/20.0L) + 1.0L/8.0L) + 19.0L/24.0L) - 1.0L/5.0L) - 331.0L/420.0L) + 8.0L/315.0L;
poly_val[8] = x*(x*(x*(x*(x*(x*(-1.0L/560.0L*x + 1.0L/720.0L) + 17.0L/480.0L) - 1.0L/96.0L) - 47.0L/288.0L) + 7.0L/480.0L) + 127.0L/840.0L) - 1.0L/560.0L;
poly_val[9] = x*(pow(x, 2)*(pow(x, 2)*((1.0L/5040.0L)*pow(x, 2) - 1.0L/288.0L) + 13.0L/864.0L) - 41.0L/3024.0L);
break;
}
}
void beta_Lagrange_n5(int deriv, double x, double *poly_val) {
switch(deriv)
{
case 0:
poly_val[0] = x*(x*(x*(x*(x*(x*(x*(x*(pow(x, 2)*(-1.0L/39916800.0L*x + 1.0L/3628800.0L) - 1.0L/120960.0L) + 19.0L/1209600.0L) + 13.0L/172800.0L) - 67.0L/362880.0L) - 41.0L/181440.0L) + 13.0L/21600.0L) + 1.0L/6300.0L) - 1.0L/2310.0L);
poly_val[1] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/3628800.0L)*x - 1.0L/362880.0L) - 1.0L/241920.0L) + 13.0L/120960.0L) - 179.0L/1209600.0L) - 19.0L/17280.0L) + 1663.0L/725760.0L) + 1261.0L/362880.0L) - 2447.0L/302400.0L) - 5.0L/2016.0L) + 1.0L/168.0L);
poly_val[2] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/725760.0L*x + 1.0L/80640.0L) + 1.0L/25920.0L) - 23.0L/40320.0L) + 73.0L/241920.0L) + 29.0L/3840.0L) - 4399.0L/362880.0L) - 541.0L/20160.0L) + 667.0L/12960.0L) + 5.0L/252.0L) - 5.0L/126.0L);
poly_val[3] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/241920.0L)*x - 1.0L/30240.0L) - 13.0L/80640.0L) + 17.0L/10080.0L) + 23.0L/26880.0L) - 13.0L/480.0L) + 5459.0L/241920.0L) + 4369.0L/30240.0L) - 4069.0L/20160.0L) - 5.0L/42.0L) + 5.0L/28.0L);
poly_val[4] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/120960.0L*x + 1.0L/17280.0L) + 1.0L/2520.0L) - 1.0L/320.0L) - 43.0L/8064.0L) + 323.0L/5760.0L) + 431.0L/60480.0L) - 1669.0L/4320.0L) + 1069.0L/5040.0L) + 5.0L/6.0L) - 5.0L/7.0L);
poly_val[5] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/86400.0L)*x - 1.0L/14400.0L) - 11.0L/17280.0L) + 11.0L/2880.0L) + 341.0L/28800.0L) - 341.0L/4800.0L) - 1529.0L/17280.0L) + 1529.0L/2880.0L) + 5269.0L/21600.0L) - 5269.0L/3600.0L) - 1.0L/6.0L) + 1;
poly_val[6] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/86400.0L*x + 1.0L/17280.0L) + 1.0L/1440.0L) - 1.0L/320.0L) - 431.0L/28800.0L) + 323.0L/5760.0L) + 1249.0L/8640.0L) - 1669.0L/4320.0L) - 2269.0L/3600.0L) + 5.0L/6.0L) + 1);
poly_val[7] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/120960.0L)*x - 1.0L/30240.0L) - 1.0L/1920.0L) + 17.0L/10080.0L) + 53.0L/4480.0L) - 13.0L/480.0L) - 14197.0L/120960.0L) + 4369.0L/30240.0L) + 667.0L/1440.0L) - 5.0L/42.0L) - 5.0L/14.0L);
poly_val[8] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/241920.0L*x + 1.0L/80640.0L) + 1.0L/3780.0L) - 23.0L/40320.0L) - 479.0L/80640.0L) + 29.0L/3840.0L) + 6563.0L/120960.0L) - 541.0L/20160.0L) - 5069.0L/30240.0L) + 5.0L/252.0L) + 5.0L/42.0L);
poly_val[9] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/725760.0L)*x - 1.0L/362880.0L) - 1.0L/11520.0L) + 13.0L/120960.0L) + 89.0L/48384.0L) - 19.0L/17280.0L) - 10837.0L/725760.0L) + 1261.0L/362880.0L) + 371.0L/8640.0L) - 5.0L/2016.0L) - 5.0L/168.0L);
poly_val[10] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/3628800.0L*x + 1.0L/3628800.0L) + 1.0L/60480.0L) - 1.0L/120960.0L) - 391.0L/1209600.0L) + 13.0L/172800.0L) + 901.0L/362880.0L) - 41.0L/181440.0L) - 1049.0L/151200.0L) + 1.0L/6300.0L) + 1.0L/210.0L);
poly_val[11] = x*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*((1.0L/39916800.0L)*pow(x, 2) - 1.0L/725760.0L) + 31.0L/1209600.0L) - 139.0L/725760.0L) + 479.0L/907200.0L) - 1.0L/2772.0L);
break;
case 1:
poly_val[0] = x*(x*(x*(x*(x*(x*(x*(pow(x, 2)*(-1.0L/3628800.0L*x + 1.0L/362880.0L) - 1.0L/15120.0L) + 19.0L/172800.0L) + 13.0L/28800.0L) - 67.0L/72576.0L) - 41.0L/45360.0L) + 13.0L/7200.0L) + 1.0L/3150.0L) - 1.0L/2310.0L;
poly_val[1] = x*(x*(x*(x*(x*(x*(x*(x*(x*((11.0L/3628800.0L)*x - 1.0L/36288.0L) - 1.0L/26880.0L) + 13.0L/15120.0L) - 179.0L/172800.0L) - 19.0L/2880.0L) + 1663.0L/145152.0L) + 1261.0L/90720.0L) - 2447.0L/100800.0L) - 5.0L/1008.0L) + 1.0L/168.0L;
poly_val[2] = x*(x*(x*(x*(x*(x*(x*(x*(x*(-11.0L/725760.0L*x + 1.0L/8064.0L) + 1.0L/2880.0L) - 23.0L/5040.0L) + 73.0L/34560.0L) + 29.0L/640.0L) - 4399.0L/72576.0L) - 541.0L/5040.0L) + 667.0L/4320.0L) + 5.0L/126.0L) - 5.0L/126.0L;
poly_val[3] = x*(x*(x*(x*(x*(x*(x*(x*(x*((11.0L/241920.0L)*x - 1.0L/3024.0L) - 13.0L/8960.0L) + 17.0L/1260.0L) + 23.0L/3840.0L) - 13.0L/80.0L) + 5459.0L/48384.0L) + 4369.0L/7560.0L) - 4069.0L/6720.0L) - 5.0L/21.0L) + 5.0L/28.0L;
poly_val[4] = x*(x*(x*(x*(x*(x*(x*(x*(x*(-11.0L/120960.0L*x + 1.0L/1728.0L) + 1.0L/280.0L) - 1.0L/40.0L) - 43.0L/1152.0L) + 323.0L/960.0L) + 431.0L/12096.0L) - 1669.0L/1080.0L) + 1069.0L/1680.0L) + 5.0L/3.0L) - 5.0L/7.0L;
poly_val[5] = x*(x*(x*(x*(x*(x*(x*(x*(x*((11.0L/86400.0L)*x - 1.0L/1440.0L) - 11.0L/1920.0L) + 11.0L/360.0L) + 2387.0L/28800.0L) - 341.0L/800.0L) - 1529.0L/3456.0L) + 1529.0L/720.0L) + 5269.0L/7200.0L) - 5269.0L/1800.0L) - 1.0L/6.0L;
poly_val[6] = x*(x*(x*(x*(x*(x*(x*(x*(x*(-11.0L/86400.0L*x + 1.0L/1728.0L) + 1.0L/160.0L) - 1.0L/40.0L) - 3017.0L/28800.0L) + 323.0L/960.0L) + 1249.0L/1728.0L) - 1669.0L/1080.0L) - 2269.0L/1200.0L) + 5.0L/3.0L) + 1;
poly_val[7] = x*(x*(x*(x*(x*(x*(x*(x*(x*((11.0L/120960.0L)*x - 1.0L/3024.0L) - 3.0L/640.0L) + 17.0L/1260.0L) + 53.0L/640.0L) - 13.0L/80.0L) - 14197.0L/24192.0L) + 4369.0L/7560.0L) + 667.0L/480.0L) - 5.0L/21.0L) - 5.0L/14.0L;
poly_val[8] = x*(x*(x*(x*(x*(x*(x*(x*(x*(-11.0L/241920.0L*x + 1.0L/8064.0L) + 1.0L/420.0L) - 23.0L/5040.0L) - 479.0L/11520.0L) + 29.0L/640.0L) + 6563.0L/24192.0L) - 541.0L/5040.0L) - 5069.0L/10080.0L) + 5.0L/126.0L) + 5.0L/42.0L;
poly_val[9] = x*(x*(x*(x*(x*(x*(x*(x*(x*((11.0L/725760.0L)*x - 1.0L/36288.0L) - 1.0L/1280.0L) + 13.0L/15120.0L) + 89.0L/6912.0L) - 19.0L/2880.0L) - 10837.0L/145152.0L) + 1261.0L/90720.0L) + 371.0L/2880.0L) - 5.0L/1008.0L) - 5.0L/168.0L;
poly_val[10] = x*(x*(x*(x*(x*(x*(x*(x*(x*(-11.0L/3628800.0L*x + 1.0L/362880.0L) + 1.0L/6720.0L) - 1.0L/15120.0L) - 391.0L/172800.0L) + 13.0L/28800.0L) + 901.0L/72576.0L) - 41.0L/45360.0L) - 1049.0L/50400.0L) + 1.0L/3150.0L) + 1.0L/210.0L;
poly_val[11] = pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*((1.0L/3628800.0L)*pow(x, 2) - 1.0L/80640.0L) + 31.0L/172800.0L) - 139.0L/145152.0L) + 479.0L/302400.0L) - 1.0L/2772.0L;
break;
case 2:
poly_val[0] = x*(x*(x*(x*(x*(x*(pow(x, 2)*(-1.0L/362880.0L*x + 1.0L/40320.0L) - 1.0L/2160.0L) + 19.0L/28800.0L) + 13.0L/5760.0L) - 67.0L/18144.0L) - 41.0L/15120.0L) + 13.0L/3600.0L) + 1.0L/3150.0L;
poly_val[1] = x*(x*(x*(x*(x*(x*(x*(x*((11.0L/362880.0L)*x - 1.0L/4032.0L) - 1.0L/3360.0L) + 13.0L/2160.0L) - 179.0L/28800.0L) - 19.0L/576.0L) + 1663.0L/36288.0L) + 1261.0L/30240.0L) - 2447.0L/50400.0L) - 5.0L/1008.0L;
poly_val[2] = x*(x*(x*(x*(x*(x*(x*(x*(-11.0L/72576.0L*x + 1.0L/896.0L) + 1.0L/360.0L) - 23.0L/720.0L) + 73.0L/5760.0L) + 29.0L/128.0L) - 4399.0L/18144.0L) - 541.0L/1680.0L) + 667.0L/2160.0L) + 5.0L/126.0L;
poly_val[3] = x*(x*(x*(x*(x*(x*(x*(x*((11.0L/24192.0L)*x - 1.0L/336.0L) - 13.0L/1120.0L) + 17.0L/180.0L) + 23.0L/640.0L) - 13.0L/16.0L) + 5459.0L/12096.0L) + 4369.0L/2520.0L) - 4069.0L/3360.0L) - 5.0L/21.0L;
poly_val[4] = x*(x*(x*(x*(x*(x*(x*(x*(-11.0L/12096.0L*x + 1.0L/192.0L) + 1.0L/35.0L) - 7.0L/40.0L) - 43.0L/192.0L) + 323.0L/192.0L) + 431.0L/3024.0L) - 1669.0L/360.0L) + 1069.0L/840.0L) + 5.0L/3.0L;
poly_val[5] = x*(x*(x*(x*(x*(x*(x*(x*((11.0L/8640.0L)*x - 1.0L/160.0L) - 11.0L/240.0L) + 77.0L/360.0L) + 2387.0L/4800.0L) - 341.0L/160.0L) - 1529.0L/864.0L) + 1529.0L/240.0L) + 5269.0L/3600.0L) - 5269.0L/1800.0L;
poly_val[6] = x*(x*(x*(x*(x*(x*(x*(x*(-11.0L/8640.0L*x + 1.0L/192.0L) + 1.0L/20.0L) - 7.0L/40.0L) - 3017.0L/4800.0L) + 323.0L/192.0L) + 1249.0L/432.0L) - 1669.0L/360.0L) - 2269.0L/600.0L) + 5.0L/3.0L;
poly_val[7] = x*(x*(x*(x*(x*(x*(x*(x*((11.0L/12096.0L)*x - 1.0L/336.0L) - 3.0L/80.0L) + 17.0L/180.0L) + 159.0L/320.0L) - 13.0L/16.0L) - 14197.0L/6048.0L) + 4369.0L/2520.0L) + 667.0L/240.0L) - 5.0L/21.0L;
poly_val[8] = x*(x*(x*(x*(x*(x*(x*(x*(-11.0L/24192.0L*x + 1.0L/896.0L) + 2.0L/105.0L) - 23.0L/720.0L) - 479.0L/1920.0L) + 29.0L/128.0L) + 6563.0L/6048.0L) - 541.0L/1680.0L) - 5069.0L/5040.0L) + 5.0L/126.0L;
poly_val[9] = x*(x*(x*(x*(x*(x*(x*(x*((11.0L/72576.0L)*x - 1.0L/4032.0L) - 1.0L/160.0L) + 13.0L/2160.0L) + 89.0L/1152.0L) - 19.0L/576.0L) - 10837.0L/36288.0L) + 1261.0L/30240.0L) + 371.0L/1440.0L) - 5.0L/1008.0L;
poly_val[10] = x*(x*(x*(x*(x*(x*(x*(x*(-11.0L/362880.0L*x + 1.0L/40320.0L) + 1.0L/840.0L) - 1.0L/2160.0L) - 391.0L/28800.0L) + 13.0L/5760.0L) + 901.0L/18144.0L) - 41.0L/15120.0L) - 1049.0L/25200.0L) + 1.0L/3150.0L;
poly_val[11] = x*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*((1.0L/362880.0L)*pow(x, 2) - 1.0L/10080.0L) + 31.0L/28800.0L) - 139.0L/36288.0L) + 479.0L/151200.0L);
break;
}
}
void beta_Lagrange_n6(int deriv, double x, double *poly_val) {
switch(deriv)
{
case 0:
poly_val[0] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/6227020800.0L*x + 1.0L/479001600.0L) + 1.0L/479001600.0L) - 1.0L/8709120.0L) + 1.0L/4838400.0L) + 31.0L/14515200.0L) - 247.0L/43545600.0L) - 139.0L/8709120.0L) + 1049.0L/21772800.0L) + 479.0L/10886400.0L) - 2791.0L/19958400.0L) - 1.0L/33264.0L) + 1.0L/10296.0L);
poly_val[1] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/479001600.0L)*x - 1.0L/39916800.0L) - 31.0L/479001600.0L) + 1.0L/604800.0L) - 29.0L/14515200.0L) - 41.0L/1209600.0L) + 3337.0L/43545600.0L) + 121.0L/453600.0L) - 3893.0L/5443200.0L) - 19.0L/25200.0L) + 7171.0L/3326400.0L) + 1.0L/1925.0L) - 1.0L/660.0L);
poly_val[2] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/79833600.0L*x + 1.0L/7257600.0L) + 47.0L/79833600.0L) - 1.0L/96768.0L) + 1.0L/268800.0L) + 601.0L/2419200.0L) - 3169.0L/7257600.0L) - 625.0L/290304.0L) + 8891.0L/1814400.0L) + 643.0L/100800.0L) - 8777.0L/554400.0L) - 1.0L/224.0L) + 1.0L/88.0L);
poly_val[3] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/21772800.0L)*x - 1.0L/2177280.0L) - 61.0L/21772800.0L) + 41.0L/1088640.0L) + 181.0L/7257600.0L) - 151.0L/145152.0L) + 23477.0L/21772800.0L) + 3011.0L/272160.0L) - 53293.0L/2721600.0L) - 4969.0L/136080.0L) + 33583.0L/453600.0L) + 5.0L/189.0L) - 1.0L/18.0L);
poly_val[4] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/8709120.0L*x + 1.0L/967680.0L) + 73.0L/8709120.0L) - 29.0L/322560.0L) - 479.0L/2903040.0L) + 59.0L/21504.0L) - 3317.0L/8709120.0L) - 33853.0L/967680.0L) + 156529.0L/4354560.0L) + 4469.0L/26880.0L) - 29483.0L/120960.0L) - 15.0L/112.0L) + 5.0L/24.0L);
poly_val[5] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/4838400.0L)*x - 1.0L/604800.0L) - 83.0L/4838400.0L) + 1.0L/6720.0L) + 761.0L/1612800.0L) - 971.0L/201600.0L) - 21169.0L/4838400.0L) + 1039.0L/15120.0L) - 4523.0L/604800.0L) - 1769.0L/4200.0L) + 8783.0L/33600.0L) + 6.0L/7.0L) - 3.0L/4.0L);
poly_val[6] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/3628800.0L*x + 1.0L/518400.0L) + 13.0L/518400.0L) - 91.0L/518400.0L) - 143.0L/172800.0L) + 1001.0L/172800.0L) + 44473.0L/3628800.0L) - 44473.0L/518400.0L) - 5291.0L/64800.0L) + 37037.0L/64800.0L) + 767.0L/3600.0L) - 5369.0L/3600.0L) - 1.0L/7.0L) + 1;
poly_val[7] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/3628800.0L)*x - 1.0L/604800.0L) - 97.0L/3628800.0L) + 1.0L/6720.0L) + 1181.0L/1209600.0L) - 971.0L/201600.0L) - 61951.0L/3628800.0L) + 1039.0L/15120.0L) + 68207.0L/453600.0L) - 1769.0L/4200.0L) - 15983.0L/25200.0L) + 6.0L/7.0L) + 1);
poly_val[8] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/4838400.0L*x + 1.0L/967680.0L) + 101.0L/4838400.0L) - 29.0L/322560.0L) - 1291.0L/1612800.0L) + 59.0L/21504.0L) + 71023.0L/4838400.0L) - 33853.0L/967680.0L) - 317413.0L/2419200.0L) + 4469.0L/26880.0L) + 33083.0L/67200.0L) - 15.0L/112.0L) - 3.0L/8.0L);
poly_val[9] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/8709120.0L)*x - 1.0L/2177280.0L) - 103.0L/8709120.0L) + 41.0L/1088640.0L) + 443.0L/967680.0L) - 151.0L/145152.0L) - 71653.0L/8709120.0L) + 3011.0L/272160.0L) + 73169.0L/1088640.0L) - 4969.0L/136080.0L) - 35983.0L/181440.0L) + 5.0L/189.0L) + 5.0L/36.0L);
poly_val[10] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/21772800.0L*x + 1.0L/7257600.0L) + 103.0L/21772800.0L) - 1.0L/96768.0L) - 1301.0L/7257600.0L) + 601.0L/2419200.0L) + 66109.0L/21772800.0L) - 625.0L/290304.0L) - 120949.0L/5443200.0L) + 643.0L/100800.0L) + 9227.0L/151200.0L) - 1.0L/224.0L) - 1.0L/24.0L);
poly_val[11] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/79833600.0L)*x - 1.0L/39916800.0L) - 101.0L/79833600.0L) + 1.0L/604800.0L) + 37.0L/806400.0L) - 41.0L/1209600.0L) - 5273.0L/7257600.0L) + 121.0L/453600.0L) + 4577.0L/907200.0L) - 19.0L/25200.0L) - 7459.0L/554400.0L) + 1.0L/1925.0L) + 1.0L/110.0L);
poly_val[12] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/479001600.0L*x + 1.0L/479001600.0L) + 97.0L/479001600.0L) - 1.0L/8709120.0L) - 101.0L/14515200.0L) + 31.0L/14515200.0L) + 4601.0L/43545600.0L) - 139.0L/8709120.0L) - 15553.0L/21772800.0L) + 479.0L/10886400.0L) + 37483.0L/19958400.0L) - 1.0L/33264.0L) - 1.0L/792.0L);
poly_val[13] = x*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*((1.0L/6227020800.0L)*pow(x, 2) - 1.0L/68428800.0L) + 1.0L/2073600.0L) - 311.0L/43545600.0L) + 37.0L/777600.0L) - 59.0L/475200.0L) + 1.0L/12012.0L);
break;
case 1:
poly_val[0] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/479001600.0L*x + 1.0L/39916800.0L) + 1.0L/43545600.0L) - 1.0L/870912.0L) + 1.0L/537600.0L) + 31.0L/1814400.0L) - 247.0L/6220800.0L) - 139.0L/1451520.0L) + 1049.0L/4354560.0L) + 479.0L/2721600.0L) - 2791.0L/6652800.0L) - 1.0L/16632.0L) + 1.0L/10296.0L;
poly_val[1] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((13.0L/479001600.0L)*x - 1.0L/3326400.0L) - 31.0L/43545600.0L) + 1.0L/60480.0L) - 29.0L/1612800.0L) - 41.0L/151200.0L) + 3337.0L/6220800.0L) + 121.0L/75600.0L) - 3893.0L/1088640.0L) - 19.0L/6300.0L) + 7171.0L/1108800.0L) + 2.0L/1925.0L) - 1.0L/660.0L;
poly_val[2] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-13.0L/79833600.0L*x + 1.0L/604800.0L) + 47.0L/7257600.0L) - 5.0L/48384.0L) + 3.0L/89600.0L) + 601.0L/302400.0L) - 3169.0L/1036800.0L) - 625.0L/48384.0L) + 8891.0L/362880.0L) + 643.0L/25200.0L) - 8777.0L/184800.0L) - 1.0L/112.0L) + 1.0L/88.0L;
poly_val[3] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((13.0L/21772800.0L)*x - 1.0L/181440.0L) - 671.0L/21772800.0L) + 41.0L/108864.0L) + 181.0L/806400.0L) - 151.0L/18144.0L) + 23477.0L/3110400.0L) + 3011.0L/45360.0L) - 53293.0L/544320.0L) - 4969.0L/34020.0L) + 33583.0L/151200.0L) + 10.0L/189.0L) - 1.0L/18.0L;
poly_val[4] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-13.0L/8709120.0L*x + 1.0L/80640.0L) + 803.0L/8709120.0L) - 29.0L/32256.0L) - 479.0L/322560.0L) + 59.0L/2688.0L) - 3317.0L/1244160.0L) - 33853.0L/161280.0L) + 156529.0L/870912.0L) + 4469.0L/6720.0L) - 29483.0L/40320.0L) - 15.0L/56.0L) + 5.0L/24.0L;
poly_val[5] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((13.0L/4838400.0L)*x - 1.0L/50400.0L) - 913.0L/4838400.0L) + 1.0L/672.0L) + 761.0L/179200.0L) - 971.0L/25200.0L) - 21169.0L/691200.0L) + 1039.0L/2520.0L) - 4523.0L/120960.0L) - 1769.0L/1050.0L) + 8783.0L/11200.0L) + 12.0L/7.0L) - 3.0L/4.0L;
poly_val[6] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-13.0L/3628800.0L*x + 1.0L/43200.0L) + 143.0L/518400.0L) - 91.0L/51840.0L) - 143.0L/19200.0L) + 1001.0L/21600.0L) + 44473.0L/518400.0L) - 44473.0L/86400.0L) - 5291.0L/12960.0L) + 37037.0L/16200.0L) + 767.0L/1200.0L) - 5369.0L/1800.0L) - 1.0L/7.0L;
poly_val[7] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((13.0L/3628800.0L)*x - 1.0L/50400.0L) - 1067.0L/3628800.0L) + 1.0L/672.0L) + 1181.0L/134400.0L) - 971.0L/25200.0L) - 61951.0L/518400.0L) + 1039.0L/2520.0L) + 68207.0L/90720.0L) - 1769.0L/1050.0L) - 15983.0L/8400.0L) + 12.0L/7.0L) + 1;
poly_val[8] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-13.0L/4838400.0L*x + 1.0L/80640.0L) + 1111.0L/4838400.0L) - 29.0L/32256.0L) - 1291.0L/179200.0L) + 59.0L/2688.0L) + 71023.0L/691200.0L) - 33853.0L/161280.0L) - 317413.0L/483840.0L) + 4469.0L/6720.0L) + 33083.0L/22400.0L) - 15.0L/56.0L) - 3.0L/8.0L;
poly_val[9] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((13.0L/8709120.0L)*x - 1.0L/181440.0L) - 1133.0L/8709120.0L) + 41.0L/108864.0L) + 443.0L/107520.0L) - 151.0L/18144.0L) - 71653.0L/1244160.0L) + 3011.0L/45360.0L) + 73169.0L/217728.0L) - 4969.0L/34020.0L) - 35983.0L/60480.0L) + 10.0L/189.0L) + 5.0L/36.0L;
poly_val[10] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-13.0L/21772800.0L*x + 1.0L/604800.0L) + 1133.0L/21772800.0L) - 5.0L/48384.0L) - 1301.0L/806400.0L) + 601.0L/302400.0L) + 66109.0L/3110400.0L) - 625.0L/48384.0L) - 120949.0L/1088640.0L) + 643.0L/25200.0L) + 9227.0L/50400.0L) - 1.0L/112.0L) - 1.0L/24.0L;
poly_val[11] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((13.0L/79833600.0L)*x - 1.0L/3326400.0L) - 101.0L/7257600.0L) + 1.0L/60480.0L) + 37.0L/89600.0L) - 41.0L/151200.0L) - 5273.0L/1036800.0L) + 121.0L/75600.0L) + 4577.0L/181440.0L) - 19.0L/6300.0L) - 7459.0L/184800.0L) + 2.0L/1925.0L) + 1.0L/110.0L;
poly_val[12] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-13.0L/479001600.0L*x + 1.0L/39916800.0L) + 97.0L/43545600.0L) - 1.0L/870912.0L) - 101.0L/1612800.0L) + 31.0L/1814400.0L) + 4601.0L/6220800.0L) - 139.0L/1451520.0L) - 15553.0L/4354560.0L) + 479.0L/2721600.0L) + 37483.0L/6652800.0L) - 1.0L/16632.0L) - 1.0L/792.0L;
poly_val[13] = pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*((1.0L/479001600.0L)*pow(x, 2) - 1.0L/6220800.0L) + 1.0L/230400.0L) - 311.0L/6220800.0L) + 37.0L/155520.0L) - 59.0L/158400.0L) + 1.0L/12012.0L;
break;
case 2:
poly_val[0] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/39916800.0L*x + 1.0L/3628800.0L) + 1.0L/4354560.0L) - 1.0L/96768.0L) + 1.0L/67200.0L) + 31.0L/259200.0L) - 247.0L/1036800.0L) - 139.0L/290304.0L) + 1049.0L/1088640.0L) + 479.0L/907200.0L) - 2791.0L/3326400.0L) - 1.0L/16632.0L;
poly_val[1] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((13.0L/39916800.0L)*x - 1.0L/302400.0L) - 31.0L/4354560.0L) + 1.0L/6720.0L) - 29.0L/201600.0L) - 41.0L/21600.0L) + 3337.0L/1036800.0L) + 121.0L/15120.0L) - 3893.0L/272160.0L) - 19.0L/2100.0L) + 7171.0L/554400.0L) + 2.0L/1925.0L;
poly_val[2] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-13.0L/6652800.0L*x + 11.0L/604800.0L) + 47.0L/725760.0L) - 5.0L/5376.0L) + 3.0L/11200.0L) + 601.0L/43200.0L) - 3169.0L/172800.0L) - 3125.0L/48384.0L) + 8891.0L/90720.0L) + 643.0L/8400.0L) - 8777.0L/92400.0L) - 1.0L/112.0L;
poly_val[3] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((13.0L/1814400.0L)*x - 11.0L/181440.0L) - 671.0L/2177280.0L) + 41.0L/12096.0L) + 181.0L/100800.0L) - 151.0L/2592.0L) + 23477.0L/518400.0L) + 3011.0L/9072.0L) - 53293.0L/136080.0L) - 4969.0L/11340.0L) + 33583.0L/75600.0L) + 10.0L/189.0L;
poly_val[4] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-13.0L/725760.0L*x + 11.0L/80640.0L) + 803.0L/870912.0L) - 29.0L/3584.0L) - 479.0L/40320.0L) + 59.0L/384.0L) - 3317.0L/207360.0L) - 33853.0L/32256.0L) + 156529.0L/217728.0L) + 4469.0L/2240.0L) - 29483.0L/20160.0L) - 15.0L/56.0L;
poly_val[5] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((13.0L/403200.0L)*x - 11.0L/50400.0L) - 913.0L/483840.0L) + 3.0L/224.0L) + 761.0L/22400.0L) - 971.0L/3600.0L) - 21169.0L/115200.0L) + 1039.0L/504.0L) - 4523.0L/30240.0L) - 1769.0L/350.0L) + 8783.0L/5600.0L) + 12.0L/7.0L;
poly_val[6] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-13.0L/302400.0L*x + 11.0L/43200.0L) + 143.0L/51840.0L) - 91.0L/5760.0L) - 143.0L/2400.0L) + 7007.0L/21600.0L) + 44473.0L/86400.0L) - 44473.0L/17280.0L) - 5291.0L/3240.0L) + 37037.0L/5400.0L) + 767.0L/600.0L) - 5369.0L/1800.0L;
poly_val[7] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((13.0L/302400.0L)*x - 11.0L/50400.0L) - 1067.0L/362880.0L) + 3.0L/224.0L) + 1181.0L/16800.0L) - 971.0L/3600.0L) - 61951.0L/86400.0L) + 1039.0L/504.0L) + 68207.0L/22680.0L) - 1769.0L/350.0L) - 15983.0L/4200.0L) + 12.0L/7.0L;
poly_val[8] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-13.0L/403200.0L*x + 11.0L/80640.0L) + 1111.0L/483840.0L) - 29.0L/3584.0L) - 1291.0L/22400.0L) + 59.0L/384.0L) + 71023.0L/115200.0L) - 33853.0L/32256.0L) - 317413.0L/120960.0L) + 4469.0L/2240.0L) + 33083.0L/11200.0L) - 15.0L/56.0L;
poly_val[9] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((13.0L/725760.0L)*x - 11.0L/181440.0L) - 1133.0L/870912.0L) + 41.0L/12096.0L) + 443.0L/13440.0L) - 151.0L/2592.0L) - 71653.0L/207360.0L) + 3011.0L/9072.0L) + 73169.0L/54432.0L) - 4969.0L/11340.0L) - 35983.0L/30240.0L) + 10.0L/189.0L;
poly_val[10] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-13.0L/1814400.0L*x + 11.0L/604800.0L) + 1133.0L/2177280.0L) - 5.0L/5376.0L) - 1301.0L/100800.0L) + 601.0L/43200.0L) + 66109.0L/518400.0L) - 3125.0L/48384.0L) - 120949.0L/272160.0L) + 643.0L/8400.0L) + 9227.0L/25200.0L) - 1.0L/112.0L;
poly_val[11] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((13.0L/6652800.0L)*x - 1.0L/302400.0L) - 101.0L/725760.0L) + 1.0L/6720.0L) + 37.0L/11200.0L) - 41.0L/21600.0L) - 5273.0L/172800.0L) + 121.0L/15120.0L) + 4577.0L/45360.0L) - 19.0L/2100.0L) - 7459.0L/92400.0L) + 2.0L/1925.0L;
poly_val[12] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-13.0L/39916800.0L*x + 1.0L/3628800.0L) + 97.0L/4354560.0L) - 1.0L/96768.0L) - 101.0L/201600.0L) + 31.0L/259200.0L) + 4601.0L/1036800.0L) - 139.0L/290304.0L) - 15553.0L/1088640.0L) + 479.0L/907200.0L) + 37483.0L/3326400.0L) - 1.0L/16632.0L;
poly_val[13] = x*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*((1.0L/39916800.0L)*pow(x, 2) - 1.0L/622080.0L) + 1.0L/28800.0L) - 311.0L/1036800.0L) + 37.0L/38880.0L) - 59.0L/79200.0L);
break;
}
}
void beta_Lagrange_n7(int deriv, double x, double *poly_val) {
switch(deriv)
{
case 0:
poly_val[0] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/1307674368000.0L*x + 1.0L/87178291200.0L) + 1.0L/37362124800.0L) - 1.0L/958003200.0L) + 23.0L/14370048000.0L) + 1.0L/29030400.0L) - 173.0L/1828915200.0L) - 311.0L/609638400.0L) + 137.0L/81648000.0L) + 37.0L/10886400.0L) - 2173.0L/179625600.0L) - 59.0L/6652800.0L) + 37133.0L/1135134000.0L) + 1.0L/168168.0L) - 1.0L/45045.0L);
poly_val[1] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/87178291200.0L)*x - 1.0L/6227020800.0L) - 1.0L/1556755200.0L) + 1.0L/59875200.0L) - 1.0L/68428800.0L) - 13.0L/21772800.0L) + 211.0L/152409600.0L) + 101.0L/10886400.0L) - 95.0L/3483648.0L) - 2767.0L/43545600.0L) + 7043.0L/34214400.0L) + 20137.0L/119750400.0L) - 129053.0L/227026800.0L) - 7.0L/61776.0L) + 1.0L/2574.0L);
poly_val[2] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/12454041600.0L*x + 1.0L/958003200.0L) + 1.0L/166053888.0L) - 23.0L/191600640.0L) + 1.0L/958003200.0L) + 139.0L/29030400.0L) - 149.0L/17418240.0L) - 1399.0L/17418240.0L) + 23.0L/113400.0L) + 6271.0L/10886400.0L) - 19787.0L/11975040.0L) - 2077.0L/1330560.0L) + 51043.0L/10810800.0L) + 7.0L/6600.0L) - 7.0L/2145.0L);
poly_val[3] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/2874009600.0L)*x - 1.0L/239500800.0L) - 23.0L/718502400.0L) + 31.0L/59875200.0L) + 151.0L/287400960.0L) - 83.0L/3628800.0L) + 1621.0L/65318400.0L) + 2363.0L/5443200.0L) - 228653.0L/261273600.0L) - 73811.0L/21772800.0L) + 2960071.0L/359251200.0L) + 31957.0L/3326400.0L) - 500287.0L/19958400.0L) - 7.0L/1056.0L) + 7.0L/396.0L);
poly_val[4] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/958003200.0L*x + 1.0L/87091200.0L) + 107.0L/958003200.0L) - 131.0L/87091200.0L) - 3139.0L/958003200.0L) + 6283.0L/87091200.0L) - 1429.0L/87091200.0L) - 135073.0L/87091200.0L) + 11261.0L/5443200.0L) + 157477.0L/10886400.0L) - 1642643.0L/59875200.0L) - 247081.0L/5443200.0L) + 239731.0L/2494800.0L) + 7.0L/216.0L) - 7.0L/99.0L);
poly_val[5] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/435456000.0L)*x - 1.0L/43545600.0L) - 1.0L/3628800.0L) + 17.0L/5443200.0L) + 2371.0L/217728000.0L) - 1153.0L/7257600.0L) - 2663.0L/21772800.0L) + 40987.0L/10886400.0L) - 267829.0L/145152000.0L) - 1819681.0L/43545600.0L) + 1055099.0L/21772800.0L) + 222581.0L/1209600.0L) - 52889.0L/189000.0L) - 7.0L/48.0L) + 7.0L/30.0L);
poly_val[6] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/261273600.0L*x + 1.0L/29030400.0L) + 131.0L/261273600.0L) - 139.0L/29030400.0L) - 6211.0L/261273600.0L) + 2441.0L/9676800.0L) + 17959.0L/37324800.0L) - 184297.0L/29030400.0L) - 1021.0L/326592.0L) + 286397.0L/3628800.0L) - 333059.0L/16329600.0L) - 90281.0L/201600.0L) + 68231.0L/226800.0L) + 7.0L/8.0L) - 7.0L/9.0L);
poly_val[7] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/203212800.0L)*x - 1.0L/25401600.0L) - 1.0L/1451520.0L) + 1.0L/181440.0L) + 533.0L/14515200.0L) - 533.0L/1814400.0L) - 9581.0L/10160640.0L) + 9581.0L/1270080.0L) + 353639.0L/29030400.0L) - 353639.0L/3628800.0L) - 54613.0L/725760.0L) + 54613.0L/90720.0L) + 266681.0L/1411200.0L) - 266681.0L/176400.0L) - 1.0L/8.0L) + 1;
poly_val[8] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/203212800.0L*x + 1.0L/29030400.0L) + 1.0L/1382400.0L) - 139.0L/29030400.0L) - 241.0L/5806080.0L) + 2441.0L/9676800.0L) + 242881.0L/203212800.0L) - 184297.0L/29030400.0L) - 1601.0L/86400.0L) + 286397.0L/3628800.0L) + 279731.0L/1814400.0L) - 90281.0L/201600.0L) - 112331.0L/176400.0L) + 7.0L/8.0L) + 1);
poly_val[9] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/261273600.0L)*x - 1.0L/43545600.0L) - 19.0L/32659200.0L) + 17.0L/5443200.0L) + 4547.0L/130636800.0L) - 1153.0L/7257600.0L) - 68659.0L/65318400.0L) + 40987.0L/10886400.0L) + 4442849.0L/261273600.0L) - 1819681.0L/43545600.0L) - 9281953.0L/65318400.0L) + 222581.0L/1209600.0L) + 116803.0L/226800.0L) - 7.0L/48.0L) - 7.0L/18.0L);
poly_val[10] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/435456000.0L*x + 1.0L/87091200.0L) + 31.0L/87091200.0L) - 131.0L/87091200.0L) - 9427.0L/435456000.0L) + 6283.0L/87091200.0L) + 57173.0L/87091200.0L) - 135073.0L/87091200.0L) - 70337.0L/6804000.0L) + 157477.0L/10886400.0L) + 427361.0L/5443200.0L) - 247081.0L/5443200.0L) - 254431.0L/1134000.0L) + 7.0L/216.0L) + 7.0L/45.0L);
poly_val[11] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/958003200.0L)*x - 1.0L/239500800.0L) - 13.0L/79833600.0L) + 31.0L/59875200.0L) + 4723.0L/479001600.0L) - 83.0L/3628800.0L) - 6347.0L/21772800.0L) + 2363.0L/5443200.0L) + 5017.0L/1161216.0L) - 73811.0L/21772800.0L) - 3535297.0L/119750400.0L) + 31957.0L/3326400.0L) + 522337.0L/6652800.0L) - 7.0L/1056.0L) - 7.0L/132.0L);
poly_val[12] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/2874009600.0L*x + 1.0L/958003200.0L) + 31.0L/574801920.0L) - 23.0L/191600640.0L) - 9187.0L/2874009600.0L) + 139.0L/29030400.0L) + 947.0L/10450944.0L) - 1399.0L/17418240.0L) - 20623.0L/16329600.0L) + 6271.0L/10886400.0L) + 294617.0L/35925120.0L) - 2077.0L/1330560.0L) - 52807.0L/2494800.0L) + 7.0L/6600.0L) + 7.0L/495.0L);
poly_val[13] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/12454041600.0L)*x - 1.0L/6227020800.0L) - 19.0L/1556755200.0L) + 1.0L/59875200.0L) + 67.0L/95800320.0L) - 13.0L/21772800.0L) - 59.0L/3110400.0L) + 101.0L/10886400.0L) + 22159.0L/87091200.0L) - 2767.0L/43545600.0L) - 385381.0L/239500800.0L) + 20137.0L/119750400.0L) + 16591.0L/4054050.0L) - 7.0L/61776.0L) - 7.0L/2574.0L);
poly_val[14] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/87178291200.0L*x + 1.0L/87178291200.0L) + 1.0L/593049600.0L) - 1.0L/958003200.0L) - 89.0L/958003200.0L) + 1.0L/29030400.0L) + 1487.0L/609638400.0L) - 311.0L/609638400.0L) - 29.0L/907200.0L) + 37.0L/10886400.0L) + 11927.0L/59875200.0L) - 59.0L/6652800.0L) - 38033.0L/75675600.0L) + 1.0L/168168.0L) + 1.0L/3003.0L);
poly_val[15] = x*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*((1.0L/1307674368000.0L)*pow(x, 2) - 1.0L/9340531200.0L) + 41.0L/7185024000.0L) - 67.0L/457228800.0L) + 2473.0L/1306368000.0L) - 4201.0L/359251200.0L) + 266681.0L/9081072000.0L) - 1.0L/51480.0L);
break;
case 1:
poly_val[0] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/87178291200.0L*x + 1.0L/6227020800.0L) + 1.0L/2874009600.0L) - 1.0L/79833600.0L) + 23.0L/1306368000.0L) + 1.0L/2903040.0L) - 173.0L/203212800.0L) - 311.0L/76204800.0L) + 137.0L/11664000.0L) + 37.0L/1814400.0L) - 2173.0L/35925120.0L) - 59.0L/1663200.0L) + 37133.0L/378378000.0L) + 1.0L/84084.0L) - 1.0L/45045.0L;
poly_val[1] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/5811886080.0L)*x - 1.0L/444787200.0L) - 1.0L/119750400.0L) + 1.0L/4989600.0L) - 1.0L/6220800.0L) - 13.0L/2177280.0L) + 211.0L/16934400.0L) + 101.0L/1360800.0L) - 95.0L/497664.0L) - 2767.0L/7257600.0L) + 7043.0L/6842880.0L) + 20137.0L/29937600.0L) - 129053.0L/75675600.0L) - 7.0L/30888.0L) + 1.0L/2574.0L;
poly_val[2] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/830269440.0L*x + 1.0L/68428800.0L) + 1.0L/12773376.0L) - 23.0L/15966720.0L) + 1.0L/87091200.0L) + 139.0L/2903040.0L) - 149.0L/1935360.0L) - 1399.0L/2177280.0L) + 23.0L/16200.0L) + 6271.0L/1814400.0L) - 19787.0L/2395008.0L) - 2077.0L/332640.0L) + 51043.0L/3603600.0L) + 7.0L/3300.0L) - 7.0L/2145.0L;
poly_val[3] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/191600640.0L)*x - 1.0L/17107200.0L) - 299.0L/718502400.0L) + 31.0L/4989600.0L) + 151.0L/26127360.0L) - 83.0L/362880.0L) + 1621.0L/7257600.0L) + 2363.0L/680400.0L) - 228653.0L/37324800.0L) - 73811.0L/3628800.0L) + 2960071.0L/71850240.0L) + 31957.0L/831600.0L) - 500287.0L/6652800.0L) - 7.0L/528.0L) + 7.0L/396.0L;
poly_val[4] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/63866880.0L*x + 1.0L/6220800.0L) + 1391.0L/958003200.0L) - 131.0L/7257600.0L) - 3139.0L/87091200.0L) + 6283.0L/8709120.0L) - 1429.0L/9676800.0L) - 135073.0L/10886400.0L) + 11261.0L/777600.0L) + 157477.0L/1814400.0L) - 1642643.0L/11975040.0L) - 247081.0L/1360800.0L) + 239731.0L/831600.0L) + 7.0L/108.0L) - 7.0L/99.0L;
poly_val[5] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/29030400.0L)*x - 1.0L/3110400.0L) - 13.0L/3628800.0L) + 17.0L/453600.0L) + 26081.0L/217728000.0L) - 1153.0L/725760.0L) - 2663.0L/2419200.0L) + 40987.0L/1360800.0L) - 267829.0L/20736000.0L) - 1819681.0L/7257600.0L) + 1055099.0L/4354560.0L) + 222581.0L/302400.0L) - 52889.0L/63000.0L) - 7.0L/24.0L) + 7.0L/30.0L;
poly_val[6] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/17418240.0L*x + 1.0L/2073600.0L) + 1703.0L/261273600.0L) - 139.0L/2419200.0L) - 68321.0L/261273600.0L) + 2441.0L/967680.0L) + 17959.0L/4147200.0L) - 184297.0L/3628800.0L) - 1021.0L/46656.0L) + 286397.0L/604800.0L) - 333059.0L/3265920.0L) - 90281.0L/50400.0L) + 68231.0L/75600.0L) + 7.0L/4.0L) - 7.0L/9.0L;
poly_val[7] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/13547520.0L)*x - 1.0L/1814400.0L) - 13.0L/1451520.0L) + 1.0L/15120.0L) + 5863.0L/14515200.0L) - 533.0L/181440.0L) - 9581.0L/1128960.0L) + 9581.0L/158760.0L) + 353639.0L/4147200.0L) - 353639.0L/604800.0L) - 54613.0L/145152.0L) + 54613.0L/22680.0L) + 266681.0L/470400.0L) - 266681.0L/88200.0L) - 1.0L/8.0L;
poly_val[8] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/13547520.0L*x + 1.0L/2073600.0L) + 13.0L/1382400.0L) - 139.0L/2419200.0L) - 2651.0L/5806080.0L) + 2441.0L/967680.0L) + 242881.0L/22579200.0L) - 184297.0L/3628800.0L) - 11207.0L/86400.0L) + 286397.0L/604800.0L) + 279731.0L/362880.0L) - 90281.0L/50400.0L) - 112331.0L/58800.0L) + 7.0L/4.0L) + 1;
poly_val[9] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/17418240.0L)*x - 1.0L/3110400.0L) - 247.0L/32659200.0L) + 17.0L/453600.0L) + 50017.0L/130636800.0L) - 1153.0L/725760.0L) - 68659.0L/7257600.0L) + 40987.0L/1360800.0L) + 4442849.0L/37324800.0L) - 1819681.0L/7257600.0L) - 9281953.0L/13063680.0L) + 222581.0L/302400.0L) + 116803.0L/75600.0L) - 7.0L/24.0L) - 7.0L/18.0L;
poly_val[10] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/29030400.0L*x + 1.0L/6220800.0L) + 403.0L/87091200.0L) - 131.0L/7257600.0L) - 103697.0L/435456000.0L) + 6283.0L/8709120.0L) + 57173.0L/9676800.0L) - 135073.0L/10886400.0L) - 70337.0L/972000.0L) + 157477.0L/1814400.0L) + 427361.0L/1088640.0L) - 247081.0L/1360800.0L) - 254431.0L/378000.0L) + 7.0L/108.0L) + 7.0L/45.0L;
poly_val[11] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/63866880.0L)*x - 1.0L/17107200.0L) - 169.0L/79833600.0L) + 31.0L/4989600.0L) + 4723.0L/43545600.0L) - 83.0L/362880.0L) - 6347.0L/2419200.0L) + 2363.0L/680400.0L) + 5017.0L/165888.0L) - 73811.0L/3628800.0L) - 3535297.0L/23950080.0L) + 31957.0L/831600.0L) + 522337.0L/2217600.0L) - 7.0L/528.0L) - 7.0L/132.0L;
poly_val[12] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/191600640.0L*x + 1.0L/68428800.0L) + 403.0L/574801920.0L) - 23.0L/15966720.0L) - 9187.0L/261273600.0L) + 139.0L/2903040.0L) + 947.0L/1161216.0L) - 1399.0L/2177280.0L) - 20623.0L/2332800.0L) + 6271.0L/1814400.0L) + 294617.0L/7185024.0L) - 2077.0L/332640.0L) - 52807.0L/831600.0L) + 7.0L/3300.0L) + 7.0L/495.0L;
poly_val[13] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/830269440.0L)*x - 1.0L/444787200.0L) - 19.0L/119750400.0L) + 1.0L/4989600.0L) + 67.0L/8709120.0L) - 13.0L/2177280.0L) - 59.0L/345600.0L) + 101.0L/1360800.0L) + 22159.0L/12441600.0L) - 2767.0L/7257600.0L) - 385381.0L/47900160.0L) + 20137.0L/29937600.0L) + 16591.0L/1351350.0L) - 7.0L/30888.0L) - 7.0L/2574.0L;
poly_val[14] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/5811886080.0L*x + 1.0L/6227020800.0L) + 1.0L/45619200.0L) - 1.0L/79833600.0L) - 89.0L/87091200.0L) + 1.0L/2903040.0L) + 1487.0L/67737600.0L) - 311.0L/76204800.0L) - 29.0L/129600.0L) + 37.0L/1814400.0L) + 11927.0L/11975040.0L) - 59.0L/1663200.0L) - 38033.0L/25225200.0L) + 1.0L/84084.0L) + 1.0L/3003.0L;
poly_val[15] = pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*((1.0L/87178291200.0L)*pow(x, 2) - 1.0L/718502400.0L) + 41.0L/653184000.0L) - 67.0L/50803200.0L) + 2473.0L/186624000.0L) - 4201.0L/71850240.0L) + 266681.0L/3027024000.0L) - 1.0L/51480.0L;
break;
case 2:
poly_val[0] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/6227020800.0L*x + 1.0L/479001600.0L) + 1.0L/239500800.0L) - 1.0L/7257600.0L) + 23.0L/130636800.0L) + 1.0L/322560.0L) - 173.0L/25401600.0L) - 311.0L/10886400.0L) + 137.0L/1944000.0L) + 37.0L/362880.0L) - 2173.0L/8981280.0L) - 59.0L/554400.0L) + 37133.0L/189189000.0L) + 1.0L/84084.0L;
poly_val[1] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/415134720.0L)*x - 1.0L/34214400.0L) - 1.0L/9979200.0L) + 1.0L/453600.0L) - 1.0L/622080.0L) - 13.0L/241920.0L) + 211.0L/2116800.0L) + 101.0L/194400.0L) - 95.0L/82944.0L) - 2767.0L/1451520.0L) + 7043.0L/1710720.0L) + 20137.0L/9979200.0L) - 129053.0L/37837800.0L) - 7.0L/30888.0L;
poly_val[2] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/59304960.0L*x + 13.0L/68428800.0L) + 1.0L/1064448.0L) - 23.0L/1451520.0L) + 1.0L/8709120.0L) + 139.0L/322560.0L) - 149.0L/241920.0L) - 1399.0L/311040.0L) + 23.0L/2700.0L) + 6271.0L/362880.0L) - 19787.0L/598752.0L) - 2077.0L/110880.0L) + 51043.0L/1801800.0L) + 7.0L/3300.0L;
poly_val[3] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/13685760.0L)*x - 13.0L/17107200.0L) - 299.0L/59875200.0L) + 31.0L/453600.0L) + 151.0L/2612736.0L) - 83.0L/40320.0L) + 1621.0L/907200.0L) + 2363.0L/97200.0L) - 228653.0L/6220800.0L) - 73811.0L/725760.0L) + 2960071.0L/17962560.0L) + 31957.0L/277200.0L) - 500287.0L/3326400.0L) - 7.0L/528.0L;
poly_val[4] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/4561920.0L*x + 13.0L/6220800.0L) + 1391.0L/79833600.0L) - 1441.0L/7257600.0L) - 3139.0L/8709120.0L) + 6283.0L/967680.0L) - 1429.0L/1209600.0L) - 135073.0L/1555200.0L) + 11261.0L/129600.0L) + 157477.0L/362880.0L) - 1642643.0L/2993760.0L) - 247081.0L/453600.0L) + 239731.0L/415800.0L) + 7.0L/108.0L;
poly_val[5] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/2073600.0L)*x - 13.0L/3110400.0L) - 13.0L/302400.0L) + 187.0L/453600.0L) + 26081.0L/21772800.0L) - 1153.0L/80640.0L) - 2663.0L/302400.0L) + 40987.0L/194400.0L) - 267829.0L/3456000.0L) - 1819681.0L/1451520.0L) + 1055099.0L/1088640.0L) + 222581.0L/100800.0L) - 52889.0L/31500.0L) - 7.0L/24.0L;
poly_val[6] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/1244160.0L*x + 13.0L/2073600.0L) + 1703.0L/21772800.0L) - 1529.0L/2419200.0L) - 68321.0L/26127360.0L) + 2441.0L/107520.0L) + 17959.0L/518400.0L) - 184297.0L/518400.0L) - 1021.0L/7776.0L) + 286397.0L/120960.0L) - 333059.0L/816480.0L) - 90281.0L/16800.0L) + 68231.0L/37800.0L) + 7.0L/4.0L;
poly_val[7] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/967680.0L)*x - 13.0L/1814400.0L) - 13.0L/120960.0L) + 11.0L/15120.0L) + 5863.0L/1451520.0L) - 533.0L/20160.0L) - 9581.0L/141120.0L) + 9581.0L/22680.0L) + 353639.0L/691200.0L) - 353639.0L/120960.0L) - 54613.0L/36288.0L) + 54613.0L/7560.0L) + 266681.0L/235200.0L) - 266681.0L/88200.0L;
poly_val[8] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/967680.0L*x + 13.0L/2073600.0L) + 13.0L/115200.0L) - 1529.0L/2419200.0L) - 2651.0L/580608.0L) + 2441.0L/107520.0L) + 242881.0L/2822400.0L) - 184297.0L/518400.0L) - 11207.0L/14400.0L) + 286397.0L/120960.0L) + 279731.0L/90720.0L) - 90281.0L/16800.0L) - 112331.0L/29400.0L) + 7.0L/4.0L;
poly_val[9] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/1244160.0L)*x - 13.0L/3110400.0L) - 247.0L/2721600.0L) + 187.0L/453600.0L) + 50017.0L/13063680.0L) - 1153.0L/80640.0L) - 68659.0L/907200.0L) + 40987.0L/194400.0L) + 4442849.0L/6220800.0L) - 1819681.0L/1451520.0L) - 9281953.0L/3265920.0L) + 222581.0L/100800.0L) + 116803.0L/37800.0L) - 7.0L/24.0L;
poly_val[10] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/2073600.0L*x + 13.0L/6220800.0L) + 403.0L/7257600.0L) - 1441.0L/7257600.0L) - 103697.0L/43545600.0L) + 6283.0L/967680.0L) + 57173.0L/1209600.0L) - 135073.0L/1555200.0L) - 70337.0L/162000.0L) + 157477.0L/362880.0L) + 427361.0L/272160.0L) - 247081.0L/453600.0L) - 254431.0L/189000.0L) + 7.0L/108.0L;
poly_val[11] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/4561920.0L)*x - 13.0L/17107200.0L) - 169.0L/6652800.0L) + 31.0L/453600.0L) + 4723.0L/4354560.0L) - 83.0L/40320.0L) - 6347.0L/302400.0L) + 2363.0L/97200.0L) + 5017.0L/27648.0L) - 73811.0L/725760.0L) - 3535297.0L/5987520.0L) + 31957.0L/277200.0L) + 522337.0L/1108800.0L) - 7.0L/528.0L;
poly_val[12] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/13685760.0L*x + 13.0L/68428800.0L) + 403.0L/47900160.0L) - 23.0L/1451520.0L) - 9187.0L/26127360.0L) + 139.0L/322560.0L) + 947.0L/145152.0L) - 1399.0L/311040.0L) - 20623.0L/388800.0L) + 6271.0L/362880.0L) + 294617.0L/1796256.0L) - 2077.0L/110880.0L) - 52807.0L/415800.0L) + 7.0L/3300.0L;
poly_val[13] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/59304960.0L)*x - 1.0L/34214400.0L) - 19.0L/9979200.0L) + 1.0L/453600.0L) + 67.0L/870912.0L) - 13.0L/241920.0L) - 59.0L/43200.0L) + 101.0L/194400.0L) + 22159.0L/2073600.0L) - 2767.0L/1451520.0L) - 385381.0L/11975040.0L) + 20137.0L/9979200.0L) + 16591.0L/675675.0L) - 7.0L/30888.0L;
poly_val[14] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/415134720.0L*x + 1.0L/479001600.0L) + 1.0L/3801600.0L) - 1.0L/7257600.0L) - 89.0L/8709120.0L) + 1.0L/322560.0L) + 1487.0L/8467200.0L) - 311.0L/10886400.0L) - 29.0L/21600.0L) + 37.0L/362880.0L) + 11927.0L/2993760.0L) - 59.0L/554400.0L) - 38033.0L/12612600.0L) + 1.0L/84084.0L;
poly_val[15] = x*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*((1.0L/6227020800.0L)*pow(x, 2) - 1.0L/59875200.0L) + 41.0L/65318400.0L) - 67.0L/6350400.0L) + 2473.0L/31104000.0L) - 4201.0L/17962560.0L) + 266681.0L/1513512000.0L);
break;
}
}
void beta_Lagrange_n8(int deriv, double x, double *poly_val) {
switch(deriv)
{
case 0:
poly_val[0] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/355687428096000.0L*x + 1.0L/20922789888000.0L) + 1.0L/5230697472000.0L) - 1.0L/149448499200.0L) + 1.0L/135862272000.0L) + 41.0L/114960384000.0L) - 391.0L/402361344000.0L) - 67.0L/7315660800.0L) + 4657.0L/146313216000.0L) + 2473.0L/20901888000.0L) - 6583.0L/14370048000.0L) - 4201.0L/5748019200.0L) + 144689.0L/48432384000.0L) + 266681.0L/145297152000.0L) - 157.0L/20384000.0L) - 1.0L/823680.0L) + 1.0L/194480.0L);
poly_val[1] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/20922789888000.0L)*x - 1.0L/1307674368000.0L) - 23.0L/5230697472000.0L) + 31.0L/261534873600.0L) - 67.0L/1494484992000.0L) - 97.0L/14370048000.0L) + 6143.0L/402361344000.0L) + 331.0L/1828915200.0L) - 82289.0L/146313216000.0L) - 2747.0L/1143072000.0L) + 244843.0L/28740096000.0L) + 2711.0L/179625600.0L) - 8287319.0L/145297152000.0L) - 21701.0L/567567000.0L) + 150307.0L/1009008000.0L) + 8.0L/315315.0L) - 1.0L/10010.0L);
poly_val[2] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/2615348736000.0L*x + 1.0L/174356582400.0L) + 19.0L/435891456000.0L) - 1.0L/1037836800.0L) - 31.0L/62270208000.0L) + 19.0L/319334400.0L) - 2543.0L/25147584000.0L) - 517.0L/304819200.0L) + 27683.0L/6096384000.0L) + 1363.0L/58060800.0L) - 356513.0L/4790016000.0L) - 24149.0L/159667200.0L) + 169537087.0L/326918592000.0L) + 1058149.0L/2724321600.0L) - 3135247.0L/2270268000.0L) - 1.0L/3861.0L) + 2.0L/2145.0L);
poly_val[3] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/523069747200.0L)*x - 1.0L/37362124800.0L) - 67.0L/261534873600.0L) + 179.0L/37362124800.0L) + 139.0L/18681062400.0L) - 919.0L/2874009600.0L) + 6427.0L/20118067200.0L) + 2591.0L/261273600.0L) - 78299.0L/3657830400.0L) - 4787.0L/32659200.0L) + 287941.0L/718502400.0L) + 176989.0L/179625600.0L) - 401207.0L/134534400.0L) - 41981.0L/16216200.0L) + 68923.0L/8408400.0L) + 56.0L/32175.0L) - 4.0L/715.0L);
poly_val[4] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/149448499200.0L*x + 1.0L/11496038400.0L) + 19.0L/18681062400.0L) - 47.0L/2874009600.0L) - 3323.0L/74724249600.0L) + 6707.0L/5748019200.0L) - 109.0L/574801920.0L) - 10331.0L/261273600.0L) + 2489.0L/41803776.0L) + 678739.0L/1045094400.0L) - 4125323.0L/2874009600.0L) - 6782981.0L/1437004800.0L) + 12532313.0L/1037836800.0L) + 1033649.0L/79833600.0L) - 1014049.0L/28828800.0L) - 7.0L/792.0L) + 7.0L/286.0L);
poly_val[5] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/57480192000.0L)*x - 1.0L/4790016000.0L) - 1.0L/342144000.0L) + 13.0L/319334400.0L) + 1567.0L/9580032000.0L) - 4889.0L/1596672000.0L) - 2521.0L/1026432000.0L) + 9767.0L/87091200.0L) - 139379.0L/1741824000.0L) - 37517.0L/18144000.0L) + 7618319.0L/2395008000.0L) + 352423.0L/19958400.0L) - 126741731.0L/3592512000.0L) - 999349.0L/18711000.0L) + 2919647.0L/24948000.0L) + 56.0L/1485.0L) - 14.0L/165.0L);
poly_val[6] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/28740096000.0L*x + 1.0L/2612736000.0L) + 13.0L/2052864000.0L) - 1.0L/13063680.0L) - 6011.0L/14370048000.0L) + 7811.0L/1306368000.0L) + 2543.0L/224532000.0L) - 6067.0L/26127360.0L) - 126523.0L/2612736000.0L) + 12312353.0L/2612736000.0L) - 48574927.0L/14370048000.0L) - 248945.0L/5225472.0L) + 7969111.0L/133056000.0L) + 901349.0L/4536000.0L) - 287383.0L/924000.0L) - 7.0L/45.0L) + 14.0L/55.0L);
poly_val[7] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/18289152000.0L)*x - 1.0L/1828915200.0L) - 97.0L/9144576000.0L) + 29.0L/261273600.0L) + 257.0L/326592000.0L) - 331.0L/37324800.0L) - 253499.0L/9144576000.0L) + 652969.0L/1828915200.0L) + 8209463.0L/18289152000.0L) - 251539.0L/32659200.0L) - 586787.0L/326592000.0L) + 203617.0L/2332800.0L) - 4022849.0L/127008000.0L) - 372149.0L/793800.0L) + 293749.0L/882000.0L) + 8.0L/9.0L) - 4.0L/5.0L);
poly_val[8] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/14631321600.0L*x + 1.0L/1625702400.0L) + 17.0L/1219276800.0L) - 17.0L/135475200.0L) - 391.0L/348364800.0L) + 391.0L/38707200.0L) + 167297.0L/3657830400.0L) - 167297.0L/406425600.0L) - 4913051.0L/4877107200.0L) + 4913051.0L/541900800.0L) + 1034059.0L/87091200.0L) - 1034059.0L/9676800.0L) - 63566689.0L/914457600.0L) + 63566689.0L/101606400.0L) + 1077749.0L/6350400.0L) - 1077749.0L/705600.0L) - 1.0L/9.0L) + 1;
poly_val[9] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/14631321600.0L)*x - 1.0L/1828915200.0L) - 53.0L/3657830400.0L) + 29.0L/261273600.0L) + 1289.0L/1045094400.0L) - 331.0L/37324800.0L) - 39947.0L/731566080.0L) + 652969.0L/1828915200.0L) + 3992581.0L/2926264320.0L) - 251539.0L/32659200.0L) - 5114489.0L/261273600.0L) + 203617.0L/2332800.0L) + 5310539.0L/33868800.0L) - 372149.0L/793800.0L) - 50061.0L/78400.0L) + 8.0L/9.0L) + 1);
poly_val[10] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/18289152000.0L*x + 1.0L/2612736000.0L) + 109.0L/9144576000.0L) - 1.0L/13063680.0L) - 1373.0L/1306368000.0L) + 7811.0L/1306368000.0L) + 110987.0L/2286144000.0L) - 6067.0L/26127360.0L) - 23232953.0L/18289152000.0L) + 12312353.0L/2612736000.0L) + 24721061.0L/1306368000.0L) - 248945.0L/5225472.0L) - 38328917.0L/254016000.0L) + 901349.0L/4536000.0L) + 940549.0L/1764000.0L) - 7.0L/45.0L) - 2.0L/5.0L);
poly_val[11] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/28740096000.0L)*x - 1.0L/4790016000.0L) - 37.0L/4790016000.0L) + 13.0L/319334400.0L) + 151.0L/217728000.0L) - 4889.0L/1596672000.0L) - 466597.0L/14370048000.0L) + 9767.0L/87091200.0L) + 739651.0L/870912000.0L) - 37517.0L/18144000.0L) - 14666779.0L/1197504000.0L) + 352423.0L/19958400.0L) + 158720899.0L/1796256000.0L) - 999349.0L/18711000.0L) - 279677.0L/1134000.0L) + 56.0L/1485.0L) + 28.0L/165.0L);
poly_val[12] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/57480192000.0L*x + 1.0L/11496038400.0L) + 1.0L/256608000.0L) - 47.0L/2874009600.0L) - 10091.0L/28740096000.0L) + 6707.0L/5748019200.0L) + 33481.0L/2052864000.0L) - 10331.0L/261273600.0L) - 2166403.0L/5225472000.0L) + 678739.0L/1045094400.0L) + 80761123.0L/14370048000.0L) - 6782981.0L/1437004800.0L) - 1622179.0L/44352000.0L) + 1033649.0L/79833600.0L) + 351083.0L/3696000.0L) - 7.0L/792.0L) - 7.0L/110.0L);
poly_val[13] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/149448499200.0L)*x - 1.0L/37362124800.0L) - 1.0L/667180800.0L) + 179.0L/37362124800.0L) + 10001.0L/74724249600.0L) - 919.0L/2874009600.0L) - 2183.0L/359251200.0L) + 2591.0L/261273600.0L) + 154891.0L/1045094400.0L) - 4787.0L/32659200.0L) - 2723543.0L/1437004800.0L) + 176989.0L/179625600.0L) + 12175981.0L/1037836800.0L) - 41981.0L/16216200.0L) - 213041.0L/7207200.0L) + 56.0L/32175.0L) + 14.0L/715.0L);
poly_val[14] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/523069747200.0L*x + 1.0L/174356582400.0L) + 37.0L/87178291200.0L) - 1.0L/1037836800.0L) - 463.0L/12454041600.0L) + 19.0L/319334400.0L) + 823.0L/502951680.0L) - 517.0L/304819200.0L) - 9353.0L/243855360.0L) + 1363.0L/58060800.0L) + 453109.0L/958003200.0L) - 24149.0L/159667200.0L) - 186467471.0L/65383718400.0L) + 1058149.0L/2724321600.0L) + 3213647.0L/454053600.0L) - 1.0L/3861.0L) - 2.0L/429.0L);
poly_val[15] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/2615348736000.0L)*x - 1.0L/1307674368000.0L) - 109.0L/1307674368000.0L) + 31.0L/261534873600.0L) + 83.0L/11675664000.0L) - 97.0L/14370048000.0L) - 30491.0L/100590336000.0L) + 331.0L/1828915200.0L) + 126241.0L/18289152000.0L) - 2747.0L/1143072000.0L) - 299063.0L/3592512000.0L) + 2711.0L/179625600.0L) + 2993917.0L/6054048000.0L) - 21701.0L/567567000.0L) - 51169.0L/42042000.0L) + 8.0L/315315.0L) + 4.0L/5005.0L);
poly_val[16] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/20922789888000.0L*x + 1.0L/20922789888000.0L) + 53.0L/5230697472000.0L) - 1.0L/149448499200.0L) - 179.0L/213497856000.0L) + 41.0L/114960384000.0L) + 14017.0L/402361344000.0L) - 67.0L/7315660800.0L) - 113791.0L/146313216000.0L) + 2473.0L/20901888000.0L) + 4747.0L/513216000.0L) - 4201.0L/5748019200.0L) - 7912501.0L/145297152000.0L) + 266681.0L/145297152000.0L) + 269131.0L/2018016000.0L) - 1.0L/823680.0L) - 1.0L/11440.0L);
poly_val[17] = x*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*((1.0L/355687428096000.0L)*pow(x, 2) - 1.0L/1743565824000.0L) + 23.0L/498161664000.0L) - 757.0L/402361344000.0L) + 2021.0L/48771072000.0L) - 4679.0L/9580032000.0L) + 3739217.0L/1307674368000.0L) - 63397.0L/9081072000.0L) + 1.0L/218790.0L);
break;
case 1:
poly_val[0] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/20922789888000.0L*x + 1.0L/1307674368000.0L) + 1.0L/348713164800.0L) - 1.0L/10674892800.0L) + 1.0L/10450944000.0L) + 41.0L/9580032000.0L) - 391.0L/36578304000.0L) - 67.0L/731566080.0L) + 4657.0L/16257024000.0L) + 2473.0L/2612736000.0L) - 6583.0L/2052864000.0L) - 4201.0L/958003200.0L) + 144689.0L/9686476800.0L) + 266681.0L/36324288000.0L) - 471.0L/20384000.0L) - 1.0L/411840.0L) + 1.0L/194480.0L;
poly_val[1] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((17.0L/20922789888000.0L)*x - 1.0L/81729648000.0L) - 23.0L/348713164800.0L) + 31.0L/18681062400.0L) - 67.0L/114960384000.0L) - 97.0L/1197504000.0L) + 6143.0L/36578304000.0L) + 331.0L/182891520.0L) - 82289.0L/16257024000.0L) - 2747.0L/142884000.0L) + 244843.0L/4105728000.0L) + 2711.0L/29937600.0L) - 8287319.0L/29059430400.0L) - 21701.0L/141891750.0L) + 150307.0L/336336000.0L) + 16.0L/315315.0L) - 1.0L/10010.0L;
poly_val[2] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-17.0L/2615348736000.0L*x + 1.0L/10897286400.0L) + 19.0L/29059430400.0L) - 1.0L/74131200.0L) - 31.0L/4790016000.0L) + 19.0L/26611200.0L) - 2543.0L/2286144000.0L) - 517.0L/30481920.0L) + 27683.0L/677376000.0L) + 1363.0L/7257600.0L) - 356513.0L/684288000.0L) - 24149.0L/26611200.0L) + 169537087.0L/65383718400.0L) + 1058149.0L/681080400.0L) - 3135247.0L/756756000.0L) - 2.0L/3861.0L) + 2.0L/2145.0L;
poly_val[3] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((17.0L/523069747200.0L)*x - 1.0L/2335132800.0L) - 67.0L/17435658240.0L) + 179.0L/2668723200.0L) + 139.0L/1437004800.0L) - 919.0L/239500800.0L) + 6427.0L/1828915200.0L) + 2591.0L/26127360.0L) - 78299.0L/406425600.0L) - 4787.0L/4082400.0L) + 287941.0L/102643200.0L) + 176989.0L/29937600.0L) - 401207.0L/26906880.0L) - 41981.0L/4054050.0L) + 68923.0L/2802800.0L) + 112.0L/32175.0L) - 4.0L/715.0L;
poly_val[4] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-17.0L/149448499200.0L*x + 1.0L/718502400.0L) + 19.0L/1245404160.0L) - 47.0L/205286400.0L) - 3323.0L/5748019200.0L) + 6707.0L/479001600.0L) - 109.0L/52254720.0L) - 10331.0L/26127360.0L) + 2489.0L/4644864.0L) + 678739.0L/130636800.0L) - 4125323.0L/410572800.0L) - 6782981.0L/239500800.0L) + 12532313.0L/207567360.0L) + 1033649.0L/19958400.0L) - 1014049.0L/9609600.0L) - 7.0L/396.0L) + 7.0L/286.0L;
poly_val[5] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((17.0L/57480192000.0L)*x - 1.0L/299376000.0L) - 1.0L/22809600.0L) + 13.0L/22809600.0L) + 20371.0L/9580032000.0L) - 4889.0L/133056000.0L) - 2521.0L/93312000.0L) + 9767.0L/8709120.0L) - 139379.0L/193536000.0L) - 37517.0L/2268000.0L) + 7618319.0L/342144000.0L) + 352423.0L/3326400.0L) - 126741731.0L/718502400.0L) - 999349.0L/4677750.0L) + 2919647.0L/8316000.0L) + 112.0L/1485.0L) - 14.0L/165.0L;
poly_val[6] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-17.0L/28740096000.0L*x + 1.0L/163296000.0L) + 13.0L/136857600.0L) - 1.0L/933120.0L) - 78143.0L/14370048000.0L) + 7811.0L/108864000.0L) + 2543.0L/20412000.0L) - 6067.0L/2612736.0L) - 126523.0L/290304000.0L) + 12312353.0L/326592000.0L) - 48574927.0L/2052864000.0L) - 248945.0L/870912.0L) + 7969111.0L/26611200.0L) + 901349.0L/1134000.0L) - 287383.0L/308000.0L) - 14.0L/45.0L) + 14.0L/55.0L;
poly_val[7] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((17.0L/18289152000.0L)*x - 1.0L/114307200.0L) - 97.0L/609638400.0L) + 29.0L/18662400.0L) + 3341.0L/326592000.0L) - 331.0L/3110400.0L) - 2788489.0L/9144576000.0L) + 652969.0L/182891520.0L) + 8209463.0L/2032128000.0L) - 251539.0L/4082400.0L) - 586787.0L/46656000.0L) + 203617.0L/388800.0L) - 4022849.0L/25401600.0L) - 372149.0L/198450.0L) + 293749.0L/294000.0L) + 16.0L/9.0L) - 4.0L/5.0L;
poly_val[8] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-17.0L/14631321600.0L*x + 1.0L/101606400.0L) + 17.0L/81285120.0L) - 17.0L/9676800.0L) - 5083.0L/348364800.0L) + 391.0L/3225600.0L) + 1840267.0L/3657830400.0L) - 167297.0L/40642560.0L) - 4913051.0L/541900800.0L) + 4913051.0L/67737600.0L) + 1034059.0L/12441600.0L) - 1034059.0L/1612800.0L) - 63566689.0L/182891520.0L) + 63566689.0L/25401600.0L) + 1077749.0L/2116800.0L) - 1077749.0L/352800.0L) - 1.0L/9.0L;
poly_val[9] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((17.0L/14631321600.0L)*x - 1.0L/114307200.0L) - 53.0L/243855360.0L) + 29.0L/18662400.0L) + 16757.0L/1045094400.0L) - 331.0L/3110400.0L) - 439417.0L/731566080.0L) + 652969.0L/182891520.0L) + 3992581.0L/325140480.0L) - 251539.0L/4082400.0L) - 5114489.0L/37324800.0L) + 203617.0L/388800.0L) + 5310539.0L/6773760.0L) - 372149.0L/198450.0L) - 150183.0L/78400.0L) + 16.0L/9.0L) + 1;
poly_val[10] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-17.0L/18289152000.0L*x + 1.0L/163296000.0L) + 109.0L/609638400.0L) - 1.0L/933120.0L) - 17849.0L/1306368000.0L) + 7811.0L/108864000.0L) + 1220857.0L/2286144000.0L) - 6067.0L/2612736.0L) - 23232953.0L/2032128000.0L) + 12312353.0L/326592000.0L) + 24721061.0L/186624000.0L) - 248945.0L/870912.0L) - 38328917.0L/50803200.0L) + 901349.0L/1134000.0L) + 940549.0L/588000.0L) - 14.0L/45.0L) - 2.0L/5.0L;
poly_val[11] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((17.0L/28740096000.0L)*x - 1.0L/299376000.0L) - 37.0L/319334400.0L) + 13.0L/22809600.0L) + 1963.0L/217728000.0L) - 4889.0L/133056000.0L) - 466597.0L/1306368000.0L) + 9767.0L/8709120.0L) + 739651.0L/96768000.0L) - 37517.0L/2268000.0L) - 14666779.0L/171072000.0L) + 352423.0L/3326400.0L) + 158720899.0L/359251200.0L) - 999349.0L/4677750.0L) - 279677.0L/378000.0L) + 112.0L/1485.0L) + 28.0L/165.0L;
poly_val[12] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-17.0L/57480192000.0L*x + 1.0L/718502400.0L) + 1.0L/17107200.0L) - 47.0L/205286400.0L) - 131183.0L/28740096000.0L) + 6707.0L/479001600.0L) + 33481.0L/186624000.0L) - 10331.0L/26127360.0L) - 2166403.0L/580608000.0L) + 678739.0L/130636800.0L) + 80761123.0L/2052864000.0L) - 6782981.0L/239500800.0L) - 1622179.0L/8870400.0L) + 1033649.0L/19958400.0L) + 351083.0L/1232000.0L) - 7.0L/396.0L) - 7.0L/110.0L;
poly_val[13] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((17.0L/149448499200.0L)*x - 1.0L/2335132800.0L) - 1.0L/44478720.0L) + 179.0L/2668723200.0L) + 10001.0L/5748019200.0L) - 919.0L/239500800.0L) - 2183.0L/32659200.0L) + 2591.0L/26127360.0L) + 154891.0L/116121600.0L) - 4787.0L/4082400.0L) - 2723543.0L/205286400.0L) + 176989.0L/29937600.0L) + 12175981.0L/207567360.0L) - 41981.0L/4054050.0L) - 213041.0L/2402400.0L) + 112.0L/32175.0L) + 14.0L/715.0L;
poly_val[14] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-17.0L/523069747200.0L*x + 1.0L/10897286400.0L) + 37.0L/5811886080.0L) - 1.0L/74131200.0L) - 463.0L/958003200.0L) + 19.0L/26611200.0L) + 823.0L/45722880.0L) - 517.0L/30481920.0L) - 9353.0L/27095040.0L) + 1363.0L/7257600.0L) + 453109.0L/136857600.0L) - 24149.0L/26611200.0L) - 186467471.0L/13076743680.0L) + 1058149.0L/681080400.0L) + 3213647.0L/151351200.0L) - 2.0L/3861.0L) - 2.0L/429.0L;
poly_val[15] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((17.0L/2615348736000.0L)*x - 1.0L/81729648000.0L) - 109.0L/87178291200.0L) + 31.0L/18681062400.0L) + 83.0L/898128000.0L) - 97.0L/1197504000.0L) - 30491.0L/9144576000.0L) + 331.0L/182891520.0L) + 126241.0L/2032128000.0L) - 2747.0L/142884000.0L) - 299063.0L/513216000.0L) + 2711.0L/29937600.0L) + 2993917.0L/1210809600.0L) - 21701.0L/141891750.0L) - 51169.0L/14014000.0L) + 16.0L/315315.0L) + 4.0L/5005.0L;
poly_val[16] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-17.0L/20922789888000.0L*x + 1.0L/1307674368000.0L) + 53.0L/348713164800.0L) - 1.0L/10674892800.0L) - 179.0L/16422912000.0L) + 41.0L/9580032000.0L) + 14017.0L/36578304000.0L) - 67.0L/731566080.0L) - 113791.0L/16257024000.0L) + 2473.0L/2612736000.0L) + 33229.0L/513216000.0L) - 4201.0L/958003200.0L) - 7912501.0L/29059430400.0L) + 266681.0L/36324288000.0L) + 269131.0L/672672000.0L) - 1.0L/411840.0L) - 1.0L/11440.0L;
poly_val[17] = pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*((1.0L/20922789888000.0L)*pow(x, 2) - 1.0L/116237721600.0L) + 23.0L/38320128000.0L) - 757.0L/36578304000.0L) + 2021.0L/5419008000.0L) - 4679.0L/1368576000.0L) + 3739217.0L/261534873600.0L) - 63397.0L/3027024000.0L) + 1.0L/218790.0L;
break;
case 2:
poly_val[0] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/1307674368000.0L*x + 1.0L/87178291200.0L) + 1.0L/24908083200.0L) - 1.0L/821145600.0L) + 1.0L/870912000.0L) + 41.0L/870912000.0L) - 391.0L/3657830400.0L) - 67.0L/81285120.0L) + 4657.0L/2032128000.0L) + 2473.0L/373248000.0L) - 6583.0L/342144000.0L) - 4201.0L/191600640.0L) + 144689.0L/2421619200.0L) + 266681.0L/12108096000.0L) - 471.0L/10192000.0L) - 1.0L/411840.0L;
poly_val[1] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((17.0L/1307674368000.0L)*x - 1.0L/5448643200.0L) - 23.0L/24908083200.0L) + 31.0L/1437004800.0L) - 67.0L/9580032000.0L) - 97.0L/108864000.0L) + 6143.0L/3657830400.0L) + 331.0L/20321280.0L) - 82289.0L/2032128000.0L) - 2747.0L/20412000.0L) + 244843.0L/684288000.0L) + 2711.0L/5987520.0L) - 8287319.0L/7264857600.0L) - 21701.0L/47297250.0L) + 150307.0L/168168000.0L) + 16.0L/315315.0L;
poly_val[2] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-17.0L/163459296000.0L*x + 1.0L/726485760.0L) + 19.0L/2075673600.0L) - 1.0L/5702400.0L) - 31.0L/399168000.0L) + 19.0L/2419200.0L) - 2543.0L/228614400.0L) - 517.0L/3386880.0L) + 27683.0L/84672000.0L) + 1363.0L/1036800.0L) - 356513.0L/114048000.0L) - 24149.0L/5322240.0L) + 169537087.0L/16345929600.0L) + 1058149.0L/227026800.0L) - 3135247.0L/378378000.0L) - 2.0L/3861.0L;
poly_val[3] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((17.0L/32691859200.0L)*x - 1.0L/155675520.0L) - 67.0L/1245404160.0L) + 179.0L/205286400.0L) + 139.0L/119750400.0L) - 919.0L/21772800.0L) + 6427.0L/182891520.0L) + 2591.0L/2903040.0L) - 78299.0L/50803200.0L) - 4787.0L/583200.0L) + 287941.0L/17107200.0L) + 176989.0L/5987520.0L) - 401207.0L/6726720.0L) - 41981.0L/1351350.0L) + 68923.0L/1401400.0L) + 112.0L/32175.0L;
poly_val[4] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-17.0L/9340531200.0L*x + 1.0L/47900160.0L) + 19.0L/88957440.0L) - 611.0L/205286400.0L) - 3323.0L/479001600.0L) + 6707.0L/43545600.0L) - 109.0L/5225472.0L) - 10331.0L/2903040.0L) + 2489.0L/580608.0L) + 678739.0L/18662400.0L) - 4125323.0L/68428800.0L) - 6782981.0L/47900160.0L) + 12532313.0L/51891840.0L) + 1033649.0L/6652800.0L) - 1014049.0L/4804800.0L) - 7.0L/396.0L;
poly_val[5] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((17.0L/3592512000.0L)*x - 1.0L/19958400.0L) - 7.0L/11404800.0L) + 169.0L/22809600.0L) + 20371.0L/798336000.0L) - 4889.0L/12096000.0L) - 2521.0L/9331200.0L) + 9767.0L/967680.0L) - 139379.0L/24192000.0L) - 37517.0L/324000.0L) + 7618319.0L/57024000.0L) + 352423.0L/665280.0L) - 126741731.0L/179625600.0L) - 999349.0L/1559250.0L) + 2919647.0L/4158000.0L) + 112.0L/1485.0L;
poly_val[6] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-17.0L/1796256000.0L*x + 1.0L/10886400.0L) + 91.0L/68428800.0L) - 13.0L/933120.0L) - 78143.0L/1197504000.0L) + 85921.0L/108864000.0L) + 2543.0L/2041200.0L) - 6067.0L/290304.0L) - 126523.0L/36288000.0L) + 12312353.0L/46656000.0L) - 48574927.0L/342144000.0L) - 1244725.0L/870912.0L) + 7969111.0L/6652800.0L) + 901349.0L/378000.0L) - 287383.0L/154000.0L) - 14.0L/45.0L;
poly_val[7] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((17.0L/1143072000.0L)*x - 1.0L/7620480.0L) - 97.0L/43545600.0L) + 377.0L/18662400.0L) + 3341.0L/27216000.0L) - 3641.0L/3110400.0L) - 2788489.0L/914457600.0L) + 652969.0L/20321280.0L) + 8209463.0L/254016000.0L) - 251539.0L/583200.0L) - 586787.0L/7776000.0L) + 203617.0L/77760.0L) - 4022849.0L/6350400.0L) - 372149.0L/66150.0L) + 293749.0L/147000.0L) + 16.0L/9.0L;
poly_val[8] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-17.0L/914457600.0L*x + 1.0L/6773760.0L) + 17.0L/5806080.0L) - 221.0L/9676800.0L) - 5083.0L/29030400.0L) + 4301.0L/3225600.0L) + 1840267.0L/365783040.0L) - 167297.0L/4515840.0L) - 4913051.0L/67737600.0L) + 4913051.0L/9676800.0L) + 1034059.0L/2073600.0L) - 1034059.0L/322560.0L) - 63566689.0L/45722880.0L) + 63566689.0L/8467200.0L) + 1077749.0L/1058400.0L) - 1077749.0L/352800.0L;
poly_val[9] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((17.0L/914457600.0L)*x - 1.0L/7620480.0L) - 53.0L/17418240.0L) + 377.0L/18662400.0L) + 16757.0L/87091200.0L) - 3641.0L/3110400.0L) - 439417.0L/73156608.0L) + 652969.0L/20321280.0L) + 3992581.0L/40642560.0L) - 251539.0L/583200.0L) - 5114489.0L/6220800.0L) + 203617.0L/77760.0L) + 5310539.0L/1693440.0L) - 372149.0L/66150.0L) - 150183.0L/39200.0L) + 16.0L/9.0L;
poly_val[10] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-17.0L/1143072000.0L*x + 1.0L/10886400.0L) + 109.0L/43545600.0L) - 13.0L/933120.0L) - 17849.0L/108864000.0L) + 85921.0L/108864000.0L) + 1220857.0L/228614400.0L) - 6067.0L/290304.0L) - 23232953.0L/254016000.0L) + 12312353.0L/46656000.0L) + 24721061.0L/31104000.0L) - 1244725.0L/870912.0L) - 38328917.0L/12700800.0L) + 901349.0L/378000.0L) + 940549.0L/294000.0L) - 14.0L/45.0L;
poly_val[11] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((17.0L/1796256000.0L)*x - 1.0L/19958400.0L) - 37.0L/22809600.0L) + 169.0L/22809600.0L) + 1963.0L/18144000.0L) - 4889.0L/12096000.0L) - 466597.0L/130636800.0L) + 9767.0L/967680.0L) + 739651.0L/12096000.0L) - 37517.0L/324000.0L) - 14666779.0L/28512000.0L) + 352423.0L/665280.0L) + 158720899.0L/89812800.0L) - 999349.0L/1559250.0L) - 279677.0L/189000.0L) + 112.0L/1485.0L;
poly_val[12] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-17.0L/3592512000.0L*x + 1.0L/47900160.0L) + 7.0L/8553600.0L) - 611.0L/205286400.0L) - 131183.0L/2395008000.0L) + 6707.0L/43545600.0L) + 33481.0L/18662400.0L) - 10331.0L/2903040.0L) - 2166403.0L/72576000.0L) + 678739.0L/18662400.0L) + 80761123.0L/342144000.0L) - 6782981.0L/47900160.0L) - 1622179.0L/2217600.0L) + 1033649.0L/6652800.0L) + 351083.0L/616000.0L) - 7.0L/396.0L;
poly_val[13] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((17.0L/9340531200.0L)*x - 1.0L/155675520.0L) - 7.0L/22239360.0L) + 179.0L/205286400.0L) + 10001.0L/479001600.0L) - 919.0L/21772800.0L) - 2183.0L/3265920.0L) + 2591.0L/2903040.0L) + 154891.0L/14515200.0L) - 4787.0L/583200.0L) - 2723543.0L/34214400.0L) + 176989.0L/5987520.0L) + 12175981.0L/51891840.0L) - 41981.0L/1351350.0L) - 213041.0L/1201200.0L) + 112.0L/32175.0L;
poly_val[14] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-17.0L/32691859200.0L*x + 1.0L/726485760.0L) + 37.0L/415134720.0L) - 1.0L/5702400.0L) - 463.0L/79833600.0L) + 19.0L/2419200.0L) + 823.0L/4572288.0L) - 517.0L/3386880.0L) - 9353.0L/3386880.0L) + 1363.0L/1036800.0L) + 453109.0L/22809600.0L) - 24149.0L/5322240.0L) - 186467471.0L/3269185920.0L) + 1058149.0L/227026800.0L) + 3213647.0L/75675600.0L) - 2.0L/3861.0L;
poly_val[15] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((17.0L/163459296000.0L)*x - 1.0L/5448643200.0L) - 109.0L/6227020800.0L) + 31.0L/1437004800.0L) + 83.0L/74844000.0L) - 97.0L/108864000.0L) - 30491.0L/914457600.0L) + 331.0L/20321280.0L) + 126241.0L/254016000.0L) - 2747.0L/20412000.0L) - 299063.0L/85536000.0L) + 2711.0L/5987520.0L) + 2993917.0L/302702400.0L) - 21701.0L/47297250.0L) - 51169.0L/7007000.0L) + 16.0L/315315.0L;
poly_val[16] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-17.0L/1307674368000.0L*x + 1.0L/87178291200.0L) + 53.0L/24908083200.0L) - 1.0L/821145600.0L) - 179.0L/1368576000.0L) + 41.0L/870912000.0L) + 14017.0L/3657830400.0L) - 67.0L/81285120.0L) - 113791.0L/2032128000.0L) + 2473.0L/373248000.0L) + 33229.0L/85536000.0L) - 4201.0L/191600640.0L) - 7912501.0L/7264857600.0L) + 266681.0L/12108096000.0L) + 269131.0L/336336000.0L) - 1.0L/411840.0L;
poly_val[17] = x*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*((1.0L/1307674368000.0L)*pow(x, 2) - 1.0L/8302694400.0L) + 23.0L/3193344000.0L) - 757.0L/3657830400.0L) + 2021.0L/677376000.0L) - 4679.0L/228096000.0L) + 3739217.0L/65383718400.0L) - 63397.0L/1513512000.0L);
break;
}
}
void beta_Lagrange_n9(int deriv, double x, double *poly_val) {
switch(deriv)
{
case 0:
poly_val[0] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/121645100408832000.0L*x + 1.0L/6402373705728000.0L) + 1.0L/1067062284288000.0L) - 1.0L/31384184832000.0L) + 1.0L/62768369664000.0L) + 23.0L/8966909952000.0L) - 313.0L/47076277248000.0L) - 757.0L/7242504192000.0L) + 3611.0L/9656672256000.0L) + 2021.0L/877879296000.0L) - 45757.0L/4828336128000.0L) - 4679.0L/172440576000.0L) + 1414271.0L/11769069312000.0L) + 3739217.0L/23538138624000.0L) - 957311.0L/1307674368000.0L) - 63397.0L/163459296000.0L) + 56311.0L/30875644800.0L) + 1.0L/3938220.0L) - 1.0L/831402.0L);
poly_val[1] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/6402373705728000.0L)*x - 1.0L/355687428096000.0L) - 47.0L/2134124568576000.0L) + 1.0L/1609445376000.0L) + 1.0L/5706215424000.0L) - 79.0L/1494484992000.0L) + 20827.0L/188305108992000.0L) + 1801.0L/804722688000.0L) - 68909.0L/9656672256000.0L) - 7403.0L/146313216000.0L) + 1846049.0L/9656672256000.0L) + 139499.0L/229920768000.0L) - 117554201.0L/47076277248000.0L) - 1043321.0L/290594304000.0L) + 3677437.0L/237758976000.0L) + 10949.0L/1241856000.0L) - 599971.0L/15437822400.0L) - 9.0L/1555840.0L) + 1.0L/38896.0L);
poly_val[2] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/711374856192000.0L*x + 1.0L/41845579776000.0L) + 83.0L/355687428096000.0L) - 59.0L/10461394944000.0L) - 1.0L/146313216000.0L) + 10691.0L/20922789888000.0L) - 167.0L/217945728000.0L) - 18301.0L/804722688000.0L) + 200467.0L/3218890752000.0L) + 156031.0L/292626432000.0L) - 2913091.0L/1609445376000.0L) - 2637347.0L/402361344000.0L) + 16131677.0L/653837184000.0L) + 11448761.0L/290594304000.0L) - 2067001.0L/13208832000.0L) - 196909.0L/2018016000.0L) + 105031.0L/263894400.0L) + 9.0L/140140.0L) - 9.0L/34034.0L);
poly_val[3] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/125536739328000.0L)*x - 1.0L/7846046208000.0L) - 1.0L/664215552000.0L) + 83.0L/2615348736000.0L) + 137.0L/1902071808000.0L) - 571.0L/186810624000.0L) + 151451.0L/62768369664000.0L) + 43693.0L/301771008000.0L) - 146939.0L/459841536000.0L) - 65377.0L/18289152000.0L) + 33971617.0L/3218890752000.0L) + 1311029.0L/28740096000.0L) - 2408863267.0L/15692092416000.0L) - 550937221.0L/1961511552000.0L) + 4896967.0L/4852224000.0L) + 9601741.0L/13621608000.0L) - 9495901.0L/3632428800.0L) - 1.0L/2145.0L) + 1.0L/572.0L);
poly_val[4] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/31384184832000.0L*x + 1.0L/2092278988800.0L) + 1.0L/149448499200.0L) - 1.0L/8047226880.0L) - 83.0L/193729536000.0L) + 1889.0L/149448499200.0L) + 199.0L/392302310400.0L) - 5147.0L/8047226880.0L) + 115103.0L/114960384000.0L) + 248167.0L/14631321600.0L) - 1105981.0L/26824089600.0L) - 131977.0L/574801920.0L) + 654411847.0L/980755776000.0L) + 21379409.0L/14529715200.0L) - 14487307.0L/3113510400.0L) - 5861.0L/1552320.0L) + 9397117.0L/756756000.0L) + 9.0L/3575.0L) - 6.0L/715.0L);
poly_val[5] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/10461394944000.0L)*x - 1.0L/747242496000.0L) - 229.0L/10461394944000.0L) + 269.0L/747242496000.0L) + 8941.0L/5230697472000.0L) - 14321.0L/373621248000.0L) - 65903.0L/1743565824000.0L) + 59273.0L/28740096000.0L) - 1335239.0L/804722688000.0L) - 309691.0L/5225472000.0L) + 85570171.0L/804722688000.0L) + 50693869.0L/57480192000.0L) - 1363537171.0L/653837184000.0L) - 63114127.0L/10378368000.0L) + 1177851371.0L/72648576000.0L) + 9381241.0L/576576000.0L) - 9222481.0L/201801600.0L) - 63.0L/5720.0L) + 9.0L/286.0L);
poly_val[6] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/4483454976000.0L*x + 1.0L/344881152000.0L) + 41.0L/747242496000.0L) - 23.0L/28740096000.0L) - 3697.0L/747242496000.0L) + 5077.0L/57480192000.0L) + 101419.0L/560431872000.0L) - 431303.0L/86220288000.0L) - 2027.0L/5474304000.0L) + 1618681.0L/10450944000.0L) - 9174989.0L/57480192000.0L) - 36951877.0L/14370048000.0L) + 152331367.0L/35026992000.0L) + 444183529.0L/21555072000.0L) - 2003176661.0L/46702656000.0L) - 9072541.0L/149688000.0L) + 8860861.0L/64864800.0L) + 7.0L/165.0L) - 14.0L/143.0L);
poly_val[7] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/2414168064000.0L)*x - 1.0L/201180672000.0L) - 29.0L/268240896000.0L) + 281.0L/201180672000.0L) + 397.0L/36578304000.0L) - 2273.0L/14370048000.0L) - 617821.0L/1207084032000.0L) + 936041.0L/100590336000.0L) + 2668157.0L/268240896000.0L) - 5586823.0L/18289152000.0L) + 35775989.0L/804722688000.0L) + 160253299.0L/28740096000.0L) - 739625771.0L/150885504000.0L) - 294484709.0L/5588352000.0L) + 107051279.0L/1524096000.0L) + 8190541.0L/38808000.0L) - 7873021.0L/23284800.0L) - 9.0L/55.0L) + 3.0L/11.0L);
poly_val[8] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/1609445376000.0L*x + 1.0L/146313216000.0L) + 137.0L/804722688000.0L) - 71.0L/36578304000.0L) - 14911.0L/804722688000.0L) + 2333.0L/10450944000.0L) + 2531.0L/2483712000.0L) - 491677.0L/36578304000.0L) - 47309593.0L/1609445376000.0L) + 66976673.0L/146313216000.0L) + 315424951.0L/804722688000.0L) - 23225297.0L/2612736000.0L) - 24429967.0L/50295168000.0L) + 95749481.0L/1016064000.0L) - 231950053.0L/5588352000.0L) - 3427741.0L/7056000.0L) + 2792701.0L/7761600.0L) + 9.0L/10.0L) - 9.0L/11.0L);
poly_val[9] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/1316818944000.0L)*x - 1.0L/131681894400.0L) - 19.0L/87787929600.0L) + 19.0L/8778792960.0L) + 5491.0L/219469824000.0L) - 5491.0L/21946982400.0L) - 199937.0L/131681894400.0L) + 199937.0L/13168189440.0L) + 22981127.0L/438939648000.0L) - 22981127.0L/43893964800.0L) - 91172887.0L/87787929600.0L) + 91172887.0L/8778792960.0L) + 1886067737.0L/164602368000.0L) - 1886067737.0L/16460236800.0L) - 117868837.0L/1828915200.0L) + 117868837.0L/182891520.0L) + 9778141.0L/63504000.0L) - 9778141.0L/6350400.0L) - 1.0L/10.0L) + 1;
poly_val[10] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/1316818944000.0L*x + 1.0L/146313216000.0L) + 1.0L/4478976000.0L) - 71.0L/36578304000.0L) - 5917.0L/219469824000.0L) + 2333.0L/10450944000.0L) + 143333.0L/82301184000.0L) - 491677.0L/36578304000.0L) - 4125893.0L/62705664000.0L) + 66976673.0L/146313216000.0L) + 328397227.0L/219469824000.0L) - 23225297.0L/2612736000.0L) - 418657681.0L/20575296000.0L) + 95749481.0L/1016064000.0L) + 103649251.0L/653184000.0L) - 3427741.0L/7056000.0L) - 4062781.0L/6350400.0L) + 9.0L/10.0L) + 1);
poly_val[11] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/1609445376000.0L)*x - 1.0L/201180672000.0L) - 43.0L/229920768000.0L) + 281.0L/201180672000.0L) + 18721.0L/804722688000.0L) - 2273.0L/14370048000.0L) - 418087.0L/268240896000.0L) + 936041.0L/100590336000.0L) + 14128099.0L/229920768000.0L) - 5586823.0L/18289152000.0L) - 2350874153.0L/1609445376000.0L) + 160253299.0L/28740096000.0L) + 4129613923.0L/201180672000.0L) - 294484709.0L/5588352000.0L) - 252469003.0L/1596672000.0L) + 8190541.0L/38808000.0L) + 8508061.0L/15523200.0L) - 9.0L/55.0L) - 9.0L/22.0L);
poly_val[12] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/2414168064000.0L*x + 1.0L/344881152000.0L) + 17.0L/134120448000.0L) - 23.0L/28740096000.0L) - 587.0L/36578304000.0L) + 5077.0L/57480192000.0L) + 82471.0L/75442752000.0L) - 431303.0L/86220288000.0L) - 35057611.0L/804722688000.0L) + 1618681.0L/10450944000.0L) + 414889873.0L/402361344000.0L) - 36951877.0L/14370048000.0L) - 1053508997.0L/75442752000.0L) + 444183529.0L/21555072000.0L) + 221696239.0L/2286144000.0L) - 9072541.0L/149688000.0L) - 9284221.0L/34927200.0L) + 7.0L/165.0L) + 2.0L/11.0L);
poly_val[13] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/4483454976000.0L)*x - 1.0L/747242496000.0L) - 103.0L/1494484992000.0L) + 269.0L/747242496000.0L) + 199.0L/22643712000.0L) - 14321.0L/373621248000.0L) - 1343389.0L/2241727488000.0L) + 59273.0L/28740096000.0L) + 388021.0L/16422912000.0L) - 309691.0L/5225472000.0L) - 6924367.0L/12773376000.0L) + 50693869.0L/57480192000.0L) + 965782157.0L/140107968000.0L) - 63114127.0L/10378368000.0L) - 122428519.0L/2830464000.0L) + 9381241.0L/576576000.0L) + 9540001.0L/86486400.0L) - 63.0L/5720.0L) - 21.0L/286.0L);
poly_val[14] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/10461394944000.0L*x + 1.0L/2092278988800.0L) + 31.0L/1046139494400.0L) - 1.0L/8047226880.0L) - 1793.0L/475517952000.0L) + 1889.0L/149448499200.0L) + 22171.0L/87178291200.0L) - 5147.0L/8047226880.0L) - 7876837.0L/804722688000.0L) + 248167.0L/14631321600.0L) + 17344541.0L/80472268800.0L) - 131977.0L/574801920.0L) - 26463329.0L/10216206000.0L) + 21379409.0L/14529715200.0L) + 10216631.0L/660441600.0L) - 5861.0L/1552320.0L) - 9651133.0L/252252000.0L) + 9.0L/3575.0L) + 18.0L/715.0L);
poly_val[15] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/31384184832000.0L)*x - 1.0L/7846046208000.0L) - 103.0L/10461394944000.0L) + 83.0L/2615348736000.0L) + 499.0L/402361344000.0L) - 571.0L/186810624000.0L) - 1287469.0L/15692092416000.0L) + 43693.0L/301771008000.0L) + 822289.0L/268240896000.0L) - 65377.0L/18289152000.0L) - 52326023.0L/804722688000.0L) + 1311029.0L/28740096000.0L) + 369975061.0L/490377888000.0L) - 550937221.0L/1961511552000.0L) - 2869906997.0L/653837184000.0L) + 9601741.0L/13621608000.0L) + 746737.0L/69854400.0L) - 1.0L/2145.0L) - 1.0L/143.0L);
poly_val[16] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/125536739328000.0L*x + 1.0L/41845579776000.0L) + 17.0L/6974263296000.0L) - 59.0L/10461394944000.0L) - 6317.0L/20922789888000.0L) + 10691.0L/20922789888000.0L) + 306049.0L/15692092416000.0L) - 18301.0L/804722688000.0L) - 760069.0L/1072963584000.0L) + 156031.0L/292626432000.0L) + 23540441.0L/1609445376000.0L) - 2637347.0L/402361344000.0L) - 651515867.0L/3923023104000.0L) + 11448761.0L/290594304000.0L) + 414884083.0L/435891456000.0L) - 196909.0L/2018016000.0L) - 1391323.0L/605404800.0L) + 9.0L/140140.0L) + 3.0L/2002.0L);
poly_val[17] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/711374856192000.0L)*x - 1.0L/355687428096000.0L) - 43.0L/101624979456000.0L) + 1.0L/1609445376000.0L) + 1073.0L/20922789888000.0L) - 79.0L/1494484992000.0L) - 7517.0L/2324754432000.0L) + 1801.0L/804722688000.0L) + 52799.0L/459841536000.0L) - 7403.0L/146313216000.0L) - 7491133.0L/3218890752000.0L) + 139499.0L/229920768000.0L) + 136333979.0L/5230697472000.0L) - 1043321.0L/290594304000.0L) - 6144839.0L/41513472000.0L) + 10949.0L/1241856000.0L) + 1219787.0L/3430627200.0L) - 9.0L/1555840.0L) - 9.0L/38896.0L);
poly_val[18] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/6402373705728000.0L*x + 1.0L/6402373705728000.0L) + 1.0L/21776781312000.0L) - 1.0L/31384184832000.0L) - 31.0L/5706215424000.0L) + 23.0L/8966909952000.0L) + 3947.0L/11769069312000.0L) - 757.0L/7242504192000.0L) - 16153.0L/1379524608000.0L) + 2021.0L/877879296000.0L) + 1131407.0L/4828336128000.0L) - 4679.0L/172440576000.0L) - 15305183.0L/5884534656000.0L) + 3739217.0L/23538138624000.0L) + 83131.0L/5660928000.0L) - 63397.0L/163459296000.0L) - 40207.0L/1143542400.0L) + 1.0L/3938220.0L) + 1.0L/43758.0L);
poly_val[19] = x*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*((1.0L/121645100408832000.0L)*pow(x, 2) - 1.0L/426824913715200.0L) + 17.0L/62768369664000.0L) - 619.0L/37661021798400.0L) + 5473.0L/9656672256000.0L) - 21713.0L/1931334451200.0L) + 5839219.0L/47076277248000.0L) - 364919.0L/523069747200.0L) + 514639.0L/308756448000.0L) - 1.0L/923780.0L);
break;
case 1:
poly_val[0] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/6402373705728000.0L*x + 1.0L/355687428096000.0L) + 1.0L/62768369664000.0L) - 1.0L/1961511552000.0L) + 1.0L/4184557977600.0L) + 23.0L/640493568000.0L) - 313.0L/3621252096000.0L) - 757.0L/603542016000.0L) + 3611.0L/877879296000.0L) + 2021.0L/87787929600.0L) - 45757.0L/536481792000.0L) - 4679.0L/21555072000.0L) + 1414271.0L/1681295616000.0L) + 3739217.0L/3923023104000.0L) - 957311.0L/261534873600.0L) - 63397.0L/40864824000.0L) + 56311.0L/10291881600.0L) + 1.0L/1969110.0L) - 1.0L/831402.0L;
poly_val[1] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((19.0L/6402373705728000.0L)*x - 1.0L/19760412672000.0L) - 47.0L/125536739328000.0L) + 1.0L/100590336000.0L) + 1.0L/380414361600.0L) - 79.0L/106748928000.0L) + 20827.0L/14485008384000.0L) + 1801.0L/67060224000.0L) - 68909.0L/877879296000.0L) - 7403.0L/14631321600.0L) + 1846049.0L/1072963584000.0L) + 139499.0L/28740096000.0L) - 117554201.0L/6725182464000.0L) - 1043321.0L/48432384000.0L) + 3677437.0L/47551795200.0L) + 10949.0L/310464000.0L) - 599971.0L/5145940800.0L) - 9.0L/777920.0L) + 1.0L/38896.0L;
poly_val[2] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-19.0L/711374856192000.0L*x + 1.0L/2324754432000.0L) + 83.0L/20922789888000.0L) - 59.0L/653837184000.0L) - 1.0L/9754214400.0L) + 10691.0L/1494484992000.0L) - 167.0L/16765056000.0L) - 18301.0L/67060224000.0L) + 200467.0L/292626432000.0L) + 156031.0L/29262643200.0L) - 2913091.0L/178827264000.0L) - 2637347.0L/50295168000.0L) + 16131677.0L/93405312000.0L) + 11448761.0L/48432384000.0L) - 2067001.0L/2641766400.0L) - 196909.0L/504504000.0L) + 105031.0L/87964800.0L) + 9.0L/70070.0L) - 9.0L/34034.0L;
poly_val[3] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((19.0L/125536739328000.0L)*x - 1.0L/435891456000.0L) - 17.0L/664215552000.0L) + 83.0L/163459296000.0L) + 137.0L/126804787200.0L) - 571.0L/13343616000.0L) + 151451.0L/4828336128000.0L) + 43693.0L/25147584000.0L) - 146939.0L/41803776000.0L) - 65377.0L/1828915200.0L) + 33971617.0L/357654528000.0L) + 1311029.0L/3592512000.0L) - 2408863267.0L/2241727488000.0L) - 550937221.0L/326918592000.0L) + 4896967.0L/970444800.0L) + 9601741.0L/3405402000.0L) - 9495901.0L/1210809600.0L) - 2.0L/2145.0L) + 1.0L/572.0L;
poly_val[4] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-19.0L/31384184832000.0L*x + 1.0L/116237721600.0L) + 17.0L/149448499200.0L) - 1.0L/502951680.0L) - 83.0L/12915302400.0L) + 1889.0L/10674892800.0L) + 199.0L/30177100800.0L) - 5147.0L/670602240.0L) + 115103.0L/10450944000.0L) + 248167.0L/1463132160.0L) - 1105981.0L/2980454400.0L) - 131977.0L/71850240.0L) + 654411847.0L/140107968000.0L) + 21379409.0L/2421619200.0L) - 14487307.0L/622702080.0L) - 5861.0L/388080.0L) + 9397117.0L/252252000.0L) + 18.0L/3575.0L) - 6.0L/715.0L;
poly_val[5] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((19.0L/10461394944000.0L)*x - 1.0L/41513472000.0L) - 3893.0L/10461394944000.0L) + 269.0L/46702656000.0L) + 8941.0L/348713164800.0L) - 14321.0L/26687232000.0L) - 65903.0L/134120448000.0L) + 59273.0L/2395008000.0L) - 1335239.0L/73156608000.0L) - 309691.0L/522547200.0L) + 85570171.0L/89413632000.0L) + 50693869.0L/7185024000.0L) - 1363537171.0L/93405312000.0L) - 63114127.0L/1729728000.0L) + 1177851371.0L/14529715200.0L) + 9381241.0L/144144000.0L) - 9222481.0L/67267200.0L) - 63.0L/2860.0L) + 9.0L/286.0L;
poly_val[6] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-19.0L/4483454976000.0L*x + 1.0L/19160064000.0L) + 697.0L/747242496000.0L) - 23.0L/1796256000.0L) - 3697.0L/49816166400.0L) + 5077.0L/4105728000.0L) + 101419.0L/43110144000.0L) - 431303.0L/7185024000.0L) - 2027.0L/497664000.0L) + 1618681.0L/1045094400.0L) - 9174989.0L/6386688000.0L) - 36951877.0L/1796256000.0L) + 152331367.0L/5003856000.0L) + 444183529.0L/3592512000.0L) - 2003176661.0L/9340531200.0L) - 9072541.0L/37422000.0L) + 8860861.0L/21621600.0L) + 14.0L/165.0L) - 14.0L/143.0L;
poly_val[7] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((19.0L/2414168064000.0L)*x - 1.0L/11176704000.0L) - 493.0L/268240896000.0L) + 281.0L/12573792000.0L) + 397.0L/2438553600.0L) - 2273.0L/1026432000.0L) - 8031673.0L/1207084032000.0L) + 936041.0L/8382528000.0L) + 2668157.0L/24385536000.0L) - 5586823.0L/1828915200.0L) + 35775989.0L/89413632000.0L) + 160253299.0L/3592512000.0L) - 739625771.0L/21555072000.0L) - 294484709.0L/931392000.0L) + 107051279.0L/304819200.0L) + 8190541.0L/9702000.0L) - 7873021.0L/7761600.0L) - 18.0L/55.0L) + 3.0L/11.0L;
poly_val[8] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-19.0L/1609445376000.0L*x + 1.0L/8128512000.0L) + 2329.0L/804722688000.0L) - 71.0L/2286144000.0L) - 14911.0L/53648179200.0L) + 2333.0L/746496000.0L) + 32903.0L/2483712000.0L) - 491677.0L/3048192000.0L) - 47309593.0L/146313216000.0L) + 66976673.0L/14631321600.0L) + 315424951.0L/89413632000.0L) - 23225297.0L/326592000.0L) - 24429967.0L/7185024000.0L) + 95749481.0L/169344000.0L) - 231950053.0L/1117670400.0L) - 3427741.0L/1764000.0L) + 2792701.0L/2587200.0L) + 9.0L/5.0L) - 9.0L/11.0L;
poly_val[9] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((19.0L/1316818944000.0L)*x - 1.0L/7315660800.0L) - 323.0L/87787929600.0L) + 19.0L/548674560.0L) + 5491.0L/14631321600.0L) - 5491.0L/1567641600.0L) - 2599181.0L/131681894400.0L) + 199937.0L/1097349120.0L) + 252792397.0L/438939648000.0L) - 22981127.0L/4389396480.0L) - 91172887.0L/9754214400.0L) + 91172887.0L/1097349120.0L) + 1886067737.0L/23514624000.0L) - 1886067737.0L/2743372800.0L) - 117868837.0L/365783040.0L) + 117868837.0L/45722880.0L) + 9778141.0L/21168000.0L) - 9778141.0L/3175200.0L) - 1.0L/10.0L;
poly_val[10] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-19.0L/1316818944000.0L*x + 1.0L/8128512000.0L) + 17.0L/4478976000.0L) - 71.0L/2286144000.0L) - 5917.0L/14631321600.0L) + 2333.0L/746496000.0L) + 1863329.0L/82301184000.0L) - 491677.0L/3048192000.0L) - 45384823.0L/62705664000.0L) + 66976673.0L/14631321600.0L) + 328397227.0L/24385536000.0L) - 23225297.0L/326592000.0L) - 418657681.0L/2939328000.0L) + 95749481.0L/169344000.0L) + 103649251.0L/130636800.0L) - 3427741.0L/1764000.0L) - 4062781.0L/2116800.0L) + 9.0L/5.0L) + 1;
poly_val[11] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((19.0L/1609445376000.0L)*x - 1.0L/11176704000.0L) - 731.0L/229920768000.0L) + 281.0L/12573792000.0L) + 18721.0L/53648179200.0L) - 2273.0L/1026432000.0L) - 5435131.0L/268240896000.0L) + 936041.0L/8382528000.0L) + 14128099.0L/20901888000.0L) - 5586823.0L/1828915200.0L) - 2350874153.0L/178827264000.0L) + 160253299.0L/3592512000.0L) + 4129613923.0L/28740096000.0L) - 294484709.0L/931392000.0L) - 252469003.0L/319334400.0L) + 8190541.0L/9702000.0L) + 8508061.0L/5174400.0L) - 18.0L/55.0L) - 9.0L/22.0L;
poly_val[12] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-19.0L/2414168064000.0L*x + 1.0L/19160064000.0L) + 289.0L/134120448000.0L) - 23.0L/1796256000.0L) - 587.0L/2438553600.0L) + 5077.0L/4105728000.0L) + 1072123.0L/75442752000.0L) - 431303.0L/7185024000.0L) - 35057611.0L/73156608000.0L) + 1618681.0L/1045094400.0L) + 414889873.0L/44706816000.0L) - 36951877.0L/1796256000.0L) - 1053508997.0L/10777536000.0L) + 444183529.0L/3592512000.0L) + 221696239.0L/457228800.0L) - 9072541.0L/37422000.0L) - 9284221.0L/11642400.0L) + 14.0L/165.0L) + 2.0L/11.0L;
poly_val[13] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((19.0L/4483454976000.0L)*x - 1.0L/41513472000.0L) - 1751.0L/1494484992000.0L) + 269.0L/46702656000.0L) + 199.0L/1509580800.0L) - 14321.0L/26687232000.0L) - 1343389.0L/172440576000.0L) + 59273.0L/2395008000.0L) + 388021.0L/1492992000.0L) - 309691.0L/522547200.0L) - 6924367.0L/1419264000.0L) + 50693869.0L/7185024000.0L) + 965782157.0L/20015424000.0L) - 63114127.0L/1729728000.0L) - 122428519.0L/566092800.0L) + 9381241.0L/144144000.0L) + 9540001.0L/28828800.0L) - 63.0L/2860.0L) - 21.0L/286.0L;
poly_val[14] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-19.0L/10461394944000.0L*x + 1.0L/116237721600.0L) + 527.0L/1046139494400.0L) - 1.0L/502951680.0L) - 1793.0L/31701196800.0L) + 1889.0L/10674892800.0L) + 22171.0L/6706022400.0L) - 5147.0L/670602240.0L) - 7876837.0L/73156608000.0L) + 248167.0L/1463132160.0L) + 17344541.0L/8941363200.0L) - 131977.0L/71850240.0L) - 26463329.0L/1459458000.0L) + 21379409.0L/2421619200.0L) + 10216631.0L/132088320.0L) - 5861.0L/388080.0L) - 9651133.0L/84084000.0L) + 18.0L/3575.0L) + 18.0L/715.0L;
poly_val[15] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((19.0L/31384184832000.0L)*x - 1.0L/435891456000.0L) - 1751.0L/10461394944000.0L) + 83.0L/163459296000.0L) + 499.0L/26824089600.0L) - 571.0L/13343616000.0L) - 1287469.0L/1207084032000.0L) + 43693.0L/25147584000.0L) + 822289.0L/24385536000.0L) - 65377.0L/1828915200.0L) - 52326023.0L/89413632000.0L) + 1311029.0L/3592512000.0L) + 369975061.0L/70053984000.0L) - 550937221.0L/326918592000.0L) - 2869906997.0L/130767436800.0L) + 9601741.0L/3405402000.0L) + 746737.0L/23284800.0L) - 2.0L/2145.0L) - 1.0L/143.0L;
poly_val[16] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-19.0L/125536739328000.0L*x + 1.0L/2324754432000.0L) + 289.0L/6974263296000.0L) - 59.0L/653837184000.0L) - 6317.0L/1394852659200.0L) + 10691.0L/1494484992000.0L) + 306049.0L/1207084032000.0L) - 18301.0L/67060224000.0L) - 760069.0L/97542144000.0L) + 156031.0L/29262643200.0L) + 23540441.0L/178827264000.0L) - 2637347.0L/50295168000.0L) - 651515867.0L/560431872000.0L) + 11448761.0L/48432384000.0L) + 414884083.0L/87178291200.0L) - 196909.0L/504504000.0L) - 1391323.0L/201801600.0L) + 9.0L/70070.0L) + 3.0L/2002.0L;
poly_val[17] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((19.0L/711374856192000.0L)*x - 1.0L/19760412672000.0L) - 43.0L/5977939968000.0L) + 1.0L/100590336000.0L) + 1073.0L/1394852659200.0L) - 79.0L/106748928000.0L) - 7517.0L/178827264000.0L) + 1801.0L/67060224000.0L) + 52799.0L/41803776000.0L) - 7403.0L/14631321600.0L) - 7491133.0L/357654528000.0L) + 139499.0L/28740096000.0L) + 136333979.0L/747242496000.0L) - 1043321.0L/48432384000.0L) - 6144839.0L/8302694400.0L) + 10949.0L/310464000.0L) + 1219787.0L/1143542400.0L) - 9.0L/777920.0L) - 9.0L/38896.0L;
poly_val[18] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-19.0L/6402373705728000.0L*x + 1.0L/355687428096000.0L) + 1.0L/1280987136000.0L) - 1.0L/1961511552000.0L) - 31.0L/380414361600.0L) + 23.0L/640493568000.0L) + 3947.0L/905313024000.0L) - 757.0L/603542016000.0L) - 16153.0L/125411328000.0L) + 2021.0L/87787929600.0L) + 1131407.0L/536481792000.0L) - 4679.0L/21555072000.0L) - 15305183.0L/840647808000.0L) + 3739217.0L/3923023104000.0L) + 83131.0L/1132185600.0L) - 63397.0L/40864824000.0L) - 40207.0L/381180800.0L) + 1.0L/1969110.0L) + 1.0L/43758.0L;
poly_val[19] = pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*((1.0L/6402373705728000.0L)*pow(x, 2) - 1.0L/25107347865600.0L) + 17.0L/4184557977600.0L) - 619.0L/2897001676800.0L) + 5473.0L/877879296000.0L) - 21713.0L/214592716800.0L) + 5839219.0L/6725182464000.0L) - 364919.0L/104613949440.0L) + 514639.0L/102918816000.0L) - 1.0L/923780.0L;
break;
case 2:
poly_val[0] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/355687428096000.0L*x + 1.0L/20922789888000.0L) + 1.0L/3923023104000.0L) - 1.0L/130767436800.0L) + 1.0L/298896998400.0L) + 23.0L/49268736000.0L) - 313.0L/301771008000.0L) - 757.0L/54867456000.0L) + 3611.0L/87787929600.0L) + 2021.0L/9754214400.0L) - 45757.0L/67060224000.0L) - 4679.0L/3079296000.0L) + 1414271.0L/280215936000.0L) + 3739217.0L/784604620800.0L) - 957311.0L/65383718400.0L) - 63397.0L/13621608000.0L) + 56311.0L/5145940800.0L) + 1.0L/1969110.0L;
poly_val[1] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((19.0L/355687428096000.0L)*x - 1.0L/1162377216000.0L) - 47.0L/7846046208000.0L) + 1.0L/6706022400.0L) + 1.0L/27172454400.0L) - 79.0L/8211456000.0L) + 20827.0L/1207084032000.0L) + 1801.0L/6096384000.0L) - 68909.0L/87787929600.0L) - 7403.0L/1625702400.0L) + 1846049.0L/134120448000.0L) + 139499.0L/4105728000.0L) - 117554201.0L/1120863744000.0L) - 1043321.0L/9686476800.0L) + 3677437.0L/11887948800.0L) + 10949.0L/103488000.0L) - 599971.0L/2572970400.0L) - 9.0L/777920.0L;
poly_val[2] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-19.0L/39520825344000.0L*x + 17.0L/2324754432000.0L) + 83.0L/1307674368000.0L) - 59.0L/43589145600.0L) - 1.0L/696729600.0L) + 10691.0L/114960384000.0L) - 167.0L/1397088000.0L) - 18301.0L/6096384000.0L) + 200467.0L/29262643200.0L) + 156031.0L/3251404800.0L) - 2913091.0L/22353408000.0L) - 2637347.0L/7185024000.0L) + 16131677.0L/15567552000.0L) + 11448761.0L/9686476800.0L) - 2067001.0L/660441600.0L) - 196909.0L/168168000.0L) + 105031.0L/43982400.0L) + 9.0L/70070.0L;
poly_val[3] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((19.0L/6974263296000.0L)*x - 17.0L/435891456000.0L) - 17.0L/41513472000.0L) + 83.0L/10897286400.0L) + 137.0L/9057484800.0L) - 571.0L/1026432000.0L) + 151451.0L/402361344000.0L) + 43693.0L/2286144000.0L) - 146939.0L/4180377600.0L) - 65377.0L/203212800.0L) + 33971617.0L/44706816000.0L) + 1311029.0L/513216000.0L) - 2408863267.0L/373621248000.0L) - 550937221.0L/65383718400.0L) + 4896967.0L/242611200.0L) + 9601741.0L/1135134000.0L) - 9495901.0L/605404800.0L) - 2.0L/2145.0L;
poly_val[4] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-19.0L/1743565824000.0L*x + 17.0L/116237721600.0L) + 17.0L/9340531200.0L) - 1.0L/33530112.0L) - 83.0L/922521600.0L) + 1889.0L/821145600.0L) + 199.0L/2514758400.0L) - 5147.0L/60963840.0L) + 115103.0L/1045094400.0L) + 248167.0L/162570240.0L) - 1105981.0L/372556800.0L) - 131977.0L/10264320.0L) + 654411847.0L/23351328000.0L) + 21379409.0L/484323840.0L) - 14487307.0L/155675520.0L) - 5861.0L/129360.0L) + 9397117.0L/126126000.0L) + 18.0L/3575.0L;
poly_val[5] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((19.0L/581188608000.0L)*x - 17.0L/41513472000.0L) - 3893.0L/653837184000.0L) + 269.0L/3113510400.0L) + 8941.0L/24908083200.0L) - 14321.0L/2052864000.0L) - 65903.0L/11176704000.0L) + 59273.0L/217728000.0L) - 1335239.0L/7315660800.0L) - 309691.0L/58060800.0L) + 85570171.0L/11176704000.0L) + 50693869.0L/1026432000.0L) - 1363537171.0L/15567552000.0L) - 63114127.0L/345945600.0L) + 1177851371.0L/3632428800.0L) + 9381241.0L/48048000.0L) - 9222481.0L/33633600.0L) - 63.0L/2860.0L;
poly_val[6] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-19.0L/249080832000.0L*x + 17.0L/19160064000.0L) + 697.0L/46702656000.0L) - 23.0L/119750400.0L) - 3697.0L/3558297600.0L) + 66001.0L/4105728000.0L) + 101419.0L/3592512000.0L) - 431303.0L/653184000.0L) - 2027.0L/49766400.0L) + 1618681.0L/116121600.0L) - 9174989.0L/798336000.0L) - 36951877.0L/256608000.0L) + 152331367.0L/833976000.0L) + 444183529.0L/718502400.0L) - 2003176661.0L/2335132800.0L) - 9072541.0L/12474000.0L) + 8860861.0L/10810800.0L) + 14.0L/165.0L;
poly_val[7] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((19.0L/134120448000.0L)*x - 17.0L/11176704000.0L) - 493.0L/16765056000.0L) + 281.0L/838252800.0L) + 397.0L/174182400.0L) - 29549.0L/1026432000.0L) - 8031673.0L/100590336000.0L) + 936041.0L/762048000.0L) + 2668157.0L/2438553600.0L) - 5586823.0L/203212800.0L) + 35775989.0L/11176704000.0L) + 160253299.0L/513216000.0L) - 739625771.0L/3592512000.0L) - 294484709.0L/186278400.0L) + 107051279.0L/76204800.0L) + 8190541.0L/3234000.0L) - 7873021.0L/3880800.0L) - 18.0L/55.0L;
poly_val[8] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-19.0L/89413632000.0L*x + 17.0L/8128512000.0L) + 2329.0L/50295168000.0L) - 71.0L/152409600.0L) - 14911.0L/3832012800.0L) + 30329.0L/746496000.0L) + 32903.0L/206976000.0L) - 5408447.0L/3048192000.0L) - 47309593.0L/14631321600.0L) + 66976673.0L/1625702400.0L) + 315424951.0L/11176704000.0L) - 23225297.0L/46656000.0L) - 24429967.0L/1197504000.0L) + 95749481.0L/33868800.0L) - 231950053.0L/279417600.0L) - 3427741.0L/588000.0L) + 2792701.0L/1293600.0L) + 9.0L/5.0L;
poly_val[9] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((19.0L/73156608000.0L)*x - 17.0L/7315660800.0L) - 323.0L/5486745600.0L) + 19.0L/36578304.0L) + 5491.0L/1045094400.0L) - 71383.0L/1567641600.0L) - 2599181.0L/10973491200.0L) + 2199307.0L/1097349120.0L) + 252792397.0L/43893964800.0L) - 22981127.0L/487710720.0L) - 91172887.0L/1219276800.0L) + 91172887.0L/156764160.0L) + 1886067737.0L/3919104000.0L) - 1886067737.0L/548674560.0L) - 117868837.0L/91445760.0L) + 117868837.0L/15240960.0L) + 9778141.0L/10584000.0L) - 9778141.0L/3175200.0L;
poly_val[10] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-19.0L/73156608000.0L*x + 17.0L/8128512000.0L) + 17.0L/279936000.0L) - 71.0L/152409600.0L) - 5917.0L/1045094400.0L) + 30329.0L/746496000.0L) + 1863329.0L/6858432000.0L) - 5408447.0L/3048192000.0L) - 45384823.0L/6270566400.0L) + 66976673.0L/1625702400.0L) + 328397227.0L/3048192000.0L) - 23225297.0L/46656000.0L) - 418657681.0L/489888000.0L) + 95749481.0L/33868800.0L) + 103649251.0L/32659200.0L) - 3427741.0L/588000.0L) - 4062781.0L/1058400.0L) + 9.0L/5.0L;
poly_val[11] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((19.0L/89413632000.0L)*x - 17.0L/11176704000.0L) - 731.0L/14370048000.0L) + 281.0L/838252800.0L) + 18721.0L/3832012800.0L) - 29549.0L/1026432000.0L) - 5435131.0L/22353408000.0L) + 936041.0L/762048000.0L) + 14128099.0L/2090188800.0L) - 5586823.0L/203212800.0L) - 2350874153.0L/22353408000.0L) + 160253299.0L/513216000.0L) + 4129613923.0L/4790016000.0L) - 294484709.0L/186278400.0L) - 252469003.0L/79833600.0L) + 8190541.0L/3234000.0L) + 8508061.0L/2587200.0L) - 18.0L/55.0L;
poly_val[12] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-19.0L/134120448000.0L*x + 17.0L/19160064000.0L) + 289.0L/8382528000.0L) - 23.0L/119750400.0L) - 587.0L/174182400.0L) + 66001.0L/4105728000.0L) + 1072123.0L/6286896000.0L) - 431303.0L/653184000.0L) - 35057611.0L/7315660800.0L) + 1618681.0L/116121600.0L) + 414889873.0L/5588352000.0L) - 36951877.0L/256608000.0L) - 1053508997.0L/1796256000.0L) + 444183529.0L/718502400.0L) + 221696239.0L/114307200.0L) - 9072541.0L/12474000.0L) - 9284221.0L/5821200.0L) + 14.0L/165.0L;
poly_val[13] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((19.0L/249080832000.0L)*x - 17.0L/41513472000.0L) - 1751.0L/93405312000.0L) + 269.0L/3113510400.0L) + 199.0L/107827200.0L) - 14321.0L/2052864000.0L) - 1343389.0L/14370048000.0L) + 59273.0L/217728000.0L) + 388021.0L/149299200.0L) - 309691.0L/58060800.0L) - 6924367.0L/177408000.0L) + 50693869.0L/1026432000.0L) + 965782157.0L/3335904000.0L) - 63114127.0L/345945600.0L) - 122428519.0L/141523200.0L) + 9381241.0L/48048000.0L) + 9540001.0L/14414400.0L) - 63.0L/2860.0L;
poly_val[14] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-19.0L/581188608000.0L*x + 17.0L/116237721600.0L) + 527.0L/65383718400.0L) - 1.0L/33530112.0L) - 1793.0L/2264371200.0L) + 1889.0L/821145600.0L) + 22171.0L/558835200.0L) - 5147.0L/60963840.0L) - 7876837.0L/7315660800.0L) + 248167.0L/162570240.0L) + 17344541.0L/1117670400.0L) - 131977.0L/10264320.0L) - 26463329.0L/243243000.0L) + 21379409.0L/484323840.0L) + 10216631.0L/33022080.0L) - 5861.0L/129360.0L) - 9651133.0L/42042000.0L) + 18.0L/3575.0L;
poly_val[15] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((19.0L/1743565824000.0L)*x - 17.0L/435891456000.0L) - 1751.0L/653837184000.0L) + 83.0L/10897286400.0L) + 499.0L/1916006400.0L) - 571.0L/1026432000.0L) - 1287469.0L/100590336000.0L) + 43693.0L/2286144000.0L) + 822289.0L/2438553600.0L) - 65377.0L/203212800.0L) - 52326023.0L/11176704000.0L) + 1311029.0L/513216000.0L) + 369975061.0L/11675664000.0L) - 550937221.0L/65383718400.0L) - 2869906997.0L/32691859200.0L) + 9601741.0L/1135134000.0L) + 746737.0L/11642400.0L) - 2.0L/2145.0L;
poly_val[16] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-19.0L/6974263296000.0L*x + 17.0L/2324754432000.0L) + 289.0L/435891456000.0L) - 59.0L/43589145600.0L) - 6317.0L/99632332800.0L) + 10691.0L/114960384000.0L) + 306049.0L/100590336000.0L) - 18301.0L/6096384000.0L) - 760069.0L/9754214400.0L) + 156031.0L/3251404800.0L) + 23540441.0L/22353408000.0L) - 2637347.0L/7185024000.0L) - 651515867.0L/93405312000.0L) + 11448761.0L/9686476800.0L) + 414884083.0L/21794572800.0L) - 196909.0L/168168000.0L) - 1391323.0L/100900800.0L) + 9.0L/70070.0L;
poly_val[17] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((19.0L/39520825344000.0L)*x - 1.0L/1162377216000.0L) - 43.0L/373621248000.0L) + 1.0L/6706022400.0L) + 1073.0L/99632332800.0L) - 79.0L/8211456000.0L) - 7517.0L/14902272000.0L) + 1801.0L/6096384000.0L) + 52799.0L/4180377600.0L) - 7403.0L/1625702400.0L) - 7491133.0L/44706816000.0L) + 139499.0L/4105728000.0L) + 136333979.0L/124540416000.0L) - 1043321.0L/9686476800.0L) - 6144839.0L/2075673600.0L) + 10949.0L/103488000.0L) + 1219787.0L/571771200.0L) - 9.0L/777920.0L;
poly_val[18] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-19.0L/355687428096000.0L*x + 1.0L/20922789888000.0L) + 1.0L/80061696000.0L) - 1.0L/130767436800.0L) - 31.0L/27172454400.0L) + 23.0L/49268736000.0L) + 3947.0L/75442752000.0L) - 757.0L/54867456000.0L) - 16153.0L/12541132800.0L) + 2021.0L/9754214400.0L) + 1131407.0L/67060224000.0L) - 4679.0L/3079296000.0L) - 15305183.0L/140107968000.0L) + 3739217.0L/784604620800.0L) + 83131.0L/283046400.0L) - 63397.0L/13621608000.0L) - 40207.0L/190590400.0L) + 1.0L/1969110.0L;
poly_val[19] = x*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*((1.0L/355687428096000.0L)*pow(x, 2) - 1.0L/1569209241600.0L) + 17.0L/298896998400.0L) - 619.0L/241416806400.0L) + 5473.0L/87787929600.0L) - 21713.0L/26824089600.0L) + 5839219.0L/1120863744000.0L) - 364919.0L/26153487360.0L) + 514639.0L/51459408000.0L);
break;
}
}
void beta_Lagrange_n10(int deriv, double x, double *poly_val) {
switch(deriv)
{
case 0:
poly_val[0] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/51090942171709440000.0L*x + 1.0L/2432902008176640000.0L) + 1.0L/291948240981196800.0L) - 1.0L/8536498274304000.0L) - 1.0L/32011868528640000.0L) + 17.0L/1255367393280000.0L) - 503.0L/15817629155328000.0L) - 619.0L/753220435968000.0L) + 66779.0L/22596613079040000.0L) + 5473.0L/193133445120000.0L) - 14099.0L/115880067072000.0L) - 21713.0L/38626689024000.0L) + 209515049.0L/79088145776640000.0L) + 5839219.0L/941525544960000.0L) - 4353367.0L/141228831744000.0L) - 364919.0L/10461394944000.0L) + 238420331.0L/1333827855360000.0L) + 514639.0L/6175128960000.0L) - 106924511.0L/246387645504000.0L) - 1.0L/18475600.0L) + 1.0L/3527160.0L);
poly_val[1] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/2432902008176640000.0L)*x - 1.0L/121645100408832000.0L) - 41.0L/486580401635328000.0L) + 1.0L/400148356608000.0L) + 59.0L/21341245685760000.0L) - 19.0L/62768369664000.0L) + 59.0L/107602919424000.0L) + 1789.0L/94152554496000.0L) - 455633.0L/7532204359680000.0L) - 19447.0L/28970016768000.0L) + 102191.0L/38626689024000.0L) + 32699.0L/2414168064000.0L) - 112017667.0L/1883051089920000.0L) - 3558293.0L/23538138624000.0L) + 66422087.0L/94152554496000.0L) + 5040143.0L/5884534656000.0L) - 306556247.0L/74101547520000.0L) - 11419.0L/5557616064.0L) + 790297.0L/78218300160.0L) + 5.0L/3741309.0L) - 1.0L/151164.0L);
poly_val[2] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/243290200817664000.0L*x + 1.0L/12804747411456000.0L) + 233.0L/243290200817664000.0L) - 107.0L/4268249137152000.0L) - 37.0L/711374856192000.0L) + 401.0L/125536739328000.0L) - 1429.0L/376610217984000.0L) - 78713.0L/376610217984000.0L) + 426961.0L/753220435968000.0L) + 147211.0L/19313344512000.0L) - 173941.0L/6437781504000.0L) - 3039931.0L/19313344512000.0L) + 3416723.0L/5380145971200.0L) + 336140003.0L/188305108992000.0L) - 363897701.0L/47076277248000.0L) - 53447083.0L/5230697472000.0L) + 1023220943.0L/22230464256000.0L) + 487121.0L/19760412672.0L) - 5318641.0L/46930980096.0L) - 5.0L/311168.0L) + 5.0L/67184.0L);
poly_val[3] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/38414242234368000.0L)*x - 1.0L/2134124568576000.0L) - 37.0L/5487748890624000.0L) + 1.0L/6351561216000.0L) + 1.0L/2010164428800.0L) - 1.0L/47443968000.0L) + 10993.0L/1129830653952000.0L) + 45439.0L/31384184832000.0L) - 144587.0L/46115536896000.0L) - 25313.0L/459841536000.0L) + 201319.0L/1182449664000.0L) + 6427.0L/5474304000.0L) - 2409537919.0L/564915326976000.0L) - 106900847.0L/7846046208000.0L) + 1087177561.0L/20175547392000.0L) + 2464771.0L/31135104000.0L) - 34334629.0L/104696064000.0L) - 809.0L/4200768.0L) + 3026437.0L/3705077376.0L) + 15.0L/119119.0L) - 5.0L/9282.0L);
poly_val[4] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/8536498274304000.0L*x + 1.0L/502146957312000.0L) + 283.0L/8536498274304000.0L) - 349.0L/502146957312000.0L) - 359.0L/118562476032000.0L) + 8147.0L/83691159552000.0L) + 9059.0L/251073478656000.0L) - 1767109.0L/251073478656000.0L) + 1077763.0L/100429391462400.0L) + 10896041.0L/38626689024000.0L) - 9330647.0L/12875563008000.0L) - 81091903.0L/12875563008000.0L) + 5021638757.0L/251073478656000.0L) + 4749355073.0L/62768369664000.0L) - 524300089.0L/1961511552000.0L) - 14119093201.0L/31384184832000.0L) + 149510878211.0L/88921857024000.0L) + 1933049.0L/1743565824.0L) - 21051859.0L/4940103168.0L) - 5.0L/6864.0L) + 5.0L/1768.0L);
poly_val[5] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/2510734786560000.0L)*x - 1.0L/156920924160000.0L) - 61.0L/502146957312000.0L) + 1.0L/435891456000.0L) + 5441.0L/418455797760000.0L) - 8741.0L/26153487360000.0L) - 109829.0L/251073478656000.0L) + 199141.0L/7846046208000.0L) - 49745219.0L/2510734786560000.0L) - 1447093.0L/1341204480000.0L) + 5418317.0L/2575112601600.0L) + 5165621.0L/201180672000.0L) - 42621719501.0L/627683696640000.0L) - 3194891431.0L/9807557760000.0L) + 31196765993.0L/31384184832000.0L) + 109639993.0L/54486432000.0L) - 28770379499.0L/4358914560000.0L) - 9587629.0L/1891890000.0L) + 104193839.0L/6054048000.0L) + 12.0L/3575.0L) - 3.0L/260.0L);
poly_val[6] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/941525544960000.0L*x + 1.0L/62768369664000.0L) + 1.0L/2897001676800.0L) - 41.0L/6974263296000.0L) - 6551.0L/156920924160000.0L) + 9257.0L/10461394944000.0L) + 39229.0L/18830510899200.0L) - 2202649.0L/31384184832000.0L) - 4562501.0L/941525544960000.0L) + 1695689.0L/536481792000.0L) - 747037.0L/193133445120.0L) - 130451323.0L/1609445376000.0L) + 2397003491.0L/14711336640000.0L) + 17611561711.0L/15692092416000.0L) - 253178371.0L/90531302400.0L) - 3240137519.0L/435891456000.0L) + 8379111271.0L/408648240000.0L) + 1888949.0L/96864768.0L) - 20460919.0L/363242880.0L) - 15.0L/1144.0L) + 1.0L/26.0L);
poly_val[7] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/439378587648000.0L)*x - 1.0L/31384184832000.0L) - 1.0L/1280987136000.0L) + 47.0L/3923023104000.0L) + 1087.0L/10461394944000.0L) - 9677.0L/5230697472000.0L) - 1427683.0L/219689293824000.0L) + 1192853.0L/7846046208000.0L) + 1397573.0L/8966909952000.0L) - 17379821.0L/2414168064000.0L) + 499573.0L/178827264000.0L) + 39926233.0L/201180672000.0L) - 5487440311.0L/21968929382400.0L) - 5986965079.0L/1961511552000.0L) + 3098878547.0L/560431872000.0L) + 11431199701.0L/490377888000.0L) - 16397134673.0L/326918592000.0L) - 1827209.0L/27243216.0L) + 19675939.0L/127135008.0L) + 20.0L/429.0L) - 10.0L/91.0L);
poly_val[8] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/251073478656000.0L*x + 1.0L/19313344512000.0L) + 359.0L/251073478656000.0L) - 127.0L/6437781504000.0L) - 859.0L/4184557977600.0L) + 3329.0L/1072963584000.0L) + 266857.0L/17933819904000.0L) - 2527141.0L/9656672256000.0L) - 137469049.0L/251073478656000.0L) + 82887751.0L/6437781504000.0L) + 46068893.0L/6437781504000.0L) - 269158459.0L/715309056000.0L) + 18550682911.0L/125536739328000.0L) + 15347344853.0L/2414168064000.0L) - 49953999287.0L/7846046208000.0L) - 7656977201.0L/134120448000.0L) + 69369468211.0L/871782912000.0L) + 1650809.0L/7451136.0L) - 17523859.0L/48432384.0L) - 15.0L/88.0L) + 15.0L/52.0L);
poly_val[9] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/173820100608000.0L)*x - 1.0L/14485008384000.0L) - 373.0L/173820100608000.0L) + 1.0L/37721376000.0L) + 9473.0L/28970016768000.0L) - 10177.0L/2414168064000.0L) - 2280613.0L/86910050304000.0L) + 1308227.0L/3621252096000.0L) + 41217097.0L/34764020121600.0L) - 87882491.0L/4828336128000.0L) - 1699387243.0L/57940033536000.0L) + 666523661.0L/1207084032000.0L) + 1995302329.0L/6207860736000.0L) - 8990599279.0L/905313024000.0L) + 8279706833.0L/10863756288000.0L) + 2517135701.0L/25147584000.0L) - 15120010711.0L/301771008000.0L) - 698249.0L/1397088.0L) + 6410659.0L/16765056.0L) + 10.0L/11.0L) - 5.0L/6.0L);
poly_val[10] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/144850083840000.0L*x + 1.0L/13168189440000.0L) + 1.0L/376233984000.0L) - 11.0L/376233984000.0L) - 19.0L/44789760000.0L) + 209.0L/44789760000.0L) + 48127.0L/1316818944000.0L) - 529397.0L/1316818944000.0L) - 3491953.0L/1881169920000.0L) + 38411483.0L/1881169920000.0L) + 11240723.0L/197074944000.0L) - 11240723.0L/17915904000.0L) - 3451088009.0L/3292047360000.0L) + 37961968099.0L/3292047360000.0L) + 258720739.0L/23514624000.0L) - 2845928129.0L/23514624000.0L) - 27988159.0L/466560000.0L) + 307869749.0L/466560000.0L) + 178939.0L/1270080.0L) - 1968329.0L/1270080.0L) - 1.0L/11.0L) + 1;
poly_val[11] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/144850083840000.0L)*x - 1.0L/14485008384000.0L) - 79.0L/28970016768000.0L) + 1.0L/37721376000.0L) + 403.0L/894136320000.0L) - 10177.0L/2414168064000.0L) - 590459.0L/14485008384000.0L) + 1308227.0L/3621252096000.0L) + 321209461.0L/144850083840000.0L) - 87882491.0L/4828336128000.0L) - 242186803.0L/3218890752000.0L) + 666523661.0L/1207084032000.0L) + 57957677929.0L/36212520960000.0L) - 8990599279.0L/905313024000.0L) - 37902695461.0L/1810626048000.0L) + 2517135701.0L/25147584000.0L) + 40256974711.0L/251475840000.0L) - 698249.0L/1397088.0L) - 8950819.0L/13970880.0L) + 10.0L/11.0L) + 1);
poly_val[12] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/173820100608000.0L*x + 1.0L/19313344512000.0L) + 403.0L/173820100608000.0L) - 127.0L/6437781504000.0L) - 1423.0L/3621252096000.0L) + 3329.0L/1072963584000.0L) + 3186283.0L/86910050304000.0L) - 2527141.0L/9656672256000.0L) - 359857457.0L/173820100608000.0L) + 82887751.0L/6437781504000.0L) + 4245956653.0L/57940033536000.0L) - 269158459.0L/715309056000.0L) - 28265888347.0L/17382010060800.0L) + 15347344853.0L/2414168064000.0L) + 7429174631.0L/339492384000.0L) - 7656977201.0L/134120448000.0L) - 99084030211.0L/603542016000.0L) + 1650809.0L/7451136.0L) + 18793939.0L/33530112.0L) - 15.0L/88.0L) - 5.0L/12.0L);
poly_val[13] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/251073478656000.0L)*x - 1.0L/31384184832000.0L) - 409.0L/251073478656000.0L) + 47.0L/3923023104000.0L) + 29.0L/103322419200.0L) - 9677.0L/5230697472000.0L) - 3343729.0L/125536739328000.0L) + 1192853.0L/7846046208000.0L) + 383394269.0L/251073478656000.0L) - 17379821.0L/2414168064000.0L) - 350882963.0L/6437781504000.0L) + 39926233.0L/201180672000.0L) + 75332922187.0L/62768369664000.0L) - 5986965079.0L/1961511552000.0L) - 243294646411.0L/15692092416000.0L) + 11431199701.0L/490377888000.0L) + 136706450711.0L/1307674368000.0L) - 1827209.0L/27243216.0L) - 20522659.0L/72648576.0L) + 20.0L/429.0L) + 5.0L/26.0L);
poly_val[14] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/439378587648000.0L*x + 1.0L/62768369664000.0L) + 59.0L/62768369664000.0L) - 41.0L/6974263296000.0L) - 1709.0L/10461394944000.0L) + 9257.0L/10461394944000.0L) + 3424573.0L/219689293824000.0L) - 2202649.0L/31384184832000.0L) - 2241307.0L/2510734786560.0L) + 1695689.0L/536481792000.0L) + 50611753.0L/1609445376000.0L) - 130451323.0L/1609445376000.0L) - 36787589639.0L/54922323456000.0L) + 17611561711.0L/15692092416000.0L) + 7960300589.0L/980755776000.0L) - 3240137519.0L/435891456000.0L) - 2697612881.0L/54486432000.0L) + 1888949.0L/96864768.0L) + 21095959.0L/169513344.0L) - 15.0L/1144.0L) - 15.0L/182.0L);
poly_val[15] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/941525544960000.0L)*x - 1.0L/156920924160000.0L) - 83.0L/188305108992000.0L) + 1.0L/435891456000.0L) + 12041.0L/156920924160000.0L) - 8741.0L/26153487360000.0L) - 2803.0L/384296140800.0L) + 199141.0L/7846046208000.0L) + 388364981.0L/941525544960000.0L) - 1447093.0L/1341204480000.0L) - 68416553.0L/4828336128000.0L) + 5165621.0L/201180672000.0L) + 68180850949.0L/235381386240000.0L) - 3194891431.0L/9807557760000.0L) - 39090845489.0L/11769069312000.0L) + 109639993.0L/54486432000.0L) + 31531616651.0L/1634592960000.0L) - 9587629.0L/1891890000.0L) - 106733999.0L/2270268000.0L) + 12.0L/3575.0L) + 2.0L/65.0L);
poly_val[16] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/2510734786560000.0L*x + 1.0L/502146957312000.0L) + 83.0L/502146957312000.0L) - 349.0L/502146957312000.0L) - 461.0L/16094453760000.0L) + 8147.0L/83691159552000.0L) + 676043.0L/251073478656000.0L) - 1767109.0L/251073478656000.0L) - 374906921.0L/2510734786560000.0L) + 10896041.0L/38626689024000.0L) + 21386987.0L/4291854336000.0L) - 81091903.0L/12875563008000.0L) - 17623242779.0L/179338199040000.0L) + 4749355073.0L/62768369664000.0L) + 17084781061.0L/15692092416000.0L) - 14119093201.0L/31384184832000.0L) - 12393013247.0L/2011806720000.0L) + 1933049.0L/1743565824.0L) + 21475219.0L/1452971520.0L) - 5.0L/6864.0L) - 1.0L/104.0L);
poly_val[17] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/8536498274304000.0L)*x - 1.0L/2134124568576000.0L) - 59.0L/1219499753472000.0L) + 1.0L/6351561216000.0L) + 241.0L/29035708416000.0L) - 1.0L/47443968000.0L) - 192749.0L/251073478656000.0L) + 45439.0L/31384184832000.0L) + 2986523.0L/71735279616000.0L) - 25313.0L/459841536000.0L) - 355567.0L/262766592000.0L) + 6427.0L/5474304000.0L) + 652948939.0L/25107347865600.0L) - 106900847.0L/7846046208000.0L) - 1264641073.0L/4483454976000.0L) + 2464771.0L/31135104000.0L) + 475474177.0L/302455296000.0L) - 809.0L/4200768.0L) - 3078277.0L/823350528.0L) + 15.0L/119119.0L) + 15.0L/6188.0L);
poly_val[18] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/38414242234368000.0L*x + 1.0L/12804747411456000.0L) + 409.0L/38414242234368000.0L) - 107.0L/4268249137152000.0L) - 461.0L/256094948229120.0L) + 401.0L/125536739328000.0L) + 184577.0L/1129830653952000.0L) - 78713.0L/376610217984000.0L) - 19594717.0L/2259661307904000.0L) + 147211.0L/19313344512000.0L) + 15994499.0L/57940033536000.0L) - 3039931.0L/19313344512000.0L) - 2944400801.0L/564915326976000.0L) + 336140003.0L/188305108992000.0L) + 7876103813.0L/141228831744000.0L) - 53447083.0L/5230697472000.0L) - 20537220167.0L/66691392768000.0L) + 487121.0L/19760412672.0L) + 5398021.0L/7410154752.0L) - 5.0L/311168.0L) - 5.0L/10608.0L);
poly_val[19] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/243290200817664000.0L)*x - 1.0L/121645100408832000.0L) - 31.0L/18714630832128000.0L) + 1.0L/400148356608000.0L) + 587.0L/2134124568576000.0L) - 19.0L/62768369664000.0L) - 9221.0L/376610217984000.0L) + 1789.0L/94152554496000.0L) + 192251.0L/150644087193600.0L) - 19447.0L/28970016768000.0L) - 772547.0L/19313344512000.0L) + 32699.0L/2414168064000.0L) + 140484011.0L/188305108992000.0L) - 3558293.0L/23538138624000.0L) - 28648583.0L/3621252096000.0L) + 5040143.0L/5884534656000.0L) + 965344741.0L/22230464256000.0L) - 11419.0L/5557616064.0L) - 2402251.0L/23465490048.0L) + 5.0L/3741309.0L) + 5.0L/75582.0L);
poly_val[20] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/2432902008176640000.0L*x + 1.0L/2432902008176640000.0L) + 79.0L/486580401635328000.0L) - 1.0L/8536498274304000.0L) - 47.0L/1778437140480000.0L) + 17.0L/1255367393280000.0L) + 1741.0L/753220435968000.0L) - 619.0L/753220435968000.0L) - 894347.0L/7532204359680000.0L) + 5473.0L/193133445120000.0L) + 15791.0L/4291854336000.0L) - 21713.0L/38626689024000.0L) - 256228801.0L/3766102179840000.0L) + 5839219.0L/941525544960000.0L) + 421973.0L/588453465600.0L) - 364919.0L/10461394944000.0L) - 1743050333.0L/444609285120000.0L) + 514639.0L/6175128960000.0L) + 108194591.0L/11732745024000.0L) - 1.0L/18475600.0L) - 1.0L/167960.0L);
poly_val[21] = x*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*((1.0L/51090942171709440000.0L)*pow(x, 2) - 1.0L/132703745900544000.0L) + 1.0L/831477104640000.0L) - 149.0L/1437966286848000.0L) + 10811.0L/2054237552640000.0L) - 2677.0L/16554295296000.0L) + 10684483.0L/3594915717120000.0L) - 800993.0L/25677969408000.0L) + 1473061.0L/8661219840000.0L) - 178939.0L/447977537280.0L) + 1.0L/3879876.0L);
break;
case 1:
poly_val[0] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/2432902008176640000.0L*x + 1.0L/121645100408832000.0L) + 1.0L/15365696893747200.0L) - 1.0L/474249904128000.0L) - 1.0L/1883051089920000.0L) + 17.0L/78460462080000.0L) - 503.0L/1054508610355200.0L) - 619.0L/53801459712000.0L) + 66779.0L/1738201006080000.0L) + 5473.0L/16094453760000.0L) - 14099.0L/10534551552000.0L) - 21713.0L/3862668902400.0L) + 209515049.0L/8787571752960000.0L) + 5839219.0L/117690693120000.0L) - 4353367.0L/20175547392000.0L) - 364919.0L/1743565824000.0L) + 238420331.0L/266765571072000.0L) + 514639.0L/1543782240000.0L) - 106924511.0L/82129215168000.0L) - 1.0L/9237800.0L) + 1.0L/3527160.0L;
poly_val[1] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/115852476579840000.0L)*x - 1.0L/6082255020441600.0L) - 41.0L/25609494822912000.0L) + 1.0L/22230464256000.0L) + 59.0L/1255367393280000.0L) - 19.0L/3923023104000.0L) + 59.0L/7173527961600.0L) + 1789.0L/6725182464000.0L) - 455633.0L/579400335360000.0L) - 19447.0L/2414168064000.0L) + 102191.0L/3511517184000.0L) + 32699.0L/241416806400.0L) - 112017667.0L/209227898880000.0L) - 3558293.0L/2942267328000.0L) + 66422087.0L/13450364928000.0L) + 5040143.0L/980755776000.0L) - 306556247.0L/14820309504000.0L) - 11419.0L/1389404016.0L) + 790297.0L/26072766720.0L) + 10.0L/3741309.0L) - 1.0L/151164.0L;
poly_val[2] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/11585247657984000.0L*x + 1.0L/640237370572800.0L) + 233.0L/12804747411456000.0L) - 107.0L/237124952064000.0L) - 37.0L/41845579776000.0L) + 401.0L/7846046208000.0L) - 1429.0L/25107347865600.0L) - 78713.0L/26900729856000.0L) + 426961.0L/57940033536000.0L) + 147211.0L/1609445376000.0L) - 173941.0L/585252864000.0L) - 3039931.0L/1931334451200.0L) + 3416723.0L/597793996800.0L) + 336140003.0L/23538138624000.0L) - 363897701.0L/6725182464000.0L) - 53447083.0L/871782912000.0L) + 1023220943.0L/4446092851200.0L) + 487121.0L/4940103168.0L) - 5318641.0L/15643660032.0L) - 5.0L/155584.0L) + 5.0L/67184.0L;
poly_val[3] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/1829249630208000.0L)*x - 1.0L/106706228428800.0L) - 703.0L/5487748890624000.0L) + 1.0L/352864512000.0L) + 1.0L/118244966400.0L) - 1.0L/2965248000.0L) + 10993.0L/75322043596800.0L) + 45439.0L/2241727488000.0L) - 144587.0L/3547348992000.0L) - 25313.0L/38320128000.0L) + 201319.0L/107495424000.0L) + 6427.0L/547430400.0L) - 2409537919.0L/62768369664000.0L) - 106900847.0L/980755776000.0L) + 1087177561.0L/2882221056000.0L) + 2464771.0L/5189184000.0L) - 34334629.0L/20939212800.0L) - 809.0L/1050192.0L) + 3026437.0L/1235025792.0L) + 30.0L/119119.0L) - 5.0L/9282.0L;
poly_val[4] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/406499917824000.0L*x + 1.0L/25107347865600.0L) + 5377.0L/8536498274304000.0L) - 349.0L/27897053184000.0L) - 359.0L/6974263296000.0L) + 8147.0L/5230697472000.0L) + 9059.0L/16738231910400.0L) - 1767109.0L/17933819904000.0L) + 1077763.0L/7725337804800.0L) + 10896041.0L/3218890752000.0L) - 9330647.0L/1170505728000.0L) - 81091903.0L/1287556300800.0L) + 5021638757.0L/27897053184000.0L) + 4749355073.0L/7846046208000.0L) - 524300089.0L/280215936000.0L) - 14119093201.0L/5230697472000.0L) + 149510878211.0L/17784371404800.0L) + 1933049.0L/435891456.0L) - 21051859.0L/1646701056.0L) - 5.0L/3432.0L) + 5.0L/1768.0L;
poly_val[5] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/119558799360000.0L)*x - 1.0L/7846046208000.0L) - 1159.0L/502146957312000.0L) + 1.0L/24216192000.0L) + 92497.0L/418455797760000.0L) - 8741.0L/1634592960000.0L) - 109829.0L/16738231910400.0L) + 199141.0L/560431872000.0L) - 49745219.0L/193133445120000.0L) - 1447093.0L/111767040000.0L) + 5418317.0L/234101145600.0L) + 5165621.0L/20118067200.0L) - 42621719501.0L/69742632960000.0L) - 3194891431.0L/1225944720000.0L) + 31196765993.0L/4483454976000.0L) + 109639993.0L/9081072000.0L) - 28770379499.0L/871782912000.0L) - 9587629.0L/472972500.0L) + 104193839.0L/2018016000.0L) + 24.0L/3575.0L) - 3.0L/260.0L;
poly_val[6] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/44834549760000.0L*x + 1.0L/3138418483200.0L) + 19.0L/2897001676800.0L) - 41.0L/387459072000.0L) - 111367.0L/156920924160000.0L) + 9257.0L/653837184000.0L) + 39229.0L/1255367393280.0L) - 2202649.0L/2241727488000.0L) - 4562501.0L/72425041920000.0L) + 1695689.0L/44706816000.0L) - 747037.0L/17557585920.0L) - 130451323.0L/160944537600.0L) + 2397003491.0L/1634592960000.0L) + 17611561711.0L/1961511552000.0L) - 253178371.0L/12933043200.0L) - 3240137519.0L/72648576000.0L) + 8379111271.0L/81729648000.0L) + 1888949.0L/24216192.0L) - 20460919.0L/121080960.0L) - 15.0L/572.0L) + 1.0L/26.0L;
poly_val[7] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/20922789888000.0L)*x - 1.0L/1569209241600.0L) - 19.0L/1280987136000.0L) + 47.0L/217945728000.0L) + 18479.0L/10461394944000.0L) - 9677.0L/326918592000.0L) - 1427683.0L/14645952921600.0L) + 1192853.0L/560431872000.0L) + 1397573.0L/689762304000.0L) - 17379821.0L/201180672000.0L) + 499573.0L/16257024000.0L) + 39926233.0L/20118067200.0L) - 5487440311.0L/2440992153600.0L) - 5986965079.0L/245188944000.0L) + 3098878547.0L/80061696000.0L) + 11431199701.0L/81729648000.0L) - 16397134673.0L/65383718400.0L) - 1827209.0L/6810804.0L) + 19675939.0L/42378336.0L) + 40.0L/429.0L) - 10.0L/91.0L;
poly_val[8] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/11955879936000.0L*x + 1.0L/965667225600.0L) + 6821.0L/251073478656000.0L) - 127.0L/357654528000.0L) - 14603.0L/4184557977600.0L) + 3329.0L/67060224000.0L) + 266857.0L/1195587993600.0L) - 2527141.0L/689762304000.0L) - 137469049.0L/19313344512000.0L) + 82887751.0L/536481792000.0L) + 46068893.0L/585252864000.0L) - 269158459.0L/71530905600.0L) + 18550682911.0L/13948526592000.0L) + 15347344853.0L/301771008000.0L) - 49953999287.0L/1120863744000.0L) - 7656977201.0L/22353408000.0L) + 69369468211.0L/174356582400.0L) + 1650809.0L/1862784.0L) - 17523859.0L/16144128.0L) - 15.0L/44.0L) + 15.0L/52.0L;
poly_val[9] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/8277147648000.0L)*x - 1.0L/724250419200.0L) - 7087.0L/173820100608000.0L) + 1.0L/2095632000.0L) + 161041.0L/28970016768000.0L) - 10177.0L/150885504000.0L) - 2280613.0L/5794003353600.0L) + 1308227.0L/258660864000.0L) + 535822261.0L/34764020121600.0L) - 87882491.0L/402361344000.0L) - 1699387243.0L/5267275776000.0L) + 666523661.0L/120708403200.0L) + 1995302329.0L/689762304000.0L) - 8990599279.0L/113164128000.0L) + 8279706833.0L/1551965184000.0L) + 2517135701.0L/4191264000.0L) - 15120010711.0L/60354201600.0L) - 698249.0L/349272.0L) + 6410659.0L/5588352.0L) + 20.0L/11.0L) - 5.0L/6.0L;
poly_val[10] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/6897623040000.0L*x + 1.0L/658409472000.0L) + 19.0L/376233984000.0L) - 11.0L/20901888000.0L) - 323.0L/44789760000.0L) + 209.0L/2799360000.0L) + 48127.0L/87787929600.0L) - 529397.0L/94058496000.0L) - 45395389.0L/1881169920000.0L) + 38411483.0L/156764160000.0L) + 11240723.0L/17915904000.0L) - 11240723.0L/1791590400.0L) - 3451088009.0L/365783040000.0L) + 37961968099.0L/411505920000.0L) + 258720739.0L/3359232000.0L) - 2845928129.0L/3919104000.0L) - 27988159.0L/93312000.0L) + 307869749.0L/116640000.0L) + 178939.0L/423360.0L) - 1968329.0L/635040.0L) - 1.0L/11.0L;
poly_val[11] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/6897623040000.0L)*x - 1.0L/724250419200.0L) - 1501.0L/28970016768000.0L) + 1.0L/2095632000.0L) + 6851.0L/894136320000.0L) - 10177.0L/150885504000.0L) - 590459.0L/965667225600.0L) + 1308227.0L/258660864000.0L) + 4175722993.0L/144850083840000.0L) - 87882491.0L/402361344000.0L) - 242186803.0L/292626432000.0L) + 666523661.0L/120708403200.0L) + 57957677929.0L/4023613440000.0L) - 8990599279.0L/113164128000.0L) - 37902695461.0L/258660864000.0L) + 2517135701.0L/4191264000.0L) + 40256974711.0L/50295168000.0L) - 698249.0L/349272.0L) - 8950819.0L/4656960.0L) + 20.0L/11.0L) + 1;
poly_val[12] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/8277147648000.0L*x + 1.0L/965667225600.0L) + 7657.0L/173820100608000.0L) - 127.0L/357654528000.0L) - 24191.0L/3621252096000.0L) + 3329.0L/67060224000.0L) + 3186283.0L/5794003353600.0L) - 2527141.0L/689762304000.0L) - 4678146941.0L/173820100608000.0L) + 82887751.0L/536481792000.0L) + 4245956653.0L/5267275776000.0L) - 269158459.0L/71530905600.0L) - 28265888347.0L/1931334451200.0L) + 15347344853.0L/301771008000.0L) + 7429174631.0L/48498912000.0L) - 7656977201.0L/22353408000.0L) - 99084030211.0L/120708403200.0L) + 1650809.0L/1862784.0L) + 18793939.0L/11176704.0L) - 15.0L/44.0L) - 5.0L/12.0L;
poly_val[13] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/11955879936000.0L)*x - 1.0L/1569209241600.0L) - 7771.0L/251073478656000.0L) + 47.0L/217945728000.0L) + 493.0L/103322419200.0L) - 9677.0L/326918592000.0L) - 3343729.0L/8369115955200.0L) + 1192853.0L/560431872000.0L) + 383394269.0L/19313344512000.0L) - 17379821.0L/201180672000.0L) - 350882963.0L/585252864000.0L) + 39926233.0L/20118067200.0L) + 75332922187.0L/6974263296000.0L) - 5986965079.0L/245188944000.0L) - 243294646411.0L/2241727488000.0L) + 11431199701.0L/81729648000.0L) + 136706450711.0L/261534873600.0L) - 1827209.0L/6810804.0L) - 20522659.0L/24216192.0L) + 40.0L/429.0L) + 5.0L/26.0L;
poly_val[14] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/20922789888000.0L*x + 1.0L/3138418483200.0L) + 1121.0L/62768369664000.0L) - 41.0L/387459072000.0L) - 29053.0L/10461394944000.0L) + 9257.0L/653837184000.0L) + 3424573.0L/14645952921600.0L) - 2202649.0L/2241727488000.0L) - 2241307.0L/193133445120.0L) + 1695689.0L/44706816000.0L) + 50611753.0L/146313216000.0L) - 130451323.0L/160944537600.0L) - 36787589639.0L/6102480384000.0L) + 17611561711.0L/1961511552000.0L) + 7960300589.0L/140107968000.0L) - 3240137519.0L/72648576000.0L) - 2697612881.0L/10897286400.0L) + 1888949.0L/24216192.0L) + 21095959.0L/56504448.0L) - 15.0L/572.0L) - 15.0L/182.0L;
poly_val[15] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/44834549760000.0L)*x - 1.0L/7846046208000.0L) - 1577.0L/188305108992000.0L) + 1.0L/24216192000.0L) + 204697.0L/156920924160000.0L) - 8741.0L/1634592960000.0L) - 2803.0L/25619742720.0L) + 199141.0L/560431872000.0L) + 388364981.0L/72425041920000.0L) - 1447093.0L/111767040000.0L) - 68416553.0L/438939648000.0L) + 5165621.0L/20118067200.0L) + 68180850949.0L/26153487360000.0L) - 3194891431.0L/1225944720000.0L) - 39090845489.0L/1681295616000.0L) + 109639993.0L/9081072000.0L) + 31531616651.0L/326918592000.0L) - 9587629.0L/472972500.0L) - 106733999.0L/756756000.0L) + 24.0L/3575.0L) + 2.0L/65.0L;
poly_val[16] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/119558799360000.0L*x + 1.0L/25107347865600.0L) + 1577.0L/502146957312000.0L) - 349.0L/27897053184000.0L) - 7837.0L/16094453760000.0L) + 8147.0L/5230697472000.0L) + 676043.0L/16738231910400.0L) - 1767109.0L/17933819904000.0L) - 374906921.0L/193133445120000.0L) + 10896041.0L/3218890752000.0L) + 21386987.0L/390168576000.0L) - 81091903.0L/1287556300800.0L) - 17623242779.0L/19926466560000.0L) + 4749355073.0L/7846046208000.0L) + 17084781061.0L/2241727488000.0L) - 14119093201.0L/5230697472000.0L) - 12393013247.0L/402361344000.0L) + 1933049.0L/435891456.0L) + 21475219.0L/484323840.0L) - 5.0L/3432.0L) - 1.0L/104.0L;
poly_val[17] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/406499917824000.0L)*x - 1.0L/106706228428800.0L) - 1121.0L/1219499753472000.0L) + 1.0L/352864512000.0L) + 241.0L/1707982848000.0L) - 1.0L/2965248000.0L) - 192749.0L/16738231910400.0L) + 45439.0L/2241727488000.0L) + 2986523.0L/5518098432000.0L) - 25313.0L/38320128000.0L) - 355567.0L/23887872000.0L) + 6427.0L/547430400.0L) + 652948939.0L/2789705318400.0L) - 106900847.0L/980755776000.0L) - 1264641073.0L/640493568000.0L) + 2464771.0L/5189184000.0L) + 475474177.0L/60491059200.0L) - 809.0L/1050192.0L) - 3078277.0L/274450176.0L) + 30.0L/119119.0L) + 15.0L/6188.0L;
poly_val[18] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/1829249630208000.0L*x + 1.0L/640237370572800.0L) + 7771.0L/38414242234368000.0L) - 107.0L/237124952064000.0L) - 461.0L/15064408719360.0L) + 401.0L/7846046208000.0L) + 184577.0L/75322043596800.0L) - 78713.0L/26900729856000.0L) - 19594717.0L/173820100608000.0L) + 147211.0L/1609445376000.0L) + 15994499.0L/5267275776000.0L) - 3039931.0L/1931334451200.0L) - 2944400801.0L/62768369664000.0L) + 336140003.0L/23538138624000.0L) + 7876103813.0L/20175547392000.0L) - 53447083.0L/871782912000.0L) - 20537220167.0L/13338278553600.0L) + 487121.0L/4940103168.0L) + 5398021.0L/2470051584.0L) - 5.0L/155584.0L) - 5.0L/10608.0L;
poly_val[19] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/11585247657984000.0L)*x - 1.0L/6082255020441600.0L) - 31.0L/984980570112000.0L) + 1.0L/22230464256000.0L) + 587.0L/125536739328000.0L) - 19.0L/3923023104000.0L) - 9221.0L/25107347865600.0L) + 1789.0L/6725182464000.0L) + 192251.0L/11588006707200.0L) - 19447.0L/2414168064000.0L) - 772547.0L/1755758592000.0L) + 32699.0L/241416806400.0L) + 140484011.0L/20922789888000.0L) - 3558293.0L/2942267328000.0L) - 28648583.0L/517321728000.0L) + 5040143.0L/980755776000.0L) + 965344741.0L/4446092851200.0L) - 11419.0L/1389404016.0L) - 2402251.0L/7821830016.0L) + 10.0L/3741309.0L) + 5.0L/75582.0L;
poly_val[20] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/115852476579840000.0L*x + 1.0L/121645100408832000.0L) + 79.0L/25609494822912000.0L) - 1.0L/474249904128000.0L) - 47.0L/104613949440000.0L) + 17.0L/78460462080000.0L) + 1741.0L/50214695731200.0L) - 619.0L/53801459712000.0L) - 894347.0L/579400335360000.0L) + 5473.0L/16094453760000.0L) + 15791.0L/390168576000.0L) - 21713.0L/3862668902400.0L) - 256228801.0L/418455797760000.0L) + 5839219.0L/117690693120000.0L) + 421973.0L/84064780800.0L) - 364919.0L/1743565824000.0L) - 1743050333.0L/88921857024000.0L) + 514639.0L/1543782240000.0L) + 108194591.0L/3910915008000.0L) - 1.0L/9237800.0L) - 1.0L/167960.0L;
poly_val[21] = pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*((1.0L/2432902008176640000.0L)*pow(x, 2) - 1.0L/6984407678976000.0L) + 1.0L/48910417920000.0L) - 149.0L/95864419123200.0L) + 10811.0L/158018273280000.0L) - 2677.0L/1504935936000.0L) + 10684483.0L/399435079680000.0L) - 800993.0L/3668281344000.0L) + 1473061.0L/1732243968000.0L) - 178939.0L/149325845760.0L) + 1.0L/3879876.0L;
break;
case 2:
poly_val[0] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/121645100408832000.0L*x + 1.0L/6402373705728000.0L) + 1.0L/853649827430400.0L) - 1.0L/27897053184000.0L) - 1.0L/117690693120000.0L) + 17.0L/5230697472000.0L) - 503.0L/75322043596800.0L) - 619.0L/4138573824000.0L) + 66779.0L/144850083840000.0L) + 5473.0L/1463132160000.0L) - 14099.0L/1053455155200.0L) - 21713.0L/429185433600.0L) + 209515049.0L/1098446469120000.0L) + 5839219.0L/16812956160000.0L) - 4353367.0L/3362591232000.0L) - 364919.0L/348713164800.0L) + 238420331.0L/66691392768000.0L) + 514639.0L/514594080000.0L) - 106924511.0L/41064607584000.0L) - 1.0L/9237800.0L;
poly_val[1] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/5792623828992000.0L)*x - 1.0L/320118685286400.0L) - 41.0L/1422749712384000.0L) + 1.0L/1307674368000.0L) + 59.0L/78460462080000.0L) - 19.0L/261534873600.0L) + 59.0L/512394854400.0L) + 1789.0L/517321728000.0L) - 455633.0L/48283361280000.0L) - 19447.0L/219469824000.0L) + 102191.0L/351151718400.0L) + 32699.0L/26824089600.0L) - 112017667.0L/26153487360000.0L) - 3558293.0L/420323904000.0L) + 66422087.0L/2241727488000.0L) + 5040143.0L/196151155200.0L) - 306556247.0L/3705077376000.0L) - 11419.0L/463134672.0L) + 790297.0L/13036383360.0L) + 10.0L/3741309.0L;
poly_val[2] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/579262382899200.0L*x + 19.0L/640237370572800.0L) + 233.0L/711374856192000.0L) - 107.0L/13948526592000.0L) - 37.0L/2615348736000.0L) + 401.0L/523069747200.0L) - 1429.0L/1793381990400.0L) - 78713.0L/2069286912000.0L) + 426961.0L/4828336128000.0L) + 147211.0L/146313216000.0L) - 173941.0L/58525286400.0L) - 3039931.0L/214592716800.0L) + 3416723.0L/74724249600.0L) + 336140003.0L/3362591232000.0L) - 363897701.0L/1120863744000.0L) - 53447083.0L/174356582400.0L) + 1023220943.0L/1111523212800.0L) + 487121.0L/1646701056.0L) - 5318641.0L/7821830016.0L) - 5.0L/155584.0L;
poly_val[3] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/91462481510400.0L)*x - 19.0L/106706228428800.0L) - 703.0L/304874938368000.0L) + 1.0L/20756736000.0L) + 1.0L/7390310400.0L) - 1.0L/197683200.0L) + 10993.0L/5380145971200.0L) + 45439.0L/172440576000.0L) - 144587.0L/295612416000.0L) - 25313.0L/3483648000.0L) + 201319.0L/10749542400.0L) + 6427.0L/60825600.0L) - 2409537919.0L/7846046208000.0L) - 106900847.0L/140107968000.0L) + 1087177561.0L/480370176000.0L) + 2464771.0L/1037836800.0L) - 34334629.0L/5234803200.0L) - 809.0L/350064.0L) + 3026437.0L/617512896.0L) + 30.0L/119119.0L;
poly_val[4] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/20324995891200.0L*x + 19.0L/25107347865600.0L) + 5377.0L/474249904128000.0L) - 5933.0L/27897053184000.0L) - 359.0L/435891456000.0L) + 8147.0L/348713164800.0L) + 9059.0L/1195587993600.0L) - 1767109.0L/1379524608000.0L) + 1077763.0L/643778150400.0L) + 10896041.0L/292626432000.0L) - 9330647.0L/117050572800.0L) - 81091903.0L/143061811200.0L) + 5021638757.0L/3487131648000.0L) + 4749355073.0L/1120863744000.0L) - 524300089.0L/46702656000.0L) - 14119093201.0L/1046139494400.0L) + 149510878211.0L/4446092851200.0L) + 1933049.0L/145297152.0L) - 21051859.0L/823350528.0L) - 5.0L/3432.0L;
poly_val[5] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/5977939968000.0L)*x - 19.0L/7846046208000.0L) - 1159.0L/27897053184000.0L) + 17.0L/24216192000.0L) + 92497.0L/26153487360000.0L) - 8741.0L/108972864000.0L) - 109829.0L/1195587993600.0L) + 199141.0L/43110144000.0L) - 49745219.0L/16094453760000.0L) - 1447093.0L/10160640000.0L) + 5418317.0L/23410114560.0L) + 5165621.0L/2235340800.0L) - 42621719501.0L/8717829120000.0L) - 3194891431.0L/175134960000.0L) + 31196765993.0L/747242496000.0L) + 109639993.0L/1816214400.0L) - 28770379499.0L/217945728000.0L) - 9587629.0L/157657500.0L) + 104193839.0L/1009008000.0L) + 24.0L/3575.0L;
poly_val[6] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/2241727488000.0L*x + 19.0L/3138418483200.0L) + 19.0L/160944537600.0L) - 697.0L/387459072000.0L) - 111367.0L/9807557760000.0L) + 9257.0L/43589145600.0L) + 39229.0L/89669099520.0L) - 2202649.0L/172440576000.0L) - 4562501.0L/6035420160000.0L) + 1695689.0L/4064256000.0L) - 747037.0L/1755758592.0L) - 130451323.0L/17882726400.0L) + 2397003491.0L/204324120000.0L) + 17611561711.0L/280215936000.0L) - 253178371.0L/2155507200.0L) - 3240137519.0L/14529715200.0L) + 8379111271.0L/20432412000.0L) + 1888949.0L/8072064.0L) - 20460919.0L/60540480.0L) - 15.0L/572.0L;
poly_val[7] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/1046139494400.0L)*x - 19.0L/1569209241600.0L) - 19.0L/71165952000.0L) + 799.0L/217945728000.0L) + 18479.0L/653837184000.0L) - 9677.0L/21794572800.0L) - 1427683.0L/1046139494400.0L) + 1192853.0L/43110144000.0L) + 1397573.0L/57480192000.0L) - 17379821.0L/18289152000.0L) + 499573.0L/1625702400.0L) + 39926233.0L/2235340800.0L) - 5487440311.0L/305124019200.0L) - 5986965079.0L/35026992000.0L) + 3098878547.0L/13343616000.0L) + 11431199701.0L/16345929600.0L) - 16397134673.0L/16345929600.0L) - 1827209.0L/2270268.0L) + 19675939.0L/21189168.0L) + 40.0L/429.0L;
poly_val[8] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/597793996800.0L*x + 19.0L/965667225600.0L) + 6821.0L/13948526592000.0L) - 2159.0L/357654528000.0L) - 14603.0L/261534873600.0L) + 3329.0L/4470681600.0L) + 266857.0L/85399142400.0L) - 32852833.0L/689762304000.0L) - 137469049.0L/1609445376000.0L) + 82887751.0L/48771072000.0L) + 46068893.0L/58525286400.0L) - 269158459.0L/7947878400.0L) + 18550682911.0L/1743565824000.0L) + 15347344853.0L/43110144000.0L) - 49953999287.0L/186810624000.0L) - 7656977201.0L/4470681600.0L) + 69369468211.0L/43589145600.0L) + 1650809.0L/620928.0L) - 17523859.0L/8072064.0L) - 15.0L/44.0L;
poly_val[9] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/413857382400.0L)*x - 19.0L/724250419200.0L) - 7087.0L/9656672256000.0L) + 17.0L/2095632000.0L) + 161041.0L/1810626048000.0L) - 10177.0L/10059033600.0L) - 2280613.0L/413857382400.0L) + 17006951.0L/258660864000.0L) + 535822261.0L/2897001676800.0L) - 87882491.0L/36578304000.0L) - 1699387243.0L/526727577600.0L) + 666523661.0L/13412044800.0L) + 1995302329.0L/86220288000.0L) - 8990599279.0L/16166304000.0L) + 8279706833.0L/258660864000.0L) + 2517135701.0L/838252800.0L) - 15120010711.0L/15088550400.0L) - 698249.0L/116424.0L) + 6410659.0L/2794176.0L) + 20.0L/11.0L;
poly_val[10] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/344881152000.0L*x + 19.0L/658409472000.0L) + 19.0L/20901888000.0L) - 187.0L/20901888000.0L) - 323.0L/2799360000.0L) + 209.0L/186624000.0L) + 48127.0L/6270566400.0L) - 6882161.0L/94058496000.0L) - 45395389.0L/156764160000.0L) + 422526313.0L/156764160000.0L) + 11240723.0L/1791590400.0L) - 11240723.0L/199065600.0L) - 3451088009.0L/45722880000.0L) + 37961968099.0L/58786560000.0L) + 258720739.0L/559872000.0L) - 2845928129.0L/783820800.0L) - 27988159.0L/23328000.0L) + 307869749.0L/38880000.0L) + 178939.0L/211680.0L) - 1968329.0L/635040.0L;
poly_val[11] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/344881152000.0L)*x - 19.0L/724250419200.0L) - 1501.0L/1609445376000.0L) + 17.0L/2095632000.0L) + 6851.0L/55883520000.0L) - 10177.0L/10059033600.0L) - 590459.0L/68976230400.0L) + 17006951.0L/258660864000.0L) + 4175722993.0L/12070840320000.0L) - 87882491.0L/36578304000.0L) - 242186803.0L/29262643200.0L) + 666523661.0L/13412044800.0L) + 57957677929.0L/502951680000.0L) - 8990599279.0L/16166304000.0L) - 37902695461.0L/43110144000.0L) + 2517135701.0L/838252800.0L) + 40256974711.0L/12573792000.0L) - 698249.0L/116424.0L) - 8950819.0L/2328480.0L) + 20.0L/11.0L;
poly_val[12] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/413857382400.0L*x + 19.0L/965667225600.0L) + 7657.0L/9656672256000.0L) - 2159.0L/357654528000.0L) - 24191.0L/226328256000.0L) + 3329.0L/4470681600.0L) + 3186283.0L/413857382400.0L) - 32852833.0L/689762304000.0L) - 4678146941.0L/14485008384000.0L) + 82887751.0L/48771072000.0L) + 4245956653.0L/526727577600.0L) - 269158459.0L/7947878400.0L) - 28265888347.0L/241416806400.0L) + 15347344853.0L/43110144000.0L) + 7429174631.0L/8083152000.0L) - 7656977201.0L/4470681600.0L) - 99084030211.0L/30177100800.0L) + 1650809.0L/620928.0L) + 18793939.0L/5588352.0L) - 15.0L/44.0L;
poly_val[13] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/597793996800.0L)*x - 19.0L/1569209241600.0L) - 7771.0L/13948526592000.0L) + 799.0L/217945728000.0L) + 493.0L/6457651200.0L) - 9677.0L/21794572800.0L) - 3343729.0L/597793996800.0L) + 1192853.0L/43110144000.0L) + 383394269.0L/1609445376000.0L) - 17379821.0L/18289152000.0L) - 350882963.0L/58525286400.0L) + 39926233.0L/2235340800.0L) + 75332922187.0L/871782912000.0L) - 5986965079.0L/35026992000.0L) - 243294646411.0L/373621248000.0L) + 11431199701.0L/16345929600.0L) + 136706450711.0L/65383718400.0L) - 1827209.0L/2270268.0L) - 20522659.0L/12108096.0L) + 40.0L/429.0L;
poly_val[14] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/1046139494400.0L*x + 19.0L/3138418483200.0L) + 1121.0L/3487131648000.0L) - 697.0L/387459072000.0L) - 29053.0L/653837184000.0L) + 9257.0L/43589145600.0L) + 3424573.0L/1046139494400.0L) - 2202649.0L/172440576000.0L) - 2241307.0L/16094453760.0L) + 1695689.0L/4064256000.0L) + 50611753.0L/14631321600.0L) - 130451323.0L/17882726400.0L) - 36787589639.0L/762810048000.0L) + 17611561711.0L/280215936000.0L) + 7960300589.0L/23351328000.0L) - 3240137519.0L/14529715200.0L) - 2697612881.0L/2724321600.0L) + 1888949.0L/8072064.0L) + 21095959.0L/28252224.0L) - 15.0L/572.0L;
poly_val[15] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/2241727488000.0L)*x - 19.0L/7846046208000.0L) - 1577.0L/10461394944000.0L) + 17.0L/24216192000.0L) + 204697.0L/9807557760000.0L) - 8741.0L/108972864000.0L) - 19621.0L/12809871360.0L) + 199141.0L/43110144000.0L) + 388364981.0L/6035420160000.0L) - 1447093.0L/10160640000.0L) - 68416553.0L/43893964800.0L) + 5165621.0L/2235340800.0L) + 68180850949.0L/3269185920000.0L) - 3194891431.0L/175134960000.0L) - 39090845489.0L/280215936000.0L) + 109639993.0L/1816214400.0L) + 31531616651.0L/81729648000.0L) - 9587629.0L/157657500.0L) - 106733999.0L/378378000.0L) + 24.0L/3575.0L;
poly_val[16] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/5977939968000.0L*x + 19.0L/25107347865600.0L) + 1577.0L/27897053184000.0L) - 5933.0L/27897053184000.0L) - 7837.0L/1005903360000.0L) + 8147.0L/348713164800.0L) + 676043.0L/1195587993600.0L) - 1767109.0L/1379524608000.0L) - 374906921.0L/16094453760000.0L) + 10896041.0L/292626432000.0L) + 21386987.0L/39016857600.0L) - 81091903.0L/143061811200.0L) - 17623242779.0L/2490808320000.0L) + 4749355073.0L/1120863744000.0L) + 17084781061.0L/373621248000.0L) - 14119093201.0L/1046139494400.0L) - 12393013247.0L/100590336000.0L) + 1933049.0L/145297152.0L) + 21475219.0L/242161920.0L) - 5.0L/3432.0L;
poly_val[17] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/20324995891200.0L)*x - 19.0L/106706228428800.0L) - 1121.0L/67749986304000.0L) + 1.0L/20756736000.0L) + 241.0L/106748928000.0L) - 1.0L/197683200.0L) - 192749.0L/1195587993600.0L) + 45439.0L/172440576000.0L) + 2986523.0L/459841536000.0L) - 25313.0L/3483648000.0L) - 355567.0L/2388787200.0L) + 6427.0L/60825600.0L) + 652948939.0L/348713164800.0L) - 106900847.0L/140107968000.0L) - 1264641073.0L/106748928000.0L) + 2464771.0L/1037836800.0L) + 475474177.0L/15122764800.0L) - 809.0L/350064.0L) - 3078277.0L/137225088.0L) + 30.0L/119119.0L;
poly_val[18] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/91462481510400.0L*x + 19.0L/640237370572800.0L) + 7771.0L/2134124568576000.0L) - 107.0L/13948526592000.0L) - 461.0L/941525544960.0L) + 401.0L/523069747200.0L) + 184577.0L/5380145971200.0L) - 78713.0L/2069286912000.0L) - 19594717.0L/14485008384000.0L) + 147211.0L/146313216000.0L) + 15994499.0L/526727577600.0L) - 3039931.0L/214592716800.0L) - 2944400801.0L/7846046208000.0L) + 336140003.0L/3362591232000.0L) + 7876103813.0L/3362591232000.0L) - 53447083.0L/174356582400.0L) - 20537220167.0L/3334569638400.0L) + 487121.0L/1646701056.0L) + 5398021.0L/1235025792.0L) - 5.0L/155584.0L;
poly_val[19] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*((1.0L/579262382899200.0L)*x - 1.0L/320118685286400.0L) - 31.0L/54721142784000.0L) + 1.0L/1307674368000.0L) + 587.0L/7846046208000.0L) - 19.0L/261534873600.0L) - 9221.0L/1793381990400.0L) + 1789.0L/517321728000.0L) + 192251.0L/965667225600.0L) - 19447.0L/219469824000.0L) - 772547.0L/175575859200.0L) + 32699.0L/26824089600.0L) + 140484011.0L/2615348736000.0L) - 3558293.0L/420323904000.0L) - 28648583.0L/86220288000.0L) + 5040143.0L/196151155200.0L) + 965344741.0L/1111523212800.0L) - 11419.0L/463134672.0L) - 2402251.0L/3910915008.0L) + 10.0L/3741309.0L;
poly_val[20] = x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(x*(-1.0L/5792623828992000.0L*x + 1.0L/6402373705728000.0L) + 79.0L/1422749712384000.0L) - 1.0L/27897053184000.0L) - 47.0L/6538371840000.0L) + 17.0L/5230697472000.0L) + 1741.0L/3586763980800.0L) - 619.0L/4138573824000.0L) - 894347.0L/48283361280000.0L) + 5473.0L/1463132160000.0L) + 15791.0L/39016857600.0L) - 21713.0L/429185433600.0L) - 256228801.0L/52306974720000.0L) + 5839219.0L/16812956160000.0L) + 421973.0L/14010796800.0L) - 364919.0L/348713164800.0L) - 1743050333.0L/22230464256000.0L) + 514639.0L/514594080000.0L) + 108194591.0L/1955457504000.0L) - 1.0L/9237800.0L;
poly_val[21] = x*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*(pow(x, 2)*((1.0L/121645100408832000.0L)*pow(x, 2) - 1.0L/388022648832000.0L) + 1.0L/3056901120000.0L) - 149.0L/6847458508800.0L) + 10811.0L/13168189440000.0L) - 2677.0L/150493593600.0L) + 10684483.0L/49929384960000.0L) - 800993.0L/611380224000.0L) + 1473061.0L/433060992000.0L) - 178939.0L/74662922880.0L);
break;
}
}