Skip to content
Snippets Groups Projects
Lagrange_polys.cpp 72.00 KiB
/**********************************************************************
*                                                                     *
*  Copyright 2015 Max Planck Institute                                *
*                 for Dynamics and Self-Organization                  *
*                                                                     *
*  This file is part of bfps.                                         *
*                                                                     *
*  bfps is free software: you can redistribute it and/or modify       *
*  it under the terms of the GNU General Public License as published  *
*  by the Free Software Foundation, either version 3 of the License,  *
*  or (at your option) any later version.                             *
*                                                                     *
*  bfps is distributed in the hope that it will be useful,            *
*  but WITHOUT ANY WARRANTY; without even the implied warranty of     *
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the      *
*  GNU General Public License for more details.                       *
*                                                                     *
*  You should have received a copy of the GNU General Public License  *
*  along with bfps.  If not, see <http://www.gnu.org/licenses/>       *
*                                                                     *
* Contact: Cristian.Lalescu@ds.mpg.de                                 *
*                                                                     *
**********************************************************************/



#include "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;
}
}