嵌入式c语言程序优化方法总结

文章目录

  • 一.优化方法总结
  • 二.AGA8优化算法

一.优化方法总结

1.将小数转换成单精度进行运算:通常小数被系统默认为双精度double型数据,将小数转成float型可提高运行速率。如:3.14---->3.14f
2.将int---->替换为unsighed short
3.将浮点型转成整形运算,可能会牺牲一定精度,如:a0.1023=(a1023)/1000=(a<<10)/1000
4.除法运算---->乘法运算
5.乘除法----->移位运算
6.二维数组运算----->一维数组运算
7.使用小的数据类型,能用1字节,不用两字节。能用2,不用4。
8.使用自加、自减。a+=1代替a=a+1;两个指令周期不同。
9.平方运算写成乘法。pow(a,2)----->a*a。
10.对于需要反复多次调用的变量声明为寄存器变量,rigister a。注意寄存器变量只能是局部动态变量,不能是静态变量!
11.采用事先判断变量为0或1,若判断正确,则不进行运算。
12.并行运算,由于32bit的CPU,都有两个ALU运算单元,因此可以让两个ALU同时运行。并行运算的条件是不能有数据依赖。
13.inline函数内联的用法:适用于函数体小,需要频繁被调用的情况;用于定义,不用于声明,因此需要放在定义前加上inline关键字。
14.函数和宏函数(不太建议),有点类似于inline的用法。使用宏函数可以减少函数调用的时间。
15.对于需要多次运算的,可采用查表法,即事先算好存在表里,直接查找!
16.学会优化算法,优化执行算法是最有效的手段。
17.对于支持FPU或DSP的处理器可开启,提高浮点型数据的执行速度。
18.提高编译器的优化等级,以获得更高质量的编译代码,提高程序执行效率。选择-O3优化等级最高,但调试效果变差。

二.AGA8优化算法

采用上述的一些优化原则对AGA8算法进行优化。

//aga8_font.h:存储一些固定的查表数据
#ifndef __AGA8_FONT_H
#define __AGA8_FONT_H
#include "sys.h"
//58种物质的状态方程参数,an,un,bn,cn,kn,gn,qn,fn
double  an[58] = { 0.1538326,1.341953,-2.998583,-0.04831228,0.3757965,-1.589575,-0.05358847,0.886594630,-0.71023704,-1.471722,1.32185035,-0.78665925,2.29129e-9,0.1576724,-0.4363864,-0.04408159,-0.003433888,0.03205905,0.02487355,0.07332279,-0.001600573,0.6424706,-0.4162601,-0.06689957,0.2791795,-0.6966051,-0.002860589,-0.008098836,3.150547,0.007224479,-0.7057529,0.5349792,-0.07931491,-1.418465,-5.99905e-17,0.1058402,0.03431729,-0.007022847,0.02495587,0.04296818,0.7465453,-0.2919613,7.294616,-9.936757,-0.005399808,-0.2432567,0.04987016,0.003733797,1.874951,0.002168144,-0.6587164,0.000205518,0.009776195,-0.02048708,0.01557322,0.006862415,-0.001226752,0.002850908 };//an
double  un[58] = { 0.0,0.5,1.0,3.5,-0.5,4.5,0.5,7.5,9.5,6.0,12.0,12.5,-6.0,2.0,3.0,2.0,2.0,11.0,-0.5,0.5,0,4,6,21,23,22,-1,-0.5,7,-1,6,4,1,9,-13,21,8,-0.5,0,2,7,9,22,23,1,9,3,8,23,1.5,5,-0.5,4,7,3,0,1,0 };//un
double  un_2[10] = { 0.0,0.5,1.0,3.5,-0.5,4.5,2.0,3.0,2.0,11.0 };
u8 bn[58] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 9, 9 };//bn
u8 cn[58] = { 0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,0,1,1,1,1,0,1,0,1,1,1,1,1,1 };//cn
u8 kn[58] = { 0,0,0,0,0,0,0,0,0,0,0,0,3,2,2,2,4,4,0,0,2,2,2,4,4,4,4,0,1,1,2,2,3,3,4,4,4,0,0,2,2,2,4,4,0,2,2,4,4,0,2,0,2,1,2,2,2,2 };//kn
u8 gn[58] = { 0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0 };//gn
u8 qn[58] = { 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,1 };//qn
u8 fn[58] = { 0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };//fn
//21种识别组分的特种参数Gi,Qi
double Gi[21] = { 0,0.027815,0.189065,0.0793,0.141239,0.3325,0.0885,0.034369,0.038953,0.021,0.256692,0.281835,0.332267,0.366911,0.289731,0.337542,0.383381,0.427354,0.469659,0,0 };//Gi
double Qi[21] = { 0,0,0.69,0,0,1.06775,0.633276,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };//Qi
/***********************************B备用查表数据**************************************/
double B_parameter[10][21][21] = {
		{                
		 {0.0151622688,  0.0144777187,  0.0148591761,  0.0185250577,  0.0215399907,  0.0114288165,  0.0151573849,  0.0100641873,  0.0147439324,  0.0130843927,  0.0247674883,  0.0243885720,  0.0267152092,  0.0270711962,  0.0293528218,  0.0315269824,0.0335871711,  0.0355517478,  0.0374327846,  0.0103878970,  0.0132233753},
	     {0.0144777187,  0.0138240747,  0.0141883100,  0.0176886835,  0.0205674974,  0.0109128252,  0.0144730552,  0.0096098067,  0.0140782693,  0.0124936550,  0.0236492791,  0.0232874702,  0.0255090638,  0.0258489785,  0.0280275927,  0.0301035937,0.0320707685,  0.0339466479,  0.0357427591,  0.0099189015,  0.0126263628},
		 {0.0148591761,  0.0141883100,  0.0145621422,  0.0181547431,  0.0211094077,  0.0112003552,  0.0148543898,  0.0098630049,  0.0144492022,  0.0128228366,  0.0242723879,  0.0239010461,  0.0261811740,  0.0265300448,  0.0287660609,  0.0308967602,0.0329157658,  0.0348410708,  0.0366845057,  0.0101802437,  0.0129590409},
		 {0.0185250577,  0.0176886835,  0.0181547431,  0.0226336683,  0.0263172732,  0.0139635755,  0.0185190906,  0.0122962898,  0.0180139398,  0.0159863364,  0.0302605867,  0.0297976318,  0.0326402861,  0.0330752262,  0.0358628860,  0.0385192464,0.0410363575,  0.0434366510,  0.0457348766,  0.0126917940,  0.0161561434},
		 {0.0215399907,  0.0205674974,  0.0211094077,  0.0263172732,  0.0306003807,  0.0162361322,  0.0215330524,  0.0142974975,  0.0209456889,  0.0185880952,  0.0351854642,  0.0346471639,  0.0379524571,  0.0384581832,  0.0416995316,  0.0447882117,0.0477149799,  0.0505059186,  0.0531781779,  0.0147573696,  0.0187855382},
		 {0.0114288165,  0.0109128252,  0.0112003552,  0.0139635755,  0.0162361322,  0.0086146637,  0.0114251351,  0.0075860514,  0.0111134883,  0.0098625822,  0.0186689131,  0.0183832985,  0.0201370406,  0.0204053718,  0.0221251857,  0.0237639960,0.0253168981,  0.0267977310,  0.0282155942,  0.0078300530,  0.0099673427},
	     {0.0151573849,  0.0144730552,  0.0148543898,  0.0185190906,  0.0215330524,  0.0114251351,  0.0151525025,  0.0100609455,  0.0147391832,  0.0130801781,  0.0247595104,  0.0243807161,  0.0267066039,  0.0270624762,  0.0293433669,  0.0315168272,0.0335763523,  0.0355402961,  0.0374207270,  0.0103845509,  0.0132191159},
		 {0.0100641873,  0.0096098067,  0.0098630049,  0.0122962898,  0.0142974975,  0.0075860514,  0.0100609455,  0.0066802579,  0.0097865101,  0.0086849654,  0.0164397984,  0.0161882869,  0.0177326278,  0.0179689196,  0.0194833835,  0.0209265157,0.0222939974,  0.0235980152,  0.0248465820,  0.0068951252,  0.0087772171},
		 {0.0147439324,  0.0140782693,  0.0144492022,  0.0180139398,  0.0209456889,  0.0111134883,  0.0147391832,  0.0097865101,  0.0143371381,  0.0127233862,  0.0240841378,  0.0237156760,  0.0259781199,  0.0263242849,  0.0285429591,  0.0306571333,0.0326604801,  0.0345708528,  0.0363999906,  0.0101012884,  0.0128585341},
		 {0.0130843927,  0.0124936550,  0.0128228366,  0.0159863364,  0.0185880952,  0.0098625822,  0.0130801781,  0.0086849654,  0.0127233862,  0.0112912741,  0.0213732884,  0.0210462997,  0.0230540886,  0.0233612902,  0.0253302360,  0.0272064441,0.0289842992,  0.0306796453,  0.0323029000,  0.0089643130,  0.0114112101},
		 {0.0247674883,  0.0236492791,  0.0242723879,  0.0302605867,  0.0351854642,  0.0186689131,  0.0247595104,  0.0164397984,  0.0240841378,  0.0213732884,  0.0404575650,  0.0398386071,  0.0436391571,  0.0442206599,  0.0479476838,  0.0514991639,0.0548644716,  0.0580735975,  0.0611462614,  0.0169685765,  0.0216003156},
		 {0.0243885720,  0.0232874702,  0.0239010461,  0.0297976318,  0.0346471639,  0.0183832985,  0.0243807161,  0.0161882869,  0.0237156760,  0.0210462997,  0.0398386071,  0.0392291186,  0.0429715242,  0.0435441307,  0.0472141350,  0.0507112813,0.0540251033,  0.0571851329,  0.0602107884,  0.0167089752,  0.0212698537},
		 {0.0267152092,  0.0255090638,  0.0261811740,  0.0326402861,  0.0379524571,  0.0201370406,  0.0267066039,  0.0177326278,  0.0259781199,  0.0230540886,  0.0436391571,  0.0429715242,  0.0470709503,  0.0476981827,  0.0517183005,  0.0555490699,0.0591790261,  0.0626405183,  0.0659548173,  0.0183029892,  0.0232989693},
		 {0.0270711962,  0.0258489785,  0.0265300448,  0.0330752262,  0.0384581832,  0.0204053718,  0.0270624762,  0.0179689196,  0.0263242849,  0.0233612902,  0.0442206599,  0.0435441307,  0.0476981827,  0.0483337730,  0.0524074599,  0.0562892753,0.0599676016,  0.0634752191,  0.0668336819,  0.0185468811,  0.0236094340},
		 {0.0293528218,  0.0280275927,  0.0287660609,  0.0358628860,  0.0416995316,  0.0221251857,  0.0293433669,  0.0194833835,  0.0285429591,  0.0253302360,  0.0479476838,  0.0472141350,  0.0517183005,  0.0524074599,  0.0568244870,  0.0610334711,0.0650218156,  0.0688250636,  0.0724665857,  0.0201100570,  0.0255992940},
		 {0.0315269824,  0.0301035937,  0.0308967602,  0.0385192464,  0.0447882117,  0.0237639960,  0.0315168272,  0.0209265157,  0.0306571333,  0.0272064441,  0.0514991639,  0.0507112813,  0.0555490699,  0.0562892753,  0.0610334711,  0.0655542143,0.0698379751,  0.0739229292,  0.0778341786,  0.0215996069,  0.0274954312},
		 {0.0335871711,  0.0320707685,  0.0329157658,  0.0410363575,  0.0477149799,  0.0253168981,  0.0335763523,  0.0222939974,  0.0326604801,  0.0289842992,  0.0548644716,  0.0540251033,  0.0591790261,  0.0599676016,  0.0650218156,  0.0698379751,0.0744016661,  0.0787535591,  0.0829203962,  0.0230110730,  0.0292921707},
		 {0.0355517478,  0.0339466479,  0.0348410708,  0.0434366510,  0.0505059186,  0.0267977310,  0.0355402961,  0.0235980152,  0.0345708528,  0.0306796453,  0.0580735975,  0.0571851329,  0.0626405183,  0.0634752191,  0.0688250636,  0.0739229292,0.0787535591,  0.0833600026,  0.0877705658,  0.0243570338,  0.0310055248},
		 {0.0374327846,  0.0357427591,  0.0366845057,  0.0457348766,  0.0531781779,  0.0282155942,  0.0374207270,  0.0248465820,  0.0363999906,  0.0323029000,  0.0611462614,  0.0602107884,  0.0659548173,  0.0668336819,  0.0724665857,  0.0778341786,0.0829203962,  0.0877705658,  0.0924144911,  0.0256457602,  0.0326460217},
		 {0.0103878970,  0.0099189015,  0.0101802437,  0.0126917940,  0.0147573696,  0.0078300530,  0.0103845509,  0.0068951252,  0.0101012884,  0.0089643130,  0.0169685765,  0.0167089752,  0.0183029892,  0.0185468811,  0.0201100570,  0.0215996069,0.0230110730,  0.0243570338,  0.0256457602,  0.0071169035,  0.0090595320},
		 {0.0132233753,  0.0126263628,  0.0129590409,  0.0161561434,  0.0187855382,  0.0099673427,  0.0132191159,  0.0087772171,  0.0128585341,  0.0114112101,  0.0216003156,  0.0212698537,  0.0232989693,  0.0236094340,  0.0255992940,  0.0274954312,0.0292921707,  0.0310055248,  0.0326460217,  0.0090595320,  0.0115324201},
		},//0
		{
		 {1.6270423042,  1.3798425670,  1.7574133431,  2.2404897804,  2.7310919832,  1.4011692682,  1.8570638323,  0.7591045528,  1.4386967884,  1.3325561105,  3.2464079944,  3.1823259271,  3.5783398311,  3.6329605892,  4.2331867472,  4.1171162066,4.4432222221,  4.7560428151,  5.0569967858,  0.4039747013,  1.3380244411},
		 {1.3798425670,  1.2043559055,  1.5601031143,  1.8986009642,  2.2914692047,  1.2380325196,  1.5724818171,  0.6291715339,  1.2474938883,  1.1584475540,  2.6917601782,  2.7150721940,  3.0118695827,  3.0404163349,  3.4611297266,  3.7740943335,4.0728154923,  4.3593254076,  4.6349285621,  0.3475619053,  1.1511768497},
		 {1.7574133431,  1.5601031143,  1.9759980846,  2.3747621175,  2.9572464148,  1.690604548,  2.0722706615,  0.8754159467,  1.9514773201,  1.4685182302,  3.3741502734,  3.3391732619,  3.3566826989,  3.7136687395,  4.0996879452,  4.4074655945,4.6902884052,  4.9514866744,  5.1932368741,  0.4451926705,  1.4745445004},
		 {2.2404897804,  1.8986009642,  2.3747621175,  3.0852267598,  3.8132298241,  1.9088442676,  2.5782715842,  1.0426020788,  1.9909858061,  1.8349727845,  4.4273842589,  4.4332577897,  4.9217098553,  5.0178304213,  5.5396713328,  6.0405832310,6.5186979422,  6.9772680884,  7.4183815440,  0.5562862057,  1.8425028523},
		 {2.7310919832,  2.2914692047,  2.9572464148,  3.8132298241,  4.6090357035,  2.8022878047,  3.2385062967,  1.2012773057,  2.4334905009,  2.2428029506,  5.4113884211,  5.3967004960,  6.0155798922,  6.1168145012,  6.7708858221,  7.3831274273,7.9675050780,  8.5279943047,  9.0671470203,  0.6799230779,  2.2520066066},
		 {1.4011692682,  1.2380325196,  1.6910604548,  1.9088442676,  2.8022878047,  1.7037873962,  1.9690076806,  0.7179934047,  1.4795591078,  1.3636213215,  3.2901172293,  3.2731775044,  3.6574648699,  3.7190153825,  4.1166899079,  4.4889320197,4.8442328829,  5.1850096149,  5.5128137754,  0.4133923605,  1.3692171325},
		 {1.8570638323,  1.5724818171,  2.0722706615,  2.5782715842,  3.2385062967,  1.9690076806,  2.2755135148,  0.8297599405,  1.7098748669,  1.5758896101,  3.8022737516,  3.7826971022,  4.2268046100,  4.2979363910,  4.7781463976,  5.2139013808,5.6304120714,  6.0304250457,  6.4156899407,  0.4777431356,  1.5823564938},
		 {0.7591045528,  0.6291715339,  0.8754159467,  1.0426020788,  1.2012773057,  0.7179934047,  0.8297599405,  0.3025697516,  0.6539336956,  0.5746439477,  1.5808406771,  1.5727014515,  1.5412930395,  1.5672310539,  1.7348151593,  1.8916817858,2.0414091973,  2.1850159915,  2.3231560117,  0.1742077615,  0.5770020796},
		 {1.4386967884,  1.2474938883,  1.9514773201,  1.9909858061,  2.4334905009,  1.4795591078,  1.7098748669,  0.6539336956,  1.2848405608,  1.1841608585,  2.8571187482,  2.8424083892,  3.1761213119,  3.2295714206,  3.5749096754,  3.8981625696,4.2067037816,  4.5026323221,  4.7872955568,  0.3589875319,  1.1890202284},
		 {1.3325561105,  1.1584475540,  1.4685182302,  1.8349727845,  2.2428029506,  1.3636213215,  1.5758896101,  0.5746439477,  1.1841608585,  1.0913703861,  2.6332358216,  2.6196781617,  2.9272414448,  2.9765032197,  3.2947808775,  3.5927037766,3.8770677962,  4.1498074694,  4.4121645825,  0.3308573818,  1.0958489773},
		 {3.2464079944,  2.6917601782,  3.3741502734,  4.4273842589,  5.4113884211,  3.2901172293,  3.8022737516,  1.5808406771,  2.8571187482,  2.6332358216,  6.3534167508,  6.3207051103,  7.0627874178,  7.1816452062,  7.9495789347,  8.6684011236,9.3545087297,  10.0125693538,  10.6455791523,  0.7982858254,  2.6440416735},
		 {3.1823259271,  2.7150721940,  3.3391732619,  4.4332577897,  5.3967004960,  3.2731775044,  3.7826971022,  1.5727014515,  2.8424083892,  2.6196781617,  6.3207051103,  6.2881618911,  7.0264234624,  7.1446692914,  7.9086491832,  8.6237703946,9.3063454596,  9.9610179473,  10.5907685878,  0.7941757158,  2.6304283778},
		 {3.5783398311,  3.0118695827,  3.3566826989,  4.9217098553,  6.0155798922,  3.6574648699,  4.2268046100,  1.5412930395,  3.1761213119,  2.9272414448,  7.0627874178,  7.0264234624,  7.8513606245,  7.9834891037,  8.8371640455,  9.6362440541,10.3989568364,  11.1304911396,  11.8341776466,  0.8874159062,  2.9392537899},
		 {3.6329605892,  3.0404163349,  3.7136687395,  5.0178304213,  6.1168145012,  3.7190153825,  4.2979363910,  1.5672310539,  3.2295714206,  2.9765032197,  7.1816452062,  7.1446692914,  7.9834891037,  8.1178411382,  8.9858823507,  9.7984098662,10.5739581409,  11.3178032422,  12.0333319039,  0.9023499947,  2.9887177175},
		 {4.2331867472,  3.4611297266,  4.0996879452,  5.5396713328,  6.7708858221,  4.1166899079,  4.7781463976,  1.7348151593,  3.5749096754,  3.2947808775,  7.9495789347,  7.9086491832,  8.8371640455,  8.9858823507,  9.9467432592,  10.8461543879,11.7046320836,  12.5280165836,  13.3200567657,  0.9988383307,  3.3083014722},
		 {4.1171162066,  3.7740943335,  4.4074655945,  6.0405832310,  7.3831274273,  4.4889320197,  5.2139013808,  1.8916817858,  3.8981625696,  3.5927037766,  8.6684011236,  8.6237703946,  9.6362440541,  9.7984098662,  10.8461543879,  11.8268926764,12.7629962214,  13.6608333501,  14.5244919238,  1.0891559640,  3.6074469396},
		 {4.4432222221,  4.0728154923,  4.6902884052,  6.5186979422,  7.9675050780,  4.8442328829,  5.6304120714,  2.0414091973,  4.2067037816,  3.8770677962,  9.3545087297,  9.3063454596,  10.3989568364,  10.5739581409,  11.7046320836,  12.7629962214,  13.7731927569,  14.7420940732,  15.6741115873,  1.1753631181,  3.8929778868},
		 {4.7560428151,  4.3593254076,  4.9514866744,  6.9772680884,  8.5279943047,  5.1850096149,  6.0304250457,  2.1850159915,  4.5026323221,  4.1498074694,  10.0125693538,  9.9610179473,  11.1304911396,  11.3178032422,  12.5280165836,  13.6608333501,  14.7420940732,  15.7791545866,  16.7767366371,  1.2580462615,  4.1668367854},
		 {5.0569967858,  4.6349285621,  5.1932368741,  7.4183815440,  9.0671470203,  5.5128137754,  6.4156899407,  2.3231560117,  4.7872955568,  4.4121645825,  10.6455791523,  10.5907685878,  11.8341776466,  12.0333319039,  13.3200567657,  14.5244919238,  15.6741115873,  16.7767366371,  17.8373873355,  1.3375818515,  4.4302705177},
		 {0.4039747013,  0.3475619053,  0.4451926705,  0.5562862057,  0.6799230779,  0.4133923605,  0.4777431356,  0.1742077615,  0.3589875319,  0.3308573818,  0.7982858254,  0.7941757158,  0.8874159062,  0.9023499947,  0.9988383307,  1.0891559640,1.1753631181,  1.2580462615,  1.3375818515,  0.1003019767,  0.3322151013},
		 {1.3380244411,  1.1511768497,  1.4745445004,  1.8425028523,  2.2520066066,  1.3692171325,  1.5823564938,  0.5770020796,  1.1890202284,  1.0958489773,  2.6440416735,  2.6304283778,  2.9392537899,  2.9887177175,  3.3083014722,  3.6074469396,3.8929778868,  4.1668367854,  4.4302705177,  0.3322151013,  1.1003459470},
		},//1
		{
		 {-44.7222186675,  -33.6859490738,  -53.2406013609,  -69.4090672231,  -88.6986454272,  -44.0017339624,  -58.2799578033,  -14.6660892452,  -35.9596173550,  -34.7622023258,  -108.9968821144,  -106.3635407220,  -122.7706144486,  -124.8831288829, -156.3777071287,  -137.7189457615,  -150.5609983073,  -162.9747782352,  -174.939620630,  -4.0241164987,  -34.6797225117},
		 {-33.6859490738,  -26.8759277001,  -43.9405795965,  -52.1989452766,  -65.3937801698,  -35.9763209805,  -43.7623756515,  -10.5514785831,  -28.3150561357,  -27.5139590599,  -78.4774105754,  -81.0830909693,  -91.0893597049,  -91.6036065038,  -109.4812633818,  -121.1984321045,  -132.4859880666,  -143.3941801364,  -153.9528945594,  -3.1195403455,  -26.8841107307},
		 {-53.2406013609,  -43.9405795965,  -68.6811588896,  -79.5682782995,  -106.1179430580,  -65.3997840536,  -74.0504981615,  -19.9025856140,  -67.5107593418,  -43.0788816126,  -120.1451325288,  -119.4953052203,  -110.2354570334,  -133.1552163328,  -149.6618295261,  -161.0477877057,  -171.1925953100,  -180.2476367979,  -188.3143588202,  -4.9868658096,  -42.9766689245},
		 {-69.4090672231,  -52.1989452766,  -79.5682782995,  -107.7231576679,  -141.5255715732,  -66.8396555322,  -91.9448718875,  -22.6439885637,  -56.3660321650,  -53.9510809155,  -165.9231303865,  -168.9483934211,  -190.0937779507,  -194.9929820468,  -219.1858964680,  -242.6441399267,  -265.2422813443,  -287.0809209781,  -308.2198922950,  -6.2454453490,  -53.8230719050},
		 {-88.6986454272,  -65.3937801698,  -106.1179430580,  -141.5255715732,  -177.8210454895,  -123.8889977820,  -124.7595324375,  -25.8533221673,  -72.4193305992,  -69.3165904168,  -213.1787811202,  -215.3172312750,  -244.2333373753,  -249.2021015621,  -281.6110215552,  -311.7502778245,  -340.7844711390,  -368.8428531597,  -396.0022981929,  -8.0241761588,  -69.1521238668},
		 {-44.0017339624,  -35.9763209805,  -65.3997840536,  -66.8396555322,  -123.8889977820,  -86.3142139851,  -86.9207207442,  -17.4066410811,  -50.4549855912,  -48.2932877420,  -148.5229460251,  -149.2813386213,  -170.1588431734,  -173.6206112314,  -196.2001017866,  -217.1983038994,  -237.4266019686,  -256.9750464082,  -275.8971960121,  -5.5904920568,  -48.1787029019},
		 {-58.2799578033,  -43.7623756515,  -74.0504981615,  -91.9448718875,  -124.7595324375,  -86.9207207442,  -87.5314892632,  -17.5289528647,  -50.8095192002,  -48.6326316818,  -149.5665768073,  -150.3302984241,  -171.3545035837,  -174.8405965545,  -199.2961015848,  -220.9393022106,  -241.8447656673,  -262.0985688004,  -281.7502806894,  -5.6297749404,  -48.5172416849},
		 {-14.6660892452,  -10.5514785831,  -19.9025856140,  -22.6439885637,  -25.8533221673,  -17.4066410811,  -17.5289528647,  -3.5103274390,  -11.1925598673,  -9.7391134964,  -38.9376342866,  -39.1364588747,  -34.3152509087,  -35.0133717779,  -39.5668870073,  -43.8015101435,  -47.8808698215,  -51.8231261469,  -55.6390801066,-1.1274120936,  -9.7160056316},
		 {-35.9596173550,  -28.3150561357,  -67.5107593418,  -56.3660321650,  -72.4193305992,  -50.4549855912,  -50.8095192002,  -11.1925598673,  -29.4934687286,  -28.2298479552,  -86.8191084142,  -87.2624269100,  -99.4663750516,  -101.4899520434,  -114.6887963359,  -126.9632982532,  -138.7877526564,  -150.2147985274,  -161.2757436666,  -3.2679228965,  -28.1628673713},
		 {-34.7622023258,  -27.5139590599,  -43.0788816126,  -53.9510809155,  -69.3165904168,  -48.2932877420,  -48.6326316818,  -9.7391134964,  -28.2298479552,  -27.0203658616,  -83.0994228821,  -83.5237478012,  -95.2048289131,  -97.1417075939,  -109.7750594384,  -121.5236715137,  -132.8415179504,  -143.7789824611,  -154.3660314919,  -3.1279117199,  -26.9562549997},
		 {-108.9968821144,  -78.4774105754,  -120.1451325288,  -165.9231303865,  -213.1787811202,  -148.5229460251,  -149.5665768073,  -38.9376342866,  -86.8191084142,  -83.0994228821,  -255.5670089261,  -256.8719933247,  -292.7964180350,  -298.7531656747,  -337.6062386759,  -373.7383505847,  -408.5456700701,  -442.1831490475,-474.7429474230,  -9.6196942737,  -82.9022539892},
		 {-106.3635407220,  -81.0830909693,  -119.4953052203,  -168.9483934211,  -215.3172312750,  -149.2813386213,  -150.3302984241,  -39.1364588747,  -87.2624269100,  -83.5237478012,  -256.8719933247,  -258.1836412761,  -294.2915044277,  -300.2786686019,  -339.3301344016,  -375.6467452507,  -410.6317989792,  -444.4410387227,-477.1670949775,  -9.6688146629,  -83.3255721182},
		 {-122.7706144486,  -91.0893597049,  -110.2354570334,  -190.0937779507,  -244.2333373753,  -170.1588431734,  -171.3545035837,  -34.3152509087,  -99.4663750516,  -95.2048289131,  -292.7964180350,  -294.2915044277,  -335.4491754407,  -342.2736649528,  -386.7866114876,  -428.1822242757,  -468.0600571367,  -506.5976344151,-543.9005412980,  -11.0210313833,  -94.9789376847},
		 {-124.8831288829,  -91.6036065038,  -133.1552163328,  -194.9929820468,  -249.2021015621,  -173.6206112314,  -174.8405965545,  -35.0133717779,  -101.4899520434,-97.1417075939,  -298.7531656747,  -300.2786686019,  -342.2736649528,  -349.2369941476,  -394.6555268607,  -436.8933057532,  -477.5824264994,  -516.9040250579,-554.9658346761,  -11.2452469086,  -96.9112207593},
		 {-156.3777071287,  -109.4812633818,  -149.6618295261,  -219.1858964680,  -281.6110215552,  -196.2001017866,  -199.2961015848,  -39.5668870073,  -114.6887963359,-109.7750594384,  -337.6062386759,  -339.3301344016,  -386.7866114876,  -394.6555268607,  -445.9807737775,  -493.7116074567,  -539.6923788374,  -584.1277807455,  -627.1395572177,  -12.7076996933,  -109.5145976182},
		 {-137.7189457615,  -121.1984321045,  -161.0477877057,  -242.6441399267,  -311.7502778245,  -217.1983038994,  -220.9393022106,  -43.8015101435,  -126.9632982532,-121.5236715137,  -373.7383505847,  -375.6467452507,  -428.1822242757,  -436.8933057532,  -493.7116074567,  -546.5508059301,  -597.4526427025,  -646.6437177308,  -694.2588046365,  -14.0677338835,  -121.2353339183},
		 {-150.5609983073,  -132.4859880666,  -171.1925953100,  -265.2422813443,  -340.7844711390,  -237.4266019686,  -241.8447656673,  -47.8808698215,  -138.7877526564, -132.8415179504,  -408.5456700701,  -410.6317989792,  -468.0600571367,  -477.5824264994,  -539.6923788374,  -597.4526427025,  -653.0951128409,  -706.8674931103,  -758.9171089844,  -15.3779020986,  -132.5263266516},
		 {-162.9747782352,  -143.3941801364,  -180.2476367979,  -287.0809209781,  -368.8428531597,  -256.9750464082,  -262.0985688004,  -51.8231261469,  -150.2147985274, -143.7789824611,  -442.1831490475,  -444.4410387227,  -506.5976344151,  -516.9040250579,  -584.1277807455,  -646.6437177308,  -706.8674931103,  -765.0672053608,  -821.4023099525,  -16.6440368210,  -143.4378399860},
		 {-174.9939620630,  -153.9528945594,  -188.3143588202,  -308.2198922950,  -396.0022981929,  -275.8971960121,  -281.7502806894,  -55.6390801066,  -161.2757436666, -154.3660314919,  -474.7429474230,  -477.1670949775,  -543.9005412980,  -554.9658346761,  -627.1395572177,  -694.2588046365,  -758.9171089844,  -821.4023099525,  -881.8856043858,  -17.8696070043,  -153.9997692668},
		 {-4.0241164987,  -3.1195403455,  -4.9868658096,  -6.2454453490,  -8.0241761588,-5.5904920568,  -5.6297749404,  -1.1274120936,  -3.2679228965,  -3.1279117199,-9.6196942737,  -9.6688146629,  -11.0210313833,  -11.2452469086,  -12.7076996933,  -14.0677338835,  -15.3779020986,  -16.6440368210,  -17.8696070043,  -0.3620910160,  -3.1204901655},
		 { -34.6797225117,  -26.8841107307,  -42.9766689245,  -53.8230719050,  -69.1521238668,  -48.1787029019,  -48.5172416849,  -9.7160056316,  -28.1628673713,  -26.9562549997,  -82.9022539892,  -83.3255721182,  -94.9789376847,  -96.9112207593,  -109.5145976182,  -121.2353339183,  -132.5263266516,  -143.4378399860,  -153.9997692668,  -3.1204901655,  -26.8922962528 },
		},//2
		{
		 {-202952.0459021931,  -84487.5368191307,  -392948.5863264250,  -572835.6340594675,  -926974.7451292673,  -388698.9280777847,  -513131.6785658543,  -11418.9342943008,  -101459.2422389524,  -121468.5330251136,  -1344982.2987839351,  -1283160.6866845351,  -1688131.5148690087,  -1733671.4952175291,  -3111426.3229178027,  -1668184.6679212388,  -1945505.0226617767,  -2227107.7486401186,  -2511438.8692091927,  -114.1563415840,  -117322.4340273267},
		 {-84487.5368191307,  -43018.3913841033,  -225255.6963581730,  -237164.3982414844,  -358010.8156779288,  -215619.4073303319,  -211312.3069415910,  -4048.3888378596,  -49335.5578349365,  -60142.8840691413,  -478116.5567254834,  -557086.3032307535,  -666611.3404391999,  -657745.3154734459,  -1002760.0649981552,  -1197197.6840397031,  -1395704.9809394360,  -1597130.2009250389,  -1800360.7779040532,  -52.5569808033,  -54014.6331549913},
		 {-392948.5863264250,  -225255.6963581730,  -1007721.9204889017,  -971822.2046051548,  -1826177.4847698216,  -1636476.7199713986,  -1247909.6100496119,  -34964.9049131644,  -967537.9976602730,  -270668.3170049111,  -1989127.3813132350,  -2028420.0787634235,  -1217934.7050193311,  -2282342.9966673739,  -2806466.8023199579,  -3034111.5272353040,  -3207448.7734984369,  -3332629.3756818362,  -3414739.4284512838,  -254.3745617277,  -261429.5651247456},
		 {-572835.6340594675,  -237164.3982414844,  -971822.2046051548,  -1616838.4121954124,  -2882651.9841126329,  -1017654.4644629715,  -1533802.2679036576,  -31649.8927716080,  -296491.0441593929,  -342847.0199667123,  -3547750.9709358816,  -3927869.7953034891,  -4725796.1968021682,  -4997831.3840503469,  -6147566.7896242943,  -7339594.9638572168,  -8556572.8915942330,  -9791439.5722677782,  -11037374.2572262082,  -322.2082340805,  -331144.5843607410},
		 {-926974.7451292673,  -358010.8156779288,  -1826177.4847698216,  -2882651.9841126329,  -4396389.9713299396,  -6051741.4944876432,  -3061725.9580332646,  -34524.6592078434,  -488907.1342069864,  -565347.1067855204,  -5850162.4054041961,  -6296203.4394869115,  -7792732.7686252696,  -8089678.5694899252,  -10137200.8385030981,  -12102828.7724278029,  -14109598.2946909945,  -16145865.9724803772,  -18200384.5430468284,  -531.3142081199,  -546050.0508775471},
		 {-388698.9280777847,  -215619.4073303319,  -1636476.7199713986,  -1017654.4644629715,  -6051741.4944876432,  -8330374.5470569916,  -4214542.8739968557,  -42163.3574379420,  -672992.9806787405,  -778214.5276542634,  -8052895.8552706260,  -8519869.6521958783,  -10726892.8732172977,  -11135646.2450577077,  -13954112.2039649282,  -16659848.5485635176,  -19422217.3254351243,  -22225191.0561376847,  -25053287.6002964526,  -731.3673857092,  -751651.6443064967},
		 {-513131.6785658543,  -211312.3069415910,  -1247909.6100496119,  -1533802.2679036576,  -3061725.9580332646,  -4214542.8739968557,  -2132241.6580936187,  -21331.4871534365,  -340483.8227797977,  -393718.0103294180,  -4074159.5291006356,  -4310413.1425554929,  -5427000.8705571759,  -5633799.3285113629,  -7276845.8664053166,  -8731149.4248291925,  -10227438.2200885750,  -11756983.0496033430,  -13311191.2509203069,  -370.0168805499,  -380279.1895304552},
		 {-11418.9342943008,  -4048.3888378596,  -34964.9049131644,  -31649.8927716080,  -34524.6592078434,  -42163.3574379420,  -21331.4871534365,  -213.4056158457,  -4755.0555002801,  -3938.8549827544,  -102099.7017324806,  -108020.2905790067,  -54293.0952092374,  -56361.9595110184,  -70627.3430157806,  -84322.1568546666,  -98303.6100842571,  -112490.5812257320,  -126804.7089743458,  -3.7017428602,  -3804.4096059172},
		 {-101459.2422389524,  -49335.5578349365,  -967537.9976602730,  -296491.0441593929,  -488907.1342069864,  -672992.9806787405,  -340483.8227797977,  -4755.0555002801,  -54369.6504262063,  -62870.2721126229,  -650576.0760359454,  -688301.8812463033,  -866602.5239787648,  -899624.8267003814,  -1127322.6085842280,  -1345913.2082260554,  -1569079.0198446328,  -1795525.2180478296,  -2024001.0341289996,  -59.0855926224,  -60724.3140961312},
		 {-121468.5330251136,  -60142.8840691413,  -270668.3170049111,  -342847.0199667123,  -565347.1067855204,  -778214.5276542634,  -393718.0103294180,  -3938.8549827544,  -62870.2721126229,  -72699.9545615995,  -752292.7701338964,  -795916.9542264941,  -1002094.6625356548,  -1040279.9578542490,  -1303577.9815542151,  -1556344.9273228969,  -1814402.4133046635,  -2076253.1698995915,  -2340450.8723967392, -68.3235455256,  -70218.4788967483},
		 {-1344982.2987839351,  -478116.5567254834,  -1989127.3813132350,  -3547750.9709358816,  -5850162.4054041961,  -8052895.8552706260,  -4074159.5291006356,  -102099.7017324806,  -650576.0760359454,  -752292.7701338964,  -7784659.7760415394,  -8236079.0168616148,  -10369587.9063662738,  -10764726.0019377880,  -13489310.9183175433,  -16104921.1615053248,  -18775277.4520105608,  -21484886.1749918684,  -24218780.8888624683,  -707.0060722706,  -726614.6770293263},
		 {-1283160.6866845351,  -557086.3032307535,  -2028420.0787634235,  -3927869.7953034891,  -6296203.4394869115,  -8519869.6521958783,  -4310413.1425554929,  -108020.2905790067,  -688301.8812463033,  -795916.9542264941,  -8236079.0168616148,  -8713675.2951945886,  -10970902.7531262394,  -11388954.2378828526,  -14271533.2207839526,  -17038818.2736910917,  -19864024.0045134276,  -22730758.3499159142,  -25623186.9897026829,  -748.0041574255,  -768749.8319763414},
		 {-1688131.5148690087,  -666611.3404391999,  -1217934.7050193311,  -4725796.1968021682,  -7792732.7686252696,  -10726892.8732172977,  -5427000.8705571759,  -54293.0952092374,  -866602.5239787648,  -1002094.6625356548,  -10369587.9063662738,-10970902.7531262394,  -13812851.9988493659,  -14339197.3158012256,  -17968491.8015681915,  -21452626.1280293539,  -25009685.1508184858,  -28619030.5368925072, -32260726.1764991060,  -941.7703313520,  -967890.0535513054},
		 {-1733671.4952175291,  -657745.3154734459,  -2282342.9966673739,  -4997831.3840503469,  -8089678.5694899252,  -11135646.2450577077,  -5633799.3285113629,  -56361.9595110184,  -899624.8267003814,  -1040279.9578542490,  -10764726.0019377880,-11388954.2378828526,  -14339197.3158012256,  -14885599.2722291537,  -18653189.7562868223,  -22270088.6838974617,  -25962691.1381895468,  -29709572.3525907099,-33490036.5423729382,  -977.6569392439,  -1004771.9659220059},
		 {-3111426.3229178027,  -1002760.0649981552,  -2806466.8023199579,  -6147566.7896242943,  -10137200.8385030981,  -13954112.2039649282,  -7276845.8664053166,  -70627.3430157806,  -1127322.6085842280,  -1303577.9815542151,  -13489310.9183175433,  -14271533.2207839526,  -17968491.8015681915,  -18653189.7562868223,  -23374368.8595171124,  -27906715.9146940336,  -32533927.2895791903,  -37229155.5439687520,  -41966466.7270270139,  -1225.1048863238,  -1259082.8087859603},
		 {-1668184.6679212388,  -1197197.6840397031,  -3034111.5272353040,  -7339594.9638572168,  -12102828.7724278029,  -16659848.5485635176,  -8731149.4248291925,  -84322.1568546666,  -1345913.2082260554,  -1556344.9273228969,  -16104921.1615053248,  -17038818.2736910917,  -21452626.1280293539,  -22270088.6838974617,  -27906715.9146940336,  -33317896.1033785157,  -38842335.0344251618,  -44447979.4835819229,  -50103866.8437782601,  -1462.6557077892,  -1503222.0321772876},
		 {-1945505.0226617767,  -1395704.9809394360,  -3207448.7734984369,  -8556572.8915942330,  -14109598.2946909945,  -19422217.3254351243,  -10227438.2200885750,  -98303.6100842571,  -1569079.0198446328,  -1814402.4133046635,  -18775277.4520105608,  -19864024.0045134276,  -25009685.1508184858,  -25962691.1381895468,  -32533927.2895791903,  -38842335.0344251618,  -45282780.9488709942,  -51817897.0649193227,  -58411586.8669425622,  -1705.1785882783,  -1752471.2131820025},
		 { -2227107.7486401186,  -1597130.2009250389,  -3332629.3756818362,  -9791439.5722677782,  -16145865.9724803772,  -22225191.0561376847,  -11756983.0496033430,  -112490.5812257320,  -1795525.2180478296,  -2076253.1698995915,  -21484886.1749918684,  -22730758.3499159142,  -28619030.5368925072,  -29709572.3525907099,  -37229155.5439687520,  -44447979.4835819229,  -51817897.0649193227,  -59296147.4530976117,  -66841424.7589466050,  -1951.2663911802,  -2005384.1886705796 },
		 { -2511438.8692091927,  -1800360.7779040532,  -3414739.4284512838,  -11037374.2572262082,  -18200384.5430468284,  -25053287.6002964526,  -13311191.2509203069,  -126804.7089743458,  -2024001.0341289996,  -2340450.8723967392,  -24218780.8888624683,  -25623186.9897026829,  -32260726.1764991060,  -33490036.5423729382,  -41966466.7270270139,  -50103866.8437782601,  -58411586.8669425622,  -66841424.7589466050,  -75346818.5659088343,  -2199.5598579807,  -2260564.0014948975 },
		 { -114.1563415840,  -52.5569808033,  -254.3745617277,  -322.2082340805,  -531.3142081199,  -731.3673857092,  -370.0168805499,  -3.7017428602,  -59.0855926224,  -68.3235455256,  -707.0060722706,  -748.0041574255,  -941.7703313520,  -977.6569392439,  -1225.1048863238,  -1462.6557077892,  -1705.1785882783,  -1951.2663911802,  -2199.5598579807,  -0.0642105886,  -65.9914503190 },
		 { -117322.4340273267,  -54014.6331549913,  -261429.5651247456,  -331144.5843607410,  -546050.0508775471,  -751651.6443064967,  -380279.1895304552,  -3804.4096059172,  -60724.3140961312,  -70218.4788967483,  -726614.6770293263,  -768749.8319763414,  -967890.0535513054,  -1004771.9659220059,  -1259082.8087859603,  -1503222.0321772876,  -1752471.2131820025,  -2005384.1886705796,  -2260564.0014948975,-65.9914503190,  -67821.7037177830 },
		},//3
		{
		 {0.0000000000,  0.0000450208,  0.0002044159,  0.0001294234,  0.0002556658,  0.0003302683,  0.0001166617,  0.0000956413,  0.0000627136,  0.0000287478,  0.0005168166,  0.0005612887,  0.0007061323,  0.0007886389,  0.0006283340,  0.0008682860,0.0010371527,  0.0012101166,  0.0013866202,  0.0000000000,  0.0000000000},
		 {0.0000450208,  0.0000940567,  0.0002930435,  0.0001880922,  0.0003325352,  0.0003693074,  0.0001650950,  0.0000972528,  0.0001130295,  0.0000700841,  0.0006298769,  0.0006590185,  0.0008289294,  0.0009242995,  0.0007679336,  0.0009347698,0.0011064611,  0.0012820662,  0.0014610557,  0.0000838952,  0.0000410447},
		 {0.0002044159,  0.0002930435,  0.0004323828,  0.0001469597,  0.0005303245,  0.0006897560,  0.0003149134,  0.0002645554,  0.0002599301,  0.0002506143,  0.0008293198,  0.0008583943,  0.0011343462,  0.0011227734,  0.0010297310,  0.0012153094,0.0014089844,  0.0016102254,  0.0018188378,  0.0004689675,  0.0002294364},
		 {0.0001294234,  0.0001880922,  0.0001469597,  0.0002806010,  0.0004268128,  0.0004482006,  0.0002378296,  0.0001756446,  0.0002053642,  0.0001488444,  0.0007404567,  0.0007706787,  0.0009492831,  0.0010365571,  0.0009129197,  0.0010909666,0.0012735667,  0.0014598291,  0.0016492597,  0.0002446720,  0.0001197026},
		 {0.0002556658,  0.0003325352,  0.0005303245,  0.0004268128,  0.0006114930,  0.0004748482,  0.0003504810,  0.0003184083,  0.0003461453,  0.0002663160,  0.0009700384,  0.0010027362,  0.0012080671,  0.0013092043,  0.0011793078,  0.0013860767,0.0015973323,  0.0018121846,  0.0020301505,  0.0004820322,  0.0002358281},
		 {0.0003302683,  0.0003693074,  0.0006897560,  0.0004482006,  0.0004748482,  0.0003086357,  0.0002973861,  0.0003133180,  0.0003303966,  0.0002686830,  0.0006650385,  0.0006758431,  0.0007853149,  0.0008343664,  0.0007883891,  0.0008981755,0.0010092531,  0.0011213467,  0.0012343230,  0.0005254385,  0.0002570641},
		 {0.0001166617,  0.0001650950,  0.0003149134,  0.0002378296,  0.0003504810,  0.0002973861,  0.0001902943,  0.0001597095,  0.0001725424,  0.0001266715,  0.0005930137,  0.0006200824,  0.0007565369,  0.0008268788,  0.0007262411,  0.0008648442,0.0010067523,  0.0011512887,  0.0012980825,  0.0002128568,  0.0001041375},
		 {0.0000956413,  0.0000972528,  0.0002645554,  0.0001756446,  0.0003184083,  0.0003133180,  0.0001597095,  0.0001080242,  0.0001144246,  0.0000774403,  0.0005302152,  0.0005614177,  0.0007970019,  0.0008808900,  0.0007556451,  0.0009173775,0.0010837412,  0.0012538371,  0.0014271607,  0.0000999418,  0.0000488952},
		 {0.0000627136,  0.0001130295,  0.0002599301,  0.0002053642,  0.0003461453,  0.0003303966,  0.0001725424,  0.0001144246,  0.0001328036,  0.0000873311,  0.0006395400,  0.0006763413,  0.0008404522,  0.0009279233,  0.0007981321,  0.0009672208,0.0011410969,  0.0013188303,  0.0014998996,  0.0001179718,  0.0000577162},
		 {0.0000287478,  0.0000700841,  0.0002506143,  0.0001488444,  0.0002663160,  0.0002686830,  0.0001266715,  0.0000774403,  0.0000873311,  0.0000522789,  0.0005133098,  0.0005455982,  0.0006834452,  0.0007578490,  0.0006447625,  0.0007870920,0.0009336331,  0.0010835702,  0.0012364438,  0.0000543470,  0.0000265886},
		 {0.0005168166,  0.0006298769,  0.0008293198,  0.0007404567,  0.0009700384,  0.0006650385,  0.0005930137,  0.0005302152,  0.0006395400,  0.0005133098,  0.0014092815,  0.0014408326,  0.0016920957,  0.0018092475,  0.0016837724,  0.0019372342,0.0021945941,  0.0024550510,  0.0027181933,  0.0009865248,  0.0004826447},
		 {0.0005612887,  0.0006590185,  0.0008583943,  0.0007706787,  0.0010027362,  0.0006758431,  0.0006200824,  0.0005614177,  0.0006763413,  0.0005455982,  0.0014408326,  0.0014698790,  0.0017196141,  0.0018344889,  0.0017166092,  0.0019680238,0.0022229926,  0.0024807775,  0.0027410057,  0.0010557017,  0.0005164886},
		 {0.0007061323,  0.0008289294,  0.0011343462,  0.0009492831,  0.0012080671,  0.0007853149,  0.0007565369,  0.0007970019,  0.0008404522,  0.0006834452,  0.0016920957,  0.0017196141,  0.0019982117,  0.0021230585,  0.0020059857,  0.0022853886,0.0025680803,  0.0028533602,  0.0031408886,  0.0013364950,  0.0006538631},
		 {0.0007886389,  0.0009242995,  0.0011227734,  0.0010365571,  0.0013092043,  0.0008343664,  0.0008268788,  0.0008808900,  0.0009279233,  0.0007578490,  0.0018092475,  0.0018344889,  0.0021230585,  0.0022501675,  0.0021385403,  0.0024272305,0.0027188758,  0.0030128325,  0.0033087995,  0.0014903586,  0.0007291389},
		 {0.0006283340,  0.0007679336,  0.0010297310,  0.0009129197,  0.0011793078,  0.0007883891,  0.0007262411,  0.0007556451,  0.0007981321,  0.0006447625,  0.0016837724,  0.0017166092,  0.0020059857,  0.0021385403,  0.0020043722,  0.0022955155,0.0025906636,  0.0028889820,  0.0031900514,  0.0012499414,  0.0006115179},
		 {0.0008682860,  0.0009347698,  0.0012153094,  0.0010909666,  0.0013860767,  0.0008981755,  0.0008648442,  0.0009173775,  0.0009672208,  0.0007870920,  0.0019372342,  0.0019680238,  0.0022853886,  0.0024272305,  0.0022955155,  0.0026136755,0.0029355048,  0.0032602193,  0.0035874406,  0.0015406100,  0.0007537238},
		 {0.0010371527,  0.0011064611,  0.0014089844,  0.0012735667,  0.0015973323,  0.0010092531,  0.0010067523,  0.0010837412,  0.0011410969,  0.0009336331,  0.0021945941,  0.0022229926,  0.0025680803,  0.0027188758,  0.0025906636,  0.0029355048,0.0032836326,  0.0036343220,  0.0039872409,  0.0018403293,  0.0009003576},
		 {0.0012101166,  0.0012820662,  0.0016102254,  0.0014598291,  0.0018121846,  0.0011213467,  0.0011512887,  0.0012538371,  0.0013188303,  0.0010835702,  0.0024550510,  0.0024807775,  0.0028533602,  0.0030128325,  0.0028889820,  0.0032602193,0.0036343220,  0.0040106315,  0.0043888660,  0.0021473520,  0.0010505645},
		 {0.0013866202,  0.0014610557,  0.0018188378,  0.0016492597,  0.0020301505,  0.0012343230,  0.0012980825,  0.0014271607,  0.0014998996,  0.0012364438,  0.0027181933,  0.0027410057,  0.0031408886,  0.0033087995,  0.0031900514,  0.0035874406,0.0039872409,  0.0043888660,  0.0047920886,  0.0024606889,  0.0012038606},
		 {0.0000000000,  0.0000838952,  0.0004689675,  0.0002446720,  0.0004820322,  0.0005254385,  0.0002128568,  0.0000999418,  0.0001179718,  0.0000543470,  0.0009865248,  0.0010557017,  0.0013364950,  0.0014903586,  0.0012499414,  0.0015406100,0.0018403293,  0.0021473520,  0.0024606889,  0.0000000000,  0.0000000000},
		 {0.0000000000,  0.0000410447,  0.0002294364,  0.0001197026,  0.0002358281,  0.0002570641,  0.0001041375,  0.0000488952,  0.0000577162,  0.0000265886,  0.0004826447,  0.0005164886,  0.0006538631,  0.0007291389,  0.0006115179,  0.0007537238,0.0009003576,  0.0010505645,  0.0012038606,  0.0000000000,  0.0000000000},
		},//4
		{
		 {0.0000000000,-4614728.6396312006,-181445291.4172290862,-143643391.8103487492,-455008817.6693986654,-419951681.2783505321,-147364490.8297181726,-944742.5940752613,-8135046.8277968243,-5719559.6490243291,-1282291639.6957836151,-1331092343.3620364666,-2175480215.2497801781,-2476564632.8229880333,-4053267533.2625484467,-2075912432.4917237759,-2821810215.2474007607,-3682258260.9390988350,-4653738653.4386119843,0.0000000000,0.0000000000},
		 {-4614728.6396312006,-3926597.7939468529,-125486637.7675454170,-63269121.7505128533,-162406119.9305384159,-216160103.9705956280,-62723023.9261655957,-233284.2093844221,-5591423.2477838332,-5456660.3278803695,-380959929.4593563080,-506905904.4864736795,-723390897.9820325375,-776512559.8052958250,-1049744188.3023114204,-1486235936.1923186779,-2000916162.7792308331,-2591632561.0271186829,-3255783480.0858778954,-388.0273203712,-2699813.1491087088},
		 {-181445291.4172290862,-125486637.7675454170,-1516770899.0678410530,-357221316.7075282931,-2559147938.7366638184,-7037329611.7093887329,-1457292735.9799566269,-13304778.9421070535,-869945583.4136831760,-161211950.6342855394,-3704079032.1260967255,-4030383065.3408970833,-2256297590.1328597069,-5375055568.2869091034,-5900201959.6567535400,-7028874512.9855213165,-8059369474.4104766846,-8969472879.3949832916,-9745129624.1145610809,-19882.9182422165,-138341197.3714688122},
		 {-143643391.8103487492,-63269121.7505128533,-357221316.7075282931,-1030029657.6289366484,-2885342977.9316453934,-1692973074.4539268017,-1078437518.4114587307,-5591378.8534323219,-92588767.6918302178,-97944107.7558639050,-5516167603.2828626633,-6787733478.4054384232,-9559942476.4751510620,-11095933125.6388053894,-11701977982.4909706116,-16265274258.1686000824,-21596395424.4406166077,-27671443913.7386398315,-34462329559.7536621094,-10611.4815130344,-73832474.7159820050},
		 {-455008817.6693986654,-162406119.9305384159,-2559147938.7366638184,-2885342977.9316453934,-6090640538.0713586807,-18462710922.8472023010,-3439497392.9681658745,-9252430.3576115593,-257067715.7499521077,-288667930.2346279621,-11903705832.6853981018,-13971144548.2206172943,-20040387587.9490623474,-22480808851.1300621033,-24900574240.9957809448,-34040248617.5883941650,-44618025206.7205581665,-56583232041.2648315430,-69877815738.5769500732,-34436.8457056478,-239604388.5801729560},
		 {-419951681.2783505321,-216160103.9705956280,-7037329611.7093887329,-1692973074.4539268017,-18462710922.8472023010,-46844215257.0002441406,-11392534328.2444763184,-29955129.2374527864,-957842040.9538952112,-1136869688.7326874733,-31857320580.1837615967,-35871215404.3799591064,-50854346084.9046478271,-55928149911.0574340820,-64981833164.6499404907,-86106479631.4294586182,-110048551169.2396545410,-136676669612.2826843262,-165847553813.6428527832,-146533.9889620091,-1019552926.8726761341},
		 {-147364490.8297181726,-62723023.9261655957,-1457292735.9799566269,-1078437518.4114587307,-3439497392.9681658745,-11392534328.2444763184,-1839989919.8690087795,-3853953.1663952046,-126253670.9240283072,-135281782.1603285372,-7169965302.5389404297,-8306910269.4995555878,-12365287570.8670368195,-13989604558.8248481750,-15776656027.9051589966,-22007977000.7097206116,-29337853512.5132598877,-37747839729.0329132080,-47212042826.7887191772,-14982.8323706911,-104247422.0799462646},
		 {-944742.5940752613,-233284.2093844221,-13304778.9421070535,-5591378.8534323219,-9252430.3576115593,-29955129.2374527864,-3853953.1663952046,-6505.5337233741,-336524.9509193532,-206401.9558477842,-59402861.5103567988,-69691391.6724136174,-32510195.9481189325,-37193869.9896014333,-39232429.6542228758,-55398587.3373311087,-74436477.0956747234,-96265706.3152419478,-120789485.6636129469,-17.5565621275,-122154.8968242446},
		 {-8135046.8277968243,-5591423.2477838332,-869945583.4136831760,-92588767.6918302178,-257067715.7499521077,-957842040.9538952112,-126253670.9240283072,-336524.9509193532,-7353881.5979816737,-7058101.3625697214,-585165408.0565376282,-685669211.7896302938,-1039550736.3173624277,-1188048657.9436957836,-1256534971.3861305714,-1771122998.9538245201,-2376595338.1820616722,-3070378178.0921549797,-3849381140.6508440971,-628.4103588074,-4372348.1844562255},
		 {-5719559.6490243291,-5456660.3278803695,-161211950.6342855394,-97944107.7558639050,-288667930.2346279621,-1136869688.7326874733,-135281782.1603285372,-206401.9558477842,-7058101.3625697214,-6166766.5268192580,-685492518.9153730869,-807297944.8862978220,-1233811002.8936073780,-1416175368.8477663994,-1481534755.1335902214,-2103588515.0950922966,-2838057445.1031403542,-3681902036.7262039185,-4631432359.8820667267,-422.5255385117,-2939844.5542881973},
		 {-1282291639.6957836151,-380959929.4593563080,-3704079032.1260967255,-5516167603.2828626633,-11903705832.6853981018,-31857320580.1837615967,-7169965302.5389404297,-59402861.5103567988,-585165408.0565376282,-685492518.9153730869,-21306534404.3925895691,-24136061137.2098426819,-34582928475.6836166382,-38275799628.2789611816,-43801337058.8777084351,-58615083291.4336776733,-75525060676.8910369873,-94442532287.0996856689,-115269187054.1555786133,-86831.4669381602,-604155233.1207035780},
		 {-1331092343.3620364666,-506905904.4864736795,-4030383065.3408970833,-6787733478.4054384232,-13971144548.2206172943,-35871215404.3799591064,-8306910269.4995555878,-69691391.6724136174,-685669211.7896302938,-807297944.8862978220,-24136061137.2098426819,-27281752506.7163200378,-38940869474.8426589966,-43001063674.9190216064,-49478122523.2347640991,-65977429659.9876632690,-84764243453.6638946533,-105738400145.2727813721,-128789553541.2907714844,-102955.1696354388,-716340592.9371031523},
		 {-2175480215.2497801781,-723390897.9820325375,-2256297590.1328597069,-9559942476.4751510620,-20040387587.9490623474,-50854346084.9046478271,-12365287570.8670368195,-32510195.9481189325,-1039550736.3173624277,-1233811002.8936073780,-34582928475.6836166382,-38940869474.8426589966,-55207760100.7117538452,-60716964145.2098617554,-70542947552.0864105225,-93477929782.5092620850,-119472308222.8510131836,-148383460640.1095275879,-180055836424.6035766602,-159022.3738158343,-1106444503.4947462082},
		 {-2476564632.8229880333,-776512559.8052958250,-5375055568.2869091034,-11095933125.6388053894,-22480808851.1300621033,-55928149911.0574340820,-13989604558.8248481750,-37193869.9896014333,-1188048657.9436957836,-1416175368.8477663994,-38275799628.2789611816,-43001063674.9190216064,-60716964145.2098617554,-66611987938.0166549683,-77845344391.1357879639,-102766011862.8908233643,-130929491490.5818939209,-162178519454.4817810059,-196342613822.0315551758,-183557.0742579783,-1277151831.0091667175},
		 {-4053267533.2625484467,-1049744188.3023114204,-5900201959.6567535400,-11701977982.4909706116,-24900574240.9957809448,-64981833164.6499404907,-15776656027.9051589966,-39232429.6542228758,-1256534971.3861305714,-1481534755.1335902214,-43801337058.8777084351,-49478122523.2347640991,-70542947552.0864105225,-77845344391.1357879639,-89716282058.4963684082,-119507839191.8403167725,-153404047429.5558471680,-191223324278.8817749023,-232765963589.9654846191,-189298.7210986006,-1317101011.9663808346},
		 {-2075912432.4917237759,-1486235936.1923186779,-7028874512.9855213165,-16265274258.1686000824,-34040248617.5883941650,-86106479631.4294586182,-22007977000.7097206116,-55398587.3373311087,-1771122998.9538245201,-2103588515.0950922966,-58615083291.4336776733,-65977429659.9876632690,-93477929782.5092620850,-102766011862.8908233643,-119507839191.8403167725,-158267268733.3599548340,-202177051902.7691955566,-250995600202.0557861328,-304459679564.3323974609,-271377.6184531760,-1888188857.3538105488},
		 { -2821810215.2474007607,-2000916162.7792308331,-8059369474.4104766846,-21596395424.4406166077,-44618025206.7205581665,-110048551169.2396545410,-29337853512.5132598877,-74436477.0956747234,-2376595338.1820616722,-2838057445.1031403542,-75525060676.8910369873,-84764243453.6638946533,-119472308222.8510131836,-130929491490.5818939209,-153404047429.5558471680,-202177051902.7691955566,-257225041074.4031372070,-318238212624.7896118164,-384881624035.8220214844,-368711.3264581161,-2565416492.9540128708 },
		 { -3682258260.9390988350,-2591632561.0271186829,-8969472879.3949832916,-27671443913.7386398315,-56583232041.2648315430,-136676669612.2826843262,-37747839729.0329132080,-96265706.3152419478,-3070378178.0921549797,-3681902036.7262039185,-94442532287.0996856689,-105738400145.2727813721,-148383460640.1095275879,-162178519454.4817810059,-191223324278.8817749023,-250995600202.0557861328,-318238212624.7896118164,-392565305014.1398925781,-473562449187.4775390625,-480910.6634432627,-3346076073.8928589821 },
		 { -4653738653.4386119843,-3255783480.0858778954,-9745129624.1145610809,-34462329559.7536621094,-69877815738.5769500732,-165847553813.6428527832,-47212042826.7887191772,-120789485.6636129469,-3849381140.6508440971,-4631432359.8820667267,-115269187054.1555786133,-128789553541.2907714844,-180055836424.6035766602,-196342613822.0315551758,-232765963589.9654846191,-304459679564.3323974609,-384881624035.8220214844,-473562449187.4775390625,-570000900098.9929199219,-607496.3300300046,-4226832735.0801973343 },
		 { 0.0000000000,-388.0273203712,-19882.9182422165,-10611.4815130344,-34436.8457056478,-146533.9889620091,-14982.8323706911,-17.5565621275,-628.4103588074,-422.5255385117,-86831.4669381602,-102955.1696354388,-159022.3738158343,-183557.0742579783,-189298.7210986006,-271377.6184531760,-368711.3264581161,-480910.6634432627,-607496.3300300046,0.0000000000,0.0000000000 },
		 { 0.0000000000,-2699813.1491087088,-138341197.3714688122,-73832474.7159820050,-239604388.5801729560,-1019552926.8726761341,-104247422.0799462646,-122154.8968242446,-4372348.1844562255,-2939844.5542881973,-604155233.1207035780,-716340592.9371031523,-1106444503.4947462082,-1277151831.0091667175,-1317101011.9663808346,-1888188857.3538105488,-2565416492.9540128708,-3346076073.8928589821,-4226832735.0801973343,0.0000000000,0.0000000000 },
		},//5

		{
		 {355.8396988577,211.4313351286,514.5920633740,701.5275892179,985.2816023159,456.9937198038,604.4857788526,57.6529910823,236.5858154939,249.1339446794,1293.9517806714,1251.3278482203,1521.9563213779,1554.0751151475,2247.3552735288,1622.8444102328,1820.6373757139,2015.3558992485,2206.8148778769,4.2051874933,245.3470351521},
		 {211.4313351286,140.9492486583,367.0902094922,415.5275803932,560.8714642730,319.9397557426,356.9550006855,31.2524378848,153.6234427422,163.4513727069,702.4951531905,761.5706352220,877.4304233900,875.6966112523,1153.6277978586,1316.2778351841,1476.3945755482,1633.9473715343,1788.7907998718,2.6466075536,154.4134042840},
		 {514.5920633740,367.0902094922,873.8197797159,940.7229164227,1439.0421264673,1030.1316750874,995.8021566102,108.3382113554,850.8911913725,390.4061415915,1604.2489617055,1611.5978754220,1252.0607652930,1802.8113997819,2100.4561225724,2264.4800259307,2401.8058443498,2515.4725069364,2607.6908871845,6.5897524564,384.4718529540},
		 {701.5275892179,415.5275803932,940.7229164227,1383.0411840324,2053.0562873063,863.0653454811,1231.4230472128,112.4873468219,475.7711793985,491.1603066334,2454.1914049009,2584.0344128465,2986.4397445393,3101.0377186100,3613.6982551766,4123.1937416572,4624.7537650479,5118.2823234010,5603.3238834669,8.2904045104,483.6945249350},
		 {985.2816023159,560.8714642730,1439.0421264673,2053.0562873063,2787.4776835087,2550.0859079440,1949.9065121445,126.1085682757,675.4392182846,697.2867376799,3484.1478337184,3609.6225659639,4239.7661183592,4355.9867171818,5130.2677217199,5853.5844084160,6565.6353370789,7266.2842163923,7954.8843383682,11.7696585759,686.6877733613},
		 {456.9937198038,319.9397557426,1030.1316750874,863.0653454811,2550.0859079440,2332.9112826149,1783.8453551919,107.7422595418,617.9163486799,637.9032535663,3187.4250848801,3270.0885482672,3878.6921579215,3985.0149862705,4693.3553938522,5355.0717909508,6006.4818630975,6647.4609260420,7277.4173478092,10.7673114850,628.2069357420},
		 {604.4857788526,356.9550006855,995.8021566102,1231.4230472128,1949.9065121445,1783.8453551919,1364.0056846366,82.3844141326,472.4856948929,487.7685510015,2437.2437456397,2500.4518223060,2965.8165922076,3047.1156475615,3651.4013575383,4178.0667610217,4699.0685587396,5214.1097304999,5722.5342921279,8.2331543096,480.3543249903},
		 {57.6529910823,31.2524378848,108.3382113554,112.4873468219,126.1085682757,107.7422595418,82.3844141326,4.9759262505,34.5305035703,29.4606736315,248.7794747354,255.2313826088,179.1319971212,184.0423689183,216.7560844403,247.3165349515,277.4010021939,307.0037277992,336.0973880681,0.4972732899,29.0128626927},
		 {236.5858154939,153.6234427422,850.8911913725,475.7711793985,675.4392182846,617.9163486799,472.4856948929,34.5305035703,163.6670098907,168.9609254292,844.2507371871,866.1457427306,1027.3460948715,1055.5077375213,1243.1252956930,1418.3935894356,1590.9320551174,1760.7076677206,1927.5637221564,2.8519291957,166.3926694692},
		 {249.1339446794,163.4513727069,390.4061415915,491.1603066334,697.2867376799,637.9032535663,487.7685510015,29.4606736315,168.9609254292,174.4260760977,871.5585745999,894.1617882921,1060.5762703274,1089.6488195656,1283.3349892867,1464.2724496149,1642.3917838240,1817.6588986806,1989.9120203681,2.9441766944,171.7747482337},
		 {1293.9517806714,702.4951531905,1604.2489617055,2454.1914049009,3484.1478337184,3187.4250848801,2437.2437456397,248.7794747354,844.2507371871,871.5585745999,4354.9357180592,4467.8776883633,5299.4045563659,5444.6719965384,6412.4679005597,7316.5620506059,8206.5748084750,9082.3358197647,9943.0367457218,14.7112318328,858.3106268984},
		 {1251.3278482203,761.5706352220,1611.5978754220,2584.0344128465,3609.6225659639,3270.0885482672,2500.4518223060,255.2313826088,866.1457427306,894.1617882921,4467.8776883633,4583.7487234073,5436.8406130114,5585.8754545822,6578.7704147847,7506.3115641110,8419.4061309842,9317.8793429892,10200.9018977173,15.0927565249,880.5702650678},
		 {1521.9563213779,877.4304233900,1252.0607652930,2986.4397445393,4239.7661183592,3878.6921579215,2965.8165922076,179.1319971212,1027.3460948715,1060.5762703274,5299.4045563659,5436.8406130114,6448.7033724914,6625.4754270476,7803.1603242403,8903.3282643249,9986.3609356722,11052.0510385756,12099.4149272711,17.9017037338,1044.4551978347},
		 {1554.0751151475,875.6966112523,1802.8113997819,3101.0377186100,4355.9867171818,3985.0149862705,3047.1156475615,184.0423689183,1055.5077375213,1089.6488195656,5444.6719965384,5585.8754545822,6625.4754270476,6807.0931625830,8017.0607942839,9147.3865716720,10260.1073678107,11355.0102004877,12431.0844602110,18.3924257854,1073.0858357395},
		 {2247.3552735288,1153.6277978586,2100.4561225724,3613.6982551766,5130.2677217199,4693.3553938522,3651.4013575383,216.7560844403,1243.1252956930,1283.3349892867,6412.4679005597,6578.7704147847,7803.1603242403,8017.0607942839,9442.1013851461,10773.3437022747,12083.8517350930,13373.3746435872,14640.7221814153,21.6616979016,1263.8279184861},
		 {1622.8444102328,1316.2778351841,2264.4800259307,4123.1937416572,5853.5844084160,5355.0717909508,4178.0667610217,247.3165349515,1418.3935894356,1464.2724496149,7316.5620506059,7506.3115641110,8903.3282643249,9147.3865716720,10773.3437022747,12292.2779361307,13787.5545579592,15258.8873618009,16704.9182884263,24.7157817047,1442.0150759873},
		 {1820.6373757139,1476.3945755482,2401.8058443498,4624.7537650479,6565.6353370789,6006.4818630975,4699.0685587396,277.4010021939,1590.9320551174,1642.3917838240,8206.5748084750,8419.4061309842,9986.3609356722,10260.1073678107,12083.8517350930,13787.5545579592,15464.7219723166,17115.0329570899,18736.9642538711,27.7222977276,1617.4269437185},
		 {2015.3558992485,1633.9473715343,2515.4725069364,5118.2823234010,7266.2842163923,6647.4609260420,5214.1097304999,307.0037277992,1760.7076677206,1817.6588986806,9082.3358197647,9317.8793429892,11052.0510385756,11355.0102004877,13373.3746435872,15258.8873618009,17115.0329570899,18941.4561507563,20736.4711305431,30.6806705031,1790.0299466736},
		 {2206.8148778769,1788.7907998718,2607.6908871845,5603.3238834669,7954.8843383682,7277.4173478092,5722.5342921279,336.0973880681,1927.5637221564,1989.9120203681,9943.0367457218,10200.9018977173,12099.4149272711,12431.0844602110,14640.7221814153,16704.9182884263,18736.9642538711,20736.4711305431,22701.5933477045,33.5881694147,1959.6647700458},
		 {4.2051874933,2.6466075536,6.5897524564,8.2904045104,11.7696585759,10.7673114850,8.2331543096,0.4972732899,2.8519291957,2.9441766944,14.7112318328,15.0927565249,17.9017037338,18.3924257854,21.6616979016,24.7157817047,27.7222977276,30.6806705031,33.5881694147,0.0496954160,2.8994243393},
		 {245.3470351521,154.4134042840,384.4718529540,483.6945249350,686.6877733613,628.2069357420,480.3543249903,29.0128626927,166.3926694692,171.7747482337,858.3106268984,880.5702650678,1044.4551978347,1073.0858357395,1263.8279184861,1442.0150759873,1617.4269437185,1790.0299466736,1959.6647700458,2.8994243393,169.1637213362},
		},//6
		{
		 {-149025.7721131084,-69849.9085811281,-261793.6694868710,-373206.5248236733,-576075.8705524600,-249819.6514496286,-330011.3470524917,-11929.0343569359,-81929.1160914173,-93979.7859124392,-808533.5310913633,-774863.7766708832,-993083.7453312733,-1017925.9047632829,-1699982.8926359355,-1006551.5076866939,-1158804.9661826766,-1311774.0293174253,-1464821.3712670824,-231.3002533154,-91361.2304239775},
		 {-69849.9085811281,-38907.9179667094,-161419.4070600187,-174106.0680687244,-253201.4403168817,-149759.9180597324,-153250.5269622197,-4872.2594306260,-43870.5910401956,-51109.3059124696,-330992.3261172428,-376500.8919579549,-444870.5465904691,-440626.5793331328,-639834.3465442420,-752443.7865408087,-865985.9741034651,-979987.4819991864,-1093974.4312889138,-118.1855590475,-46682.0850308626},
		 {-261793.6694868710,-161419.4070600187,-585169.9999969652,-585409.0229141217,-1027150.5838987939,-854053.5330707127,-704845.7181228390,-31040.5742355832,-564483.1569697654,-186227.9178247397,-1127491.5046223318,-1144032.7439234599,-748523.4861927117,-1284749.1291604007,-1551644.0591862630,-1675938.7808539772,-1773645.1835034818,-1847759.7216307358,-1900661.1952534716,-458.3386113199,-181039.0558626673},
		 {-373206.5248236733,-174106.0680687244,-585409.0229141217,-934624.3149490227,-1567626.9474771973,-586582.4699046832,-868086.4321082981,-29412.3919864860,-211375.5360579286,-235354.3874104787,-1910670.7455672245,-2080263.9602203751,-2469536.9960164465,-2595798.8855773089,-3135935.2821712270,-3687853.0057165022,-4244342.2812856082,-4803082.7627270725,-5361751.8900025040,-579.2472168179,-228796.7163442620},
		 {-576075.8705524600,-253201.4403168817,-1027150.5838987939,-1567626.9474771973,-2299935.0100962641,-2762821.3807697082,-1604093.8221939949,-32377.9059671512,-331584.3055277649,-369199.8731633204,-2997264.6980656139,-3185082.7842718475,-3873956.8687590356,-4007719.5065056179,-4919334.2905765185,-5785126.3234826885,-6658089.7392805368,-7534584.6164277317,-8410967.5604627449,-908.6637446295,-358912.8700080685},
		 {-249819.6514496286,-149759.9180597324,-854053.5330707127,-586582.4699046832,-2762821.3807697082,-3318868.5543417814,-1926934.7565315235,-35102.1008246860,-398319.1719845338,-443505.2724861092,-3600496.0815372546,-3770417.3918176848,-4653631.8714236896,-4814315.6620056396,-5909402.6124631781,-6949444.4959567124,-7998101.0793856075,-9050999.8683022708,-10103764.1963780038,-1091.5419829569,-431147.9005879418},
		 {-330011.3470524917,-153250.5269622197,-704845.7181228390,-868086.4321082981,-1604093.8221939949,-1926934.7565315235,-1118778.1302973605,-20380.2762896032,-231264.0721145034,-257499.1176256326,-2090447.6711478753,-2189103.9671998522,-2701898.2072725035,-2795191.2002952425,-3521245.1928126770,-4158662.7062611720,-4805767.9394671284,-5459735.5691761579,-6117702.8089957107,-633.7491680475,-250324.4287158191},
		 {-11929.0343569359,-4872.2594306260,-31040.5742355832,-29412.3919864860,-32377.9059671512,-35102.1008246860,-20380.2762896032,-371.2582954497,-5607.2810306032,-4690.7452151791,-83663.3897259805,-87611.7880807625,-49219.2602620515,-50918.7366123642,-62500.9526348912,-73500.9830544529,-84592.1270751573,-95728.1388941227,-106862.7285844565,-11.5447225802,-4560.0471452812},
		 {-81929.1160914173,-43870.5910401956,-564483.1569697654,-211375.5360579286,-331584.3055277649,-398319.1719845338,-231264.0721145034,-5607.2810306032,-47804.8950034150,-53227.9751412082,-432119.1377270157,-452512.5080896004,-558512.8676823850,-577797.5827495754,-709226.1464950965,-834048.3909074061,-959904.5419324565,-1086269.8278477886,-1212618.9762361448,-131.0031089568,-51744.8859311991},
		 {-93979.7859124392,-51109.3059124696,-186227.9178247397,-235354.3874104787,-369199.8731633204,-443505.2724861092,-257499.1176256326,-4690.7452151791,-53227.9751412082,-59266.2600227589,-481139.5719900824,-503846.4058954300,-621871.6521586174,-643344.0627585853,-789682.1380412853,-928664.4602945530,-1068797.9775348052,-1209498.3869161557,-1350180.8280981276,-145.8643560764,-57614.9262922503},
		 {-808533.5310913633,-330992.3261172428,-1127491.5046223318,-1910670.7455672245,-2997264.6980656139,-3600496.0815372546,-2090447.6711478753,-83663.3897259805,-432119.1377270157,-481139.5719900824,-3906021.5314059448,-4090361.7671872033,-5048522.7250287710,-5222841.5776389521,-6410853.7599553801,-7539149.9442843050,-8676791.8417238984,-9819035.9233071804,-10961134.1341748964,-1184.1664013263,-467733.5969208844},
		 {-774863.7766708832,-376500.8919579549,-1144032.7439234599,-2080263.9602203751,-3185082.7842718475,-3770417.3918176848,-2189103.9671998522,-87611.7880807625,-452512.5080896004,-503846.4058954300,-4090361.7671872033,-4283401.7303649094,-5286782.0029144883,-5469327.6351603959,-6713406.6988389418,-7894951.5360434242,-9086283.1466406360,-10282434.1362186149,-11478432.3708788101,-1240.0517854363,-489807.7511071717},
		 {-993083.7453312733,-444870.5465904691,-748523.4861927117,-2469536.9960164465,-3873956.8687590356,-4653631.8714236896,-2701898.2072725035,-49219.2602620515,-558512.8676823850,-621871.6521586174,-5048522.7250287710,-5286782.0029144883,-6525202.5623007398,-6750509.2283617072,-8286011.9007898029,-9744331.8002957124,-11214731.0098211505,-12691078.5304471198,-14167237.5135505721,-1530.5320104468,-604544.4640609999},
		 {-1017925.9047632829,-440626.5793331328,-1284749.1291604007,-2595798.8855773089,-4007719.5065056179,-4814315.6620056396,-2795191.2002952425,-50918.7366123642,-577797.5827495754,-643344.0627585853,-5222841.5776389521,-5469327.6351603959,-6750509.2283617072,-6983595.4374003606,-8572116.9984452240,-10080790.7668879163,-11601960.9280449376,-13129284.7876647953,-14656413.5998093374,-1583.3792686401,-625418.5896352984},
		 {-1699982.8926359355,-639834.3465442420,-1551644.0591862630,-3135935.2821712270,-4919334.2905765185,-5909402.6124631781,-3521245.1928126770,-62500.9526348912,-709226.1464950965,-789682.1380412853,-6410853.7599553801,-6713406.6988389418,-8286011.9007898029,-8572116.9984452240,-10521971.1671022736,-12373814.9875957053,-14240997.6892379709,-16115733.8386235014,-17990230.5741149187,-1943.5421861648,-767679.2522437507},
		 {-1006551.5076866939,-752443.7865408087,-1675938.7808539772,-3687853.0057165022,-5785126.3234826885,-6949444.4959567124,-4158662.7062611720,-73500.9830544529,-834048.3909074061,-928664.4602945530,-7539149.9442843050,-7894951.5360434242,-9744331.8002957124,-10080790.7668879163,-12373814.9875957053,-14551579.2540814076,-16747382.0111158863,-18952067.6061100364,-21156471.6508904286,-2285.6013431572,-902789.1149122039},
		 {-1158804.9661826766,-865985.9741034651,-1773645.1835034818,-4244342.2812856082,-6658089.7392805368,-7998101.0793856075,-4805767.9394671284,-84592.1270751573,-959904.5419324565,-1068797.9775348052,-8676791.8417238984,-9086283.1466406360,-11214731.0098211505,-11601960.9280449376,-14240997.6892379709,-16747382.0111158863,-19274526.7938928865,-21811894.8162273280,-24348938.8030118868,-2630.4937870051,-1039018.0968619760},
		 {-1311774.0293174253,-979987.4819991864,-1847759.7216307358,-4803082.7627270725,-7534584.6164277317,-9050999.8683022708,-5459735.5691761579,-95728.1388941227,-1086269.8278477886,-1209498.3869161557,-9819035.9233071804,-10282434.1362186149,-12691078.5304471198,-13129284.7876647953,-16115733.8386235014,-18952067.6061100364,-21811894.8162273280,-24683291.0899222791,-27554320.6708622649,-2976.7814489264,-1175798.1756569424},
		 { -1464821.3712670824,-1093974.4312889138,-1900661.1952534716,-5361751.8900025040,-8410967.5604627449,-10103764.1963780038,-6117702.8089957107,-106862.7285844565,-1212618.9762361448,-1350180.8280981276,-10961134.1341748964,-11478432.3708788101,-14167237.5135505721,-14656413.5998093374,-17990230.5741149187,-21156471.6508904286,-24348938.8030118868,-27554320.6708622649,-30759293.1942001507,-3323.0248880498,-1312560.7868998419 },
		 { -231.3002533154,-118.1855590475,-458.3386113199,-579.2472168179,-908.6637446295,-1091.5419829569,-633.7491680475,-11.5447225802,-131.0031089568,-145.8643560764,-1184.1664013263,-1240.0517854363,-1530.5320104468,-1583.3792686401,-1943.5421861648,-2285.6013431572,-2630.4937870051,-2976.7814489264,-3323.0248880498,-0.3589970139,-141.8001426239 },
		 { -91361.2304239775,-46682.0850308626,-181039.0558626673,-228796.7163442620,-358912.8700080685,-431147.9005879418,-250324.4287158191,-4560.0471452812,-51744.8859311991,-57614.9262922503,-467733.5969208844,-489807.7511071717,-604544.4640609999,-625418.5896352984,-767679.2522437507,-902789.1149122039,-1039018.0968619760,-1175798.1756569424,-1312560.7868998419,-141.8001426239,-56009.6036157287 },
		},//7
		{
		 {-7.7496991980,-4.6046836639,-11.2071073397,-15.2783059704,-21.4580780835,-9.9526946410,-13.1648688177,-1.2556028464,-5.1525136473,-5.4257946415,-28.1804900048,-27.2521993835,-33.1461152903,-33.8456184405,-48.9443067113,-35.3433190981,-39.6509778301,-43.8916794452,-48.0613926557,-0.0915831995,-5.3433209607},
		 {-4.6046836639,-3.0696807658,-7.9947198450,-9.0496191596,-12.2150090359,-6.9678478159,-7.7739889378,-0.6806351107,-3.3457072801,-3.5597460768,-15.2993781829,-16.5859609256,-19.1092277514,-19.0714677079,-25.1244266691,-28.6667207635,-32.1538431345,-35.5851263236,-38.9574032119,-0.0576394722,-3.3629115559},
		 {-11.2071073397,-7.9947198450,-19.0305928985,-20.4876511934,-31.3403581703,-22.4348509790,-21.6872012854,-2.3594572285,-18.5312397817,-8.5025087760,-34.9383358065,-35.0983850391,-27.2681613092,-39.2627525932,-45.7450452573,-49.3172602642,-52.3080277033,-54.7835312705,-56.7919207497,-0.1435157446,-8.3732681319},
		 {-15.2783059704,-9.0496191596,-20.4876511934,-30.1207346711,-44.7127420418,-18.7963761132,-26.8187001958,-2.4498196920,-10.3616418833,-10.6967959074,-53.4489131579,-56.2767152771,-65.0405499092,-67.5363361595,-78.7013775022,-89.7974884073,-100.7207758413,-111.4691490136,-122.0326870369,-0.1805536071,-10.5342014509},
		 {-21.4580780835,-12.2150090359,-31.3403581703,-44.7127420418,-60.7074298842,-55.5373635351,-42.4662818171,-2.7464711598,-14.7101371350,-15.1859460570,-75.8799475142,-78.6126145971,-92.3362744313,-94.8673992169,-111.7301745036,-127.4830170470,-142.9905068761,-158.2496757534,-173.2464392684,-0.2563269751,-14.9551151926},
		 {-9.9526946410,-6.9678478159,-22.4348509790,-18.7963761132,-55.5373635351,-50.8075989104,-38.8496982290,-2.3464782177,-13.4573681553,-13.8926554526,-69.4177341746,-71.2180307069,-84.4725802156,-86.7881451743,-102.2148249579,-116.6260979226,-130.8129133057,-144.7725556559,-158.4921400425,-0.2344972341,-13.6814829873},
		 {-13.1648688177,-7.7739889378,-21.6872012854,-26.8187001958,-42.4662818171,-38.8496982290,-29.7061676768,-1.7942192234,-10.2900885498,-10.6229281349,-53.0798164500,-54.4564014196,-64.5914060177,-66.3619876197,-79.5224992125,-90.9925472934,-102.3392498309,-113.5561381335,-124.6289257684,-0.1793067765,-10.4614564904},
		 {-1.2556028464,-0.6806351107,-2.3594572285,-2.4498196920,-2.7464711598,-2.3464782177,-1.7942192234,-0.1083688296,-0.7520268725,-0.6416129497,-5.4180747736,-5.5585884528,-3.9012485085,-4.0081896522,-4.7206493799,-5.3862139574,-6.0414122739,-6.6861189203,-7.3197388238,-0.0108299283,-0.6318602434},
		 {-5.1525136473,-3.3457072801,-18.5312397817,-10.3616418833,-14.7101371350,-13.4573681553,-10.2900885498,-0.7520268725,-3.5644423581,-3.6797365569,-18.3866198232,-18.8634629283,-22.3741848734,-22.9875067151,-27.0735590717,-30.8906614350,-34.6483118979,-38.3457912209,-41.9796865827,-0.0621110952,-3.6238034747},
		 {-5.4257946415,-3.5597460768,-8.5025087760,-10.6967959074,-15.1859460570,-13.8926554526,-10.6229281349,-0.6416129497,-3.6797365569,-3.7987600214,-18.9813469613,-19.4736138657,-23.0978923880,-23.7310525223,-27.9492708914,-31.8898399052,-35.7690340083,-39.5861106971,-43.3375467602,-0.0641201188,-3.7410177473},
		 {-28.1804900048,-15.2993781829,-34.9383358065,-53.4489131579,-75.8799475142,-69.4177341746,-53.0798164500,-5.4180747736,-18.3866198232,-18.9813469613,-94.8445099016,-97.3042306678,-115.4137421213,-118.5774671588,-139.6547307843,-159.3446578274,-178.7279115173,-197.8007817694,-216.5456640775,-0.3203903946,-18.6928248823},
		 {-27.2521993835,-16.5859609256,-35.0983850391,-56.2767152771,-78.6126145971,-71.2180307069,-54.4564014196,-5.5585884528,-18.8634629283,-19.4736138657,-97.3042306678,-99.8277424351,-118.4069103973,-121.6526842554,-143.2765708018,-163.4771412388,-183.3630849807,-202.9305957247,-222.1616124049,-0.3286994776,-19.1776091844},
		 {-33.1461152903,-19.1092277514,-27.2681613092,-65.0405499092,-92.3362744313,-84.4725802156,-64.5914060177,-3.9012485085,-22.3741848734,-23.0978923880,-115.4137421213,-118.4069103973,-140.4438895226,-144.2937417280,-169.9420989310,-193.9022434296,-217.4892053440,-240.6984699716,-263.5086148608,-0.3898744843,-22.7467976030},
		 {-33.8456184405,-19.0714677079,-39.2627525932,-67.5363361595,-94.8673992169,-86.7881451743,-66.3619876197,-4.0081896522,-22.9875067151,-23.7310525223,-118.5774671588,-121.6526842554,-144.2937417280,-148.2491262001,-174.6005569571,-199.2174976713,-223.4510261088,-247.2965038100,-270.7319210902,-0.4005617356,-23.3703335163},
		 {-48.9443067113,-25.1244266691,-45.7450452573,-78.7013775022,-111.7301745036,-102.2148249579,-79.5224992125,-4.7206493799,-27.0735590717,-27.9492708914,-139.6547307843,-143.2765708018,-169.9420989310,-174.6005569571,-205.6359809405,-234.6286075376,-263.1696699417,-291.2537052022,-318.8547913909,-0.4717619855,-27.5244337205},
		 {-35.3433190981,-28.6667207635,-49.3172602642,-89.7974884073,-127.4830170470,-116.6260979226,-90.9925472934,-5.3862139574,-30.8906614350,-31.8898399052,-159.3446578274,-163.4771412388,-193.9022434296,-199.2174976713,-234.6286075376,-267.7089059185,-300.2739740495,-332.3175787585,-363.8101433834,-0.5382757300,-31.4051049217},
		 {-39.6509778301,-32.1538431345,-52.3080277033,-100.7207758413,-142.9905068761,-130.8129133057,-102.3392498309,-6.0414122739,-34.6483118979,-35.7690340083,-178.7279115173,-183.3630849807,-217.4892053440,-223.4510261088,-263.1696699417,-300.2739740495,-336.8003734583,-372.7418767708,-408.0653095139,-0.6037535136,-35.2253341289},
		 {-43.8916794452,-35.5851263236,-54.7835312705,-111.4691490136,-158.2496757534,-144.7725556559,-113.5561381335,-6.6861189203,-38.3457912209,-39.5861106971,-197.8007817694,-202.9305957247,-240.6984699716,-247.2965038100,-291.2537052022,-332.3175787585,-372.7418767708,-412.5188617577,-451.6118190471,-0.6681828035,-38.9843901249},
		 {-48.0613926557,-38.9574032119,-56.7919207497,-122.0326870369,-173.2464392684,-158.4921400425,-124.6289257684,-7.3197388238,-41.9796865827,-43.3375467602,-216.5456640775,-222.1616124049,-263.5086148608,-270.7319210902,-318.8547913909,-363.8101433834,-408.0653095139,-451.6118190471,-494.4094779908,-0.7315041307,-42.6788032521},
		 {-0.0915831995,-0.0576394722,-0.1435157446,-0.1805536071,-0.2563269751,-0.2344972341,-0.1793067765,-0.0108299283,-0.0621110952,-0.0641201188,-0.3203903946,-0.3286994776,-0.3898744843,-0.4005617356,-0.4717619855,-0.5382757300,-0.6037535136,-0.6681828035,-0.7315041307,-0.0010822978,-0.0631454741},
		 {-5.3433209607,-3.3629115559,-8.3732681319,-10.5342014509,-14.9551151926,-13.6814829873,-10.4614564904,-0.6318602434,-3.6238034747,-3.7410177473,-18.6928248823,-19.1776091844,-22.7467976030,-23.3703335163,-27.5244337205,-31.4051049217,-35.2253341289,-38.9843901249,-42.6788032521,-0.0631454741,-3.6841531729},
		},//8
		{
		 {3009348263463984037888.0000000000,211491525337820725248.0000000000,25065871208255559041024.0000000000,51090507649529428312064.0000000000,167876298240479721422848.0000000000,42512117455545689964544.0000000000,55568203932856341233664.0000000000,855121968065981056.0000000000,361568019337616621568.0000000000,822246503149574160384.0000000000,400952372380230865649664.0000000000,357449390432414725046272.0000000000,696322710493608556888064.0000000000,735909922620448050249728.0000000000,3888501769893167759360000.0000000000,470396596320771602644992.0000000000,665979262411841659207680.0000000000,901721567578735343828992.0000000000,1177850013535125851078656.0000000000,413482631709.4283447266,720719303668604469248.0000000000},
		 {211491525337820725248.0000000000,27989491694253060096.0000000000,4814758671313496178688.0000000000,3529242801803153637376.0000000000,9320602721402756268032.0000000000,7364951337789396353024.0000000000,3774550445599762677760.0000000000,36279195474660120.0000000000,41405366143580577792.0000000000,99665873806213545984.0000000000,17154176584549308301312.0000000000,28666044648569891192832.0000000000,41453058617321076031488.0000000000,38633323887968173162496.0000000000,122246787707884957335552.0000000000,183080127110452799864832.0000000000,258900807159890516639744.0000000000,350134939369782772760576.0000000000,456818131926542555545600.0000000000,39876639519.8259811401,69506822447550070784.0000000000},
		 {25065871208255559041024.0000000000,4814758671313496178688.0000000000,505031790451148745342976.0000000000,280928710900733360209920.0000000000,1476638556733308542124032.0000000000,4067982922878121827893248.0000000000,947583088180135444086784.0000000000,30079432729330221056.0000000000,451878708482037302427648.0000000000,10651853098322130632704.0000000000,1432189806264071554596864.0000000000,1574156158012398510276608.0000000000,260615859233458822840320.0000000000,1823550656248622992064512.0000000000,2936129627753083213709312.0000000000,3219071400393841643094016.0000000000,3346976982938703120826368.0000000000,3342012515714448469524480.0000000000,3230343509475250271158272.0000000000,5356491313500.0185546875,9336611488643187474432.0000000000},
		 {51090507649529428312064.0000000000,3529242801803153637376.0000000000,280928710900733360209920.0000000000,867377167201660263464960.0000000000,3864851770996524528435200.0000000000,569859112741507497459712.0000000000,1129701496867931604123648.0000000000,13711940788482502656.0000000000,6846406219544333910016.0000000000,13959498064410341015552.0000000000,5502505052274634715561984.0000000000,7831318205890716330098688.0000000000,11520331751939180756729856.0000000000,13351750072087073328726016.0000000000,21520083049130304049512448.0000000000,32229063960984125735698432.0000000000,45576386717672007331217408.0000000000,61637063148399785127444480.0000000000,80417361647971300674633728.0000000000,7019804857674.2792968750,12235843735433798221824.0000000000},
		 {167876298240479721422848.0000000000,9320602721402756268032.0000000000,1476638556733308542124032.0000000000,3864851770996524528435200.0000000000,10541540799352530368724992.0000000000,111915951847879894814949376.0000000000,7179807286611461292425216.0000000000,13044795193631365120.0000000000,23867708101357918486528.0000000000,48665126543571078348800.0000000000,19182645639551195648360448.0000000000,24977409088634161389895680.0000000000,40161788048911562522492928.0000000000,43907499014232950056157184.0000000000,75022580323579990475014144.0000000000,112355864717002016062177280.0000000000,158886846559975271819116544.0000000000,214877029535779362328018944.0000000000,280348266308810834423316480.0000000000,24472204525809.5976562500,42656181547842777645056.0000000000},
		 {42512117455545689964544.0000000000,7364951337789396353024.0000000000,4067982922878121827893248.0000000000,569859112741507497459712.0000000000,111915951847879894814949376.0000000000,1188173580733689412563501056.0000000000,76225570991938789527519232.0000000000,95074611446662234112.0000000000,253395335789516706283520.0000000000,516661089928694391111680.0000000000,203655621751501077891514368.0000000000,251295075036678804085932032.0000000000,426384038439885505164214272.0000000000,466150977259372244593803264.0000000000,796489208438407932630007808.0000000000,1192843985982318631240859648.0000000000,1686847587779564057456017408.0000000000,2281276309457417742485291008.0000000000,2976362153318293105083940864.0000000000,259813068644595.0937500000,452866165486549553119232.0000000000},
		 {55568203932856341233664.0000000000,3774550445599762677760.0000000000,947583088180135444086784.0000000000,1129701496867931604123648.0000000000,7179807286611461292425216.0000000000,76225570991938789527519232.0000000000,4890142120025302411247616.0000000000,6099375261216877568.0000000000,16256214134405321457664.0000000000,33145650793559590174720.0000000000,13065234158918638080360448.0000000000,16121474919771229067935744.0000000000,27354056106734569660612608.0000000000,29905246999436539983822848.0000000000,56201127882941273185714176.0000000000,85493970482088705339162624.0000000000,122723044387427785904226304.0000000000,168367536586495435363844096.0000000000,222711867121178418480152576.0000000000,16667934576001.0566406250,29052978964425540108288.0000000000},
		 {855121968065981056.0000000000,36279195474660120.0000000000,30079432729330221056.0000000000,13711940788482502656.0000000000,13044795193631365120.0000000000,95074611446662234112.0000000000,6099375261216877568.0000000000,7607627276270.6542968750,57849927770353552.0000000000,41341899172886408.0000000000,292050494544926146560.0000000000,360367419813812764672.0000000000,34118160375774912512.0000000000,37300209125210398720.0000000000,63733029619275743232.0000000000,95448325331158417408.0000000000,134977230245138137088.0000000000,182541896437564669952.0000000000,238160888139383799808.0000000000,20789577.3401195370,36237192460033200.0000000000},
		 {361568019337616621568.0000000000,41405366143580577792.0000000000,451878708482037302427648.0000000000,6846406219544333910016.0000000000,23867708101357918486528.0000000000,253395335789516706283520.0000000000,16256214134405321457664.0000000000,57849927770353552.0000000000,54040249035189985280.0000000000,110185508661972910080.0000000000,43432529973674759946240.0000000000,53592337814691136929792.0000000000,90932611486823904968704.0000000000,99413490862430621794304.0000000000,169862933916061431496704.0000000000,254391367788072525627392.0000000000,359744836833687491313664.0000000000,486515426564762895384576.0000000000,634752614854125212925952.0000000000,55408924116.1624145508,96580311102621089792.0000000000},
		 {822246503149574160384.0000000000,99665873806213545984.0000000000,10651853098322130632704.0000000000,13959498064410341015552.0000000000,48665126543571078348800.0000000000,516661089928694391111680.0000000000,33145650793559590174720.0000000000,41341899172886408.0000000000,110185508661972910080.0000000000,224663034235682783232.0000000000,88556871832870737412096.0000000000,109272238894582851436544.0000000000,185407288632455628587008.0000000000,202699400060246136193024.0000000000,346342478254838084796416.0000000000,518691952005828860444672.0000000000,733502686288997844516864.0000000000,991981915424321276215296.0000000000,1294230522451426071805952.0000000000,112976172337.3327636719,196922680697570426880.0000000000},
		 {400952372380230865649664.0000000000,17154176584549308301312.0000000000,1432189806264071554596864.0000000000,5502505052274634715561984.0000000000,19182645639551195648360448.0000000000,203655621751501077891514368.0000000000,13065234158918638080360448.0000000000,292050494544926146560.0000000000,43432529973674759946240.0000000000,88556871832870737412096.0000000000,34907031214563395993862144.0000000000,43072540561020586484039680.0000000000,73083182340891979083153408.0000000000,79899325017146020599955456.0000000000,136520040163425928433631232.0000000000,204456139706254368771670016.0000000000,289129467158439512634294272.0000000000,391015885829270659345154048.0000000000,510155161434726759346995200.0000000000,44532543806694.7500000000,77622278426213300043776.0000000000},
		 { 357449390432414725046272.0000000000,28666044648569891192832.0000000000,1574156158012398510276608.0000000000,7831318205890716330098688.0000000000,24977409088634161389895680.0000000000,251295075036678804085932032.0000000000,16121474919771229067935744.0000000000,360367419813812764672.0000000000,53592337814691136929792.0000000000,109272238894582851436544.0000000000,43072540561020586484039680.0000000000,53148139094875187940687872.0000000000,90178918864724948540194816.0000000000,98589504688768690790858752.0000000000,168455029337414613761785856.0000000000,252282851449516675274113024.0000000000,356763100964383848585494528.0000000000,482482955908266321571217408.0000000000,629491484057910147675062272.0000000000,54949668667297.9453125000,95779807666858610393088.0000000000 },
		 { 696322710493608556888064.0000000000,41453058617321076031488.0000000000,260615859233458822840320.0000000000,11520331751939180756729856.0000000000,40161788048911562522492928.0000000000,426384038439885505164214272.0000000000,27354056106734569660612608.0000000000,34118160375774912512.0000000000,90932611486823904968704.0000000000,185407288632455628587008.0000000000,73083182340891979083153408.0000000000,90178918864724948540194816.0000000000,153010764743686044960948224.0000000000,167281396783639579443855360.0000000000,285825481036237754937114624.0000000000,428060044608808478367023104.0000000000,605336542044555552294436864.0000000000,818651265603007009504886784.0000000000,1068087470862500559205695488.0000000000,93235657857108.2812500000,162514053202315455758336.0000000000 },
		 { 735909922620448050249728.0000000000,38633323887968173162496.0000000000,1823550656248622992064512.0000000000,13351750072087073328726016.0000000000,43907499014232950056157184.0000000000,466150977259372244593803264.0000000000,29905246999436539983822848.0000000000,37300209125210398720.0000000000,99413490862430621794304.0000000000,202699400060246136193024.0000000000,79899325017146020599955456.0000000000,98589504688768690790858752.0000000000,167281396783639579443855360.0000000000,182882987068007646710726656.0000000000,312483149693365434164707328.0000000000,467983297053506136738627584.0000000000,661793583262057319920304128.0000000000,895003220316997056360087552.0000000000,1167703228673371568169025536.0000000000,101931332102712.0781250000,177671014599486659887104.0000000000 },
		 { 3888501769893167759360000.0000000000,122246787707884957335552.0000000000,2936129627753083213709312.0000000000,21520083049130304049512448.0000000000,75022580323579990475014144.0000000000,796489208438407932630007808.0000000000,56201127882941273185714176.0000000000,63733029619275743232.0000000000,169862933916061431496704.0000000000,346342478254838084796416.0000000000,136520040163425928433631232.0000000000,168455029337414613761785856.0000000000,285825481036237754937114624.0000000000,312483149693365434164707328.0000000000,533924562408723634001543168.0000000000,799620002995604721047175168.0000000000,1130774090362408307045433344.0000000000,1529247907386593844056293376.0000000000,1995196976235296303133753344.0000000000,174165045193905.2187500000,303577709120738887204864.0000000000 },
		 { 470396596320771602644992.0000000000,183080127110452799864832.0000000000,3219071400393841643094016.0000000000,32229063960984125735698432.0000000000,112355864717002016062177280.0000000000,1192843985982318631240859648.0000000000,85493970482088705339162624.0000000000,95448325331158417408.0000000000,254391367788072525627392.0000000000,518691952005828860444672.0000000000,204456139706254368771670016.0000000000,252282851449516675274113024.0000000000,428060044608808478367023104.0000000000,467983297053506136738627584.0000000000,799620002995604721047175168.0000000000,1197532749394719120155475968.0000000000,1693478152501207553093402624.0000000000,2290243420847559108898848768.0000000000,2988061468677662382810464256.0000000000,260834327103069.2187500000,454646266096855935877120.0000000000 },
		 { 665979262411841659207680.0000000000,258900807159890516639744.0000000000,3346976982938703120826368.0000000000,45576386717672007331217408.0000000000,158886846559975271819116544.0000000000,1686847587779564057456017408.0000000000,122723044387427785904226304.0000000000,134977230245138137088.0000000000,359744836833687491313664.0000000000,733502686288997844516864.0000000000,289129467158439512634294272.0000000000,356763100964383848585494528.0000000000,605336542044555552294436864.0000000000,661793583262057319920304128.0000000000,1130774090362408307045433344.0000000000,1693478152501207553093402624.0000000000,2394814049510075261645750272.0000000000,3238723282578538981616517120.0000000000,4225535224897964528516464640.0000000000,368856078962902.8750000000,642933163323033766592512.0000000000 },
		 { 901721567578735343828992.0000000000,350134939369782772760576.0000000000,3342012515714448469524480.0000000000,61637063148399785127444480.0000000000,214877029535779362328018944.0000000000,2281276309457417742485291008.0000000000,168367536586495435363844096.0000000000,182541896437564669952.0000000000,486515426564762895384576.0000000000,991981915424321276215296.0000000000,391015885829270659345154048.0000000000,482482955908266321571217408.0000000000,818651265603007009504886784.0000000000,895003220316997056360087552.0000000000,1529247907386593844056293376.0000000000,2290243420847559108898848768.0000000000,3238723282578538981616517120.0000000000,4380017940542058145735770112.0000000000,5714572835846058752960626688.0000000000,498837382009753.8750000000,869496571402763416633344.0000000000 },
		 { 1177850013535125851078656.0000000000,456818131926542555545600.0000000000,3230343509475250271158272.0000000000,80417361647971300674633728.0000000000,280348266308810834423316480.0000000000,2976362153318293105083940864.0000000000,222711867121178418480152576.0000000000,238160888139383799808.0000000000,634752614854125212925952.0000000000,1294230522451426071805952.0000000000,510155161434726759346995200.0000000000,629491484057910147675062272.0000000000,1068087470862500559205695488.0000000000,1167703228673371568169025536.0000000000,1995196976235296303133753344.0000000000,2988061468677662382810464256.0000000000,4225535224897964528516464640.0000000000,5714572835846058752960626688.0000000000,7455755464816249727940034560.0000000000,650828967240421.3750000000,1134424916804015652601856.0000000000 },
		 { 413482631709.4283447266,39876639519.8259811401,5356491313500.0185546875,7019804857674.2792968750,24472204525809.5976562500,259813068644595.0937500000,16667934576001.0566406250,20789577.3401195370,55408924116.1624145508,112976172337.3327636719,44532543806694.7500000000,54949668667297.9453125000,93235657857108.2812500000,101931332102712.0781250000,174165045193905.2187500000,260834327103069.2187500000,368856078962902.8750000000,498837382009753.8750000000,650828967240421.3750000000,56.8122635725,99026396520.0410003662 },
		 { 720719303668604469248.0000000000,69506822447550070784.0000000000,9336611488643187474432.0000000000,12235843735433798221824.0000000000,42656181547842777645056.0000000000,452866165486549553119232.0000000000,29052978964425540108288.0000000000,36237192460033200.0000000000,96580311102621089792.0000000000,196922680697570426880.0000000000,77622278426213300043776.0000000000,95779807666858610393088.0000000000,162514053202315455758336.0000000000,177671014599486659887104.0000000000,303577709120738887204864.0000000000,454646266096855935877120.0000000000,642933163323033766592512.0000000000,869496571402763416633344.0000000000,1134424916804015652601856.0000000000,99026396520.0410003662,172607577855628050432.0000000000 },
		},//9
	};
/***********************************Cn备用查表数据**************************************/
double G_parameter[5] = { -0.0363660856,0.0329017874,-0.0037420475,-0.1689905140,0.3510601859 };
double U_parameter[5][21] = { 
	{0.0000000000,-25391013744.3937149048,-86310240377.6772766113,0.0000000000,-38718085288.1167297363,0.0000000000,-666720964716.5777587891,2269816148.8121738434,0.0000000000,0.0000000000,0.0000000000,-44788032589.9178314209,0.0000000000,27547807216.1404342651,5039087832841.8417968750,2995689555258.2099609375,3754431387809.7421875000,4603091791015.8867187500,5543018312163.9218750000,0.0000000000,0.0000000000},//0
	{0.0000000000,0.0000000000,-107470243964.2712249756,-117953505585.1495361328,-108809040722.9046783447,0.0000000000,-9672243220.1675300598,-741151126.5598329306,0.0000000000,0.0000000000,0.0000000000,-13238501176.7329788208,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000},//1
	{0.0000000000,0.0000000000,0.0000000000,-240663535988.1365356445,0.0000000000,0.0000000000,682684292859.8858642578,0.0000000000,-85338571267.9475402832,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,2245419311011.2460937500,3123824398310.1816406250,4121292988955.0517578125,5239693675482.9169921875,6471965236487.2861328125,0.0000000000,0.0000000000},//2
	{0.0000000000,0.0000000000,0.0000000000,0.0000000000,1061268868686.8830566406,0.0000000000,-373826011696.9307250977,70604653742.1654663086,0.0000000000,0.0000000000,7227124942863.5957031250,8007618369632.9199218750,9769837631954.6894531250,10112925271189.3671875000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000},//3
	{0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,1509970906021.8959960938,2065733830868.5844726563,2693191848950.5102539063,3385383929158.1000976563,4136233065586.8261718750,0.0000000000,0.0000000000},//4
};
double E_parameter[21] = { 281662.2432413514,99345.7386737830,910671.2623176961,931571.2651129460,1534516.5971602199,5990192.0896887286,1511926.3891073761,3773.2602105546,114416.6501792414,166994.2259667306,1890572.7222240157,2094745.1412967329,2555731.1757519767,2645480.8531406047,3252986.7725805528,3783603.0895332978,4303434.5005244063,4810446.9788612965,5302872.7649037028,11.0064544942,156530.6357943879};
/***********************************K备用查表数据**************************************/
double KK_parameter[21] = { 0.1450206489,0.1342733250,0.1402213270,0.2024986533,0.2603546712,0.0905367613,0.1449428023,0.0732465842,0.1384134857,0.1134345817,0.3285686580,0.3202335344,0.3727524342,0.3810675184,0.4360864769,0.4912397820,0.5458984993,0.6001471975,0.6539979898,0.0772151018,0.1154498556 };
double K_parameter[5][21] = {
	{0.0000000000,0.0007119987,-0.0008203242,0.0000000000,0.0029208611,0.0000000000,0.0000168185,0.0025883829,0.0000000000,0.0000000000,0.0000000000,-0.0011110741,0.0000000000,0.0014046796,-0.0104141249,-0.0113297016,-0.0132248981,-0.0152343279,-0.0173562352,0.0000000000,0.0000000000},//0
	{0.0000000000,0.0000000000,-0.0032059559,0.0021990689,0.0000000000,0.0000000000,-0.0099608499,0.0033853274,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000},     //1
	{0.0000000000,0.0000000000,0.0000000000,0.0024578613,0.0000000000,0.0000000000,0.0016081051,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,-0.0459030667,-0.0584905665,-0.0717708355,-0.0856080495,-0.0998982694,0.0000000000,0.0000000000},  //2
	{0.0000000000,0.0000000000,0.0000000000,0.0000000000,-0.0067314178,0.0000000000,-0.0000090982,0.0031421460,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000},     //3
	{0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,-0.0189005387,-0.0245455066,-0.0306699982,-0.0376178477,-0.0441663813,0.0000000000,0.0000000000},  //4
};
#endif
//aga8.h:进行一些函数的声明
#ifndef __AGA8_H
#define __AGA8_H
#include "sys.h"
#include 
#define NUM 21                           //定义当前气体组分数
#define R  8.31451e-3f                   //定义气体常数
double Calculate_Z(float Temperature,float Pressure,float x[]);//生命压缩因子计算函数,返回Z值
#endif
//aga8.c:AGA8计算函数,经过极度优化
#include "aga8.h"
#include "aga8_font.h"
#include "usart.h"
#include "delay.h"

double XIXI[NUM][NUM] = { 0 };          //定义XIXI计算结果
double XIXJ[NUM][NUM] = { 0 };          //定义XIXJ计算结果
double Cn[58] = { 0 };                  //定义Cn计算结果
double A2_parameter[58] = { 0 };
double A3_parameter[58] = { 0 };
double A4_parameter[58] = { 0 };
double Calculate_Z(float Temperature,float Pressure,float x[])//入口参数为:温度,压力,气体组分
{
	u8 n, i, j;
	double K1 = 0,A1 = 0,B_total = 0;       
	double G = 0, Q = 0, F = 0, U_5 = 0, U = 0;  //计算Cn所用参数
	double g_n=0,q_n=0,f_n=0,u_n=0,k_n=0;
	double a = 0, b = 0, c = 0, d=0, f_c=0, Z=0;
	d = Pressure/(R*Temperature);         //计算d
	a = 0.833f*d;                         //计算a
	b = 2.5f*d;                           //计算b
	c = 1.6665f*d;                        //计算c=(a+b)/2
	for (i = 0; i < NUM; i++)
	{                    
		if(x[i]==0)continue;     
		if(i<7&&Qi[i]!=0)Q = Q + x[i] * Qi[i];   //求出Q(注意此处取x为0到7)                                                        
		K1 = K1 + x[i] * KK_parameter[i];                                                //计算求出K的中间数
		G = G + x[i] * Gi[i];                                                            //求出G
		U = U + x[i] * E_parameter[i];
		for (j = 0; j < NUM; j++)
		{
			if(x[j]==0)continue;  
			XIXI[i][j] = x[i] * x[j];                                                     //计算得出XIXI计算结果
			for (n = 0; n < 10; n++)
				B_total = B_total + (pow(Temperature, -un_2[n]))*XIXI[i][j] * B_parameter[n][i][j];//计算得出B的中间值
		}
    if(i < NUM - 1)
		for (n = i + 1; n < NUM; n++)
		{
			if(x[n]==0)continue;
			XIXJ[i][n] = x[i] * x[n];                                                     //计算得出XIXJ计算结果
		}
  }
	K1 = K1 * K1;
	for (i = 0; i < 4; i++)
	{
		if(x[i]==0)continue;
		for (j = i + 1; j < NUM; j++)
		{
			if(x[j]==0)continue;
			if(K_parameter[i][j]!=0)
			K1 = K1 + XIXJ[i][j] * K_parameter[i][j];
			if(U_parameter[i][j]==0)continue;
			U_5 = U_5 + XIXJ[i][j] * U_parameter[i][j];
		}
	}
	K1 = K1 + XIXJ[6][14] * K_parameter[4][14] + XIXJ[6][15] * K_parameter[4][15] + XIXJ[6][16] * K_parameter[4][16] + XIXJ[6][17] * K_parameter[4][17] + XIXJ[6][18] * K_parameter[4][18];
	K1 = pow(K1, 0.2);
	B_total = B_total + (pow(Temperature, -un[6]))*(XIXI[2][2] * b_parameter[0] + XIXI[2][5] * b_parameter[1] + XIXI[2][6] * b_parameter[2]  + XIXI[5][5] * b_parameter[3] + XIXI[5][6] * b_parameter[4] + XIXI[6][6] * b_parameter[5])+(pow(Temperature, -un[7]))*(XIXI[5][5] * b_parameter[6] + XIXI[5][6] * 2*b_parameter[7] + XIXI[6][6] * b_parameter[8])+(pow(Temperature, -un[8]))*(XIXI[5][5] * b_parameter[9] + XIXI[5][6] * 2 *b_parameter[10] + XIXI[6][6] * b_parameter[11])+(pow(Temperature, -un[9]))*(XIXI[5][5] * b_parameter[12])+(pow(Temperature, -un[10]))*(XIXI[5][5] * b_parameter[13])+(pow(Temperature, -un[11]))*(XIXI[5][5] * b_parameter[14])+(pow(Temperature, -un[12]))*(XIXI[7][7] * b_parameter[15])+(pow(Temperature, -un[15]))*(XIXI[2][2] * b_parameter[16] + XIXI[2][5] * b_parameter[17] + XIXI[2][6] * (-243.30260054) + XIXI[5][5] * b_parameter[18] + XIXI[5][6] * b_parameter[19] + XIXI[6][6] * b_parameter[20]);
	G = G + XIXJ[0][2] * G_parameter[0] + XIXJ[0][7] * G_parameter[1] + XIXJ[1][2] * G_parameter[2] + XIXJ[2][3] * G_parameter[3] + XIXJ[2][5] * G_parameter[4];
	U_5 = U_5 + XIXJ[6][14] * U_parameter[4][14] + XIXJ[6][15] * U_parameter[4][15] + XIXJ[6][16] * U_parameter[4][16] + XIXJ[6][17] * U_parameter[4][17] + XIXJ[6][18] * U_parameter[4][18];
	F = x[7]*x[7];                  //求出F(注意此处取x=7)
	U = pow(U * U + U_5, 0.2);        //求出U
	for (n = 12; n < 58; n++)
	{
          if(gn[n]==0)g_n=1;else g_n=pow(G + 1 - gn[n], gn[n]);
          if(qn[n]==0)q_n=1;else q_n=pow(Q*Q + 1 - qn[n], qn[n]);
		  if(fn[n]==0)f_n=1;else f_n=pow(F + 1 - fn[n], fn[n]);
		  if(un[n]==0)u_n=1;else u_n=pow(U, un[n])* pow(Temperature, -un[n]);
          Cn[n] = an[n]*g_n*q_n*f_n*u_n;
		if(n<18)A1=A1+Cn[n];
		A2_parameter[n] = Cn[n] *pow(K1, 3 * bn[n]);
		if(cn[n]==0)
		{
			f_c = f_c + c * A2_parameter[n]*bn[n]*pow(c, bn[n]);
		}
		else if(kn[n]==0)
		{
			A4_parameter[n] = -1;
			f_c = f_c+c * A2_parameter[n] * bn[n] * pow(c, bn[n])*exp(-1);
		}
		else
		{
			k_n=pow(K1, 3 * kn[n]);
			A3_parameter[n] = kn[n] * k_n;
			A4_parameter[n] = -k_n;
			k_n=pow(c,kn[n]);
			f_c = f_c+c * A2_parameter[n]*(bn[n] - A3_parameter[n] * k_n)*pow(c, bn[n])*exp(A4_parameter[n]*k_n);
		}
	}   
	A1 = B_total - K1*K1*K1*A1;
    f_c = f_c + c + A1 * c*c;
	while((f_c - d) < -1e-6 || (f_c - d) > 1e-6)  //当在范围外时进行二分法循环
	{
		if (f_c > d )
			b = c;
		else a = c;
		c = (a + b) / 2;
		f_c=c + A1 * c*c;
		for (n = 12; n < 58; n++)
		{
			if(kn[n]==0)k_n=1;else k_n=pow(c,kn[n]);
			f_c = f_c + c * A2_parameter[n]*(bn[n] - A3_parameter[n] * k_n)*pow(c, bn[n])*exp(A4_parameter[n]*k_n);
		}
	} 
	Z=d / c;                       //计算出压缩因子Z值
	for (i = 0; i < NUM; i++)      //清除X存储数组,供下一次调用
		for (j = 0; j < NUM; j++)
		{
			 XIXI[i][j] = 0;
			 XIXJ[i][j] = 0;
		}	
	return Z;
}
//main.c:主函数
float table[6][21] = {
	{0.965,0.003,0.006,0.018,0.0045,0,0,0,0,0,0.001,0.001,0.0005,0.0003,0.0007,0,0,0,0,0,0},//1
	{0.907,0.031,0.005,0.045,0.0084,0,0,0,0,0,0.001,0.0015,0.0003,0.0004,0.0004,0,0,0,0,0,0},//2
	{0.859,0.01,0.015,0.085,0.023,0,0,0,0,0,0.0035,0.0035,0.0005,0.0005,0,0,0,0,0,0,0},//3
	{0.735,0.1,0.016,0.033,0.0074,0,0,0.095,0.01,0,0.0012,0.0012,0.0004,0.0004,0.0002,0.0001,0.0001,0,0,0,0},//4
	{0.812,0.057,0.076,0.043,0.009,0,0,0,0,0,0.0015,0.0015,0,0,0,0,0,0,0,0,0},//5
	{0.826,0.117,0.011,0.035,0.0075,0,0,0,0,0,0.0012,0.0012,0.0004,0.0004,0.0002,0.0001,0,0,0,0,0},//6
};       //定义6种气体组分

int main(void)
{ 
    u8 i=0;
	float T=280;                       //定义绝对温度
    float P=12;                        //定义绝对压力
	float x[21] = { 0 };         
	double Z=0;
	for (i = 0; i < 21; i++)
	  x[i] = table[0][i];              //获得当前气体组分
    Z=Calculate_Z(T,P,x);              //调用函数计算得出Z
    printf("Z=%.6lf\r\n",Z);
    while(1)
    {

    }
}

小结:经过优化,AGA8算法的计算速率大大提高,计算结果精度不变。后期可结合FPU和DSP进一步提高AGA8算法在单片机上的执行速率!

你可能感兴趣的:(嵌入式开发)