#pragma once
//Revisar (char)(i+'1') si SIM_N pasa de 9
#define SIM_N 5		//nmero de componentes simtricas programadas = n de polinomios p.
#define POLIPQ_N 9	//nmero de polinomios p+q programados
#define ASIM_N 12	//number of programmed components for the asym.
#pragma warning(disable: 4305)
//Cantidades para un fotograma con proporcin raiz(3)/1 para los impares y 4/3 para los completos, pero prcticamente no vara
const float Cantidad_p[2][7]={	//Polinomios que empiezan en r
	{0, 0.58, 0.26, 0.14, 0.093, 0.069, 0.055},	//i
	{0, 0.58, 0.28, 0.17, 0.13, 0.096, 0.077}	//c
};
/*const float Cantidad_q[2][6]={	//Polinomios que empiezan en r^2
	{0,	0.41, 0.20, 0.11, 0.080, 0.061}, //i
	{0,	0.40, 0.22, 0.14, 0.10, 0.082}	//c
};*/
const float Cantidad_pq[2][12]={	//p y q intercalados
	{0, 0.58, 0.41, 0.26, 0.20, 0.14, 0.11, 0.093, 0.080, 0.069, 0.061, 0.055}, //i
	{0, 0.58, 0.40, 0.28, 0.22, 0.17, 0.14, 0.13, 0.10, 0.096, 0.082, 0.077}	//c
};
const u8int poli_asim[13]={//Polinomio correspondiente al trmino i de una base asimtrica
	0, 2,2,4,4,1,1,6,6,3,3,2,2		//Si es impar es un p, si par es un q
};
const s8int S_asim[13]={//valor de k de cos(k?) o sin(k?). Positivo si es coseno, negativo si seno
	0,		//Para el modelo de los vectores, (1-k)t en la serie1, (1+k)t en la serie 2. Positivo si x=cos,y=sin; negativo si x=-sin,y=cos.
	1,-1,1,-1,2,-2,1,-1,2,-2,3,-3	//sin embargo, para i=1,2, los parmetros han de ser necesariamente los del modelo rad/tan
};

//Los trminos se ordenan de mayor a menor grado
const float coef_p_ic[]={
	1,
	2, -1,
	4.8, -4.7, 0.9,
	12.8, -19.1, 8.2, -0.9,
	38.4, -76.2, 50.5, -12.6, 0.9,
};
const float coef_p_cc[]={
	1,
	3, -2,
	9, -11.4, 3.4,
	29.2, -53.1, 30.1, -5.2,
	95.8, -225.4, 187.1, -63.9, 7.4,
	320.3, -922.1, 1004.9, -511.4, 119.2, -9.9,
};
const float coef_p_ic_fwd[]={
	1,
	-1, 2,
	0.9, -4.7, 4.8,
	-0.9, 8.2, -19.1, 12.8,
	0.9, -12.6, 50.5, -76.2, 38.4,
};
const float coef_p_cc_fwd[]={
	1,
	-2, 3,
	3.4, -11.4, 9,
	-5.2, 30.1, -53.1, 29.2,
	7.4, -63.9, 187.1, -225.4, 95.8,
	-9.9, 119.2, -511.4, 1004.9, -922.1, 320.3,
};
const float coef_polis_ic[]={	//Polinomios p y q intercalados
	1,		//p1
	1,		//q1
	2, -1,
	2.5, -1.5, //q2
	4.8, -4.7, 0.9,
	6.4, -7.2, 1.8, //q3
	12.8, -19.1, 8.2, -0.9,
	19.1, -31.6, 15.7, -2.2, //q4
	38.4, -76.2, 50.5, -12.6, 0.9,
};
const float coef_polis_cc[]={
	1,		//p1
	1,		//q1
	3, -2,
	4, -3,	//q2
	9, -11.4, 3.4,
	14.5, -20.3, 6.8, //q3
	29.2, -53.1, 30.1, -5.2,
	53.5, -107.8, 69.5, -14.2, //q4
	95.8, -225.4, 187.1, -63.9, 7.4,
};
#pragma warning(default: 4305)

const char* const polinomios_p[][2]={
	{NULL,NULL},
	{"s","s"},
	{"(2s^3 -s)","(3s^2 -2s)"},
	{"(4.8s^5 -4.7s^3 +0.9s)","(9s^3 -11.4s^2 +3.4s)"},
	{"(12.8s^7 -19.1s^5 +8.2s^3 -0.9s)","(29.2s^4 -53.1s^3 +30.1s^2 -5.2s)"},
	{"(38.4s^9 -76.2s^7 +50.5s^5 -12.6s^3 +0.9s)","(95.8s^5 -225.4s^4 +187.1s^3 -63.9s^2 +7.4s)"},
	{"(119.5s^11 -296.7s^9 +268s^7 -106.5s^5 +17.6s^3 -0.9s)","(320.3s^6 -922.1s^5 +1004.9s^4 -511.4s^3 +119.2s^2 -9.9s)"}
};
const char* const polinomios_pq[][2]={
	{NULL,NULL},
	{"s","s"},
	{"s^2","s^2"},
	{"(2s^3 -s)","(3s^2 -2s)"},
	{"(2.5s^4 -1.5s^2)","(4s^3 -3s^2)"},
	{"(4.8s^5 -4.7s^3 +0.9s)","(9s^3 -11.4s^2 +3.4s)"},
	{"(6.4s^6 -7.2s^4 +1.8s^2)","(14.5s^4 -20.3s^3 +6.8s^2)"},
	{"(12.8s^7 -19.1s^5 +8.2s^3 -0.9s)","(29.2s^4 -53.1s^3 +30.1s^2 -5.2s)"},
	{"(19.1s^8 -31.6s^6 +15.7s^4 -2.2s^2)","(53.5s^5 -107.8s^4 +69.5s^3 -14.2s^2)"},
	{"(38.4s^9 -76.2s^7 +50.5s^5 -12.6s^3 +0.9s)","(95.8s^5 -225.4s^4 +187.1s^3 -63.9s^2 +7.4s)"},
};