精华内容
下载资源
问答
  • 程序优化总结

    2019-12-13 11:29:05
    代码优化: 代码移动,将计算结果不会变化的计算移动到代码前面,不会被多次求值 减少多次重复的内存读写 编写程序尽量满足处理器流水线的设计 条件数据转移比条件控制转移性能更好 在if条件判断的时候,更容易...

    代码优化:

    1. 代码移动,将计算结果不会变化的计算移动到代码前面,不会被多次求值
    2. 减少多次重复的内存读写
    3. 编写程序尽量满足处理器流水线的设计
    4. 条件数据转移比条件控制转移性能更好
    5. 在if条件判断的时候,更容易判断出结果的条件放在前面,使其更符合预测正确,减少预测错误开销,以及一些不必要的管道计算时间
    6. 重复引用相同变量的程序有很好的时间局部性
    7. 对于取指令来说,循环有好的时间和空间局部性。循环体越小,循环迭代次数越多,局部性越好。
    8. 消除不必要的内存引用。引入临时变量来保存中间结果。只有在最后的值计算出来时,才将结果存放到数组或全局变量中。
    9. 用功能性的风格重写条件操作,使得编译采用条件数据传送。
    10. 双重嵌套循环按照“行优先”来读取数组的元素,也就是,内层循环读第一行的元素,然后读第二行。
    11. 消除连续的函数调用,考虑有选择地妥协程序的模块性
    12.  消除不必要的内存引用。引入临时变量来保存中间结果。只有在最后的值计算出来时,才将结果存放到数组或全局变量中。
    13. 展开循环,降低开销,并且使得进一步优化成为可能。
    14. 用功能性的风格重写条件操作,使得编译采用条件数据传送。
    15. 对局部变量的反复引用是好的,因为编译器能够将它们缓存在寄存器文件中(时间局部性)。
    16. 步长为1的引用模式是好的,因为存储器层次结构中所有层次上的缓存都是将数据存储为连续的快(空间局部性)。

     

    展开全文
  • Android程序优化总结

    2021-03-02 04:47:38
    程序结构清晰,简单易懂,单个函数的程序行数不得超过100行。打算干什么,要简单,直接。尽量使用标准库函数和公共函数不要随意定义全局变量,尽量使用局部变量。使用括号可以避免二意性可读性第一,效率第二源程序...
  • 优化程序性能总结

    千次阅读 2015-10-23 14:34:57
    性能优化有三个层次: 系统层次 算法层次 代码层次 系统层次关注系统的控制流程和数据流程,优化主要考虑如何减少消息传递的个数;如何使系统的负载更加均衡;如何充分利用硬件的性能和设施;如何减少系统额外...

    性能优化有三个层次:

    系统层次

    算法层次

    代码层次

    系统层次关注系统的控制流程和数据流程,优化主要考虑如何减少消息传递的个数;如何使系统的负载更加均衡;如何充分利用硬件的性能和设施;如何减少系统额外开销(比如上下文切换等)。

    算法层次关注算法的选择(用更高效的算法替换现有算法,而不改变其接口);现有算法的优化(时间和空间的优化);并发和锁的优化(增加任务的并行性,减小锁的开销);数据结构的设计(比如lock-free的数据结构和算法)。

    代码层次关注代码优化,主要是cache相关的优化(I-cache,D-cache相关的优化);代码执行顺序的调整;编译优化选项;语言相关的优化技巧等等。

     

    性能优化需要相关的工具支持,这些工具包括编译器的支持;CPU的支持;以及集成到代码里面的测量工具等等。这些工具主要目的是测量代码的执行时间以及相关的cache miss, cache hit等数据,这些工具可以帮助开发者定位和分析问题。

    性能优化和性能设计不同。性能设计贯穿于设计,编码,测试的整个环节,是产品生命周期的第一个阶段;而性能优化,通常是在现有系统和代码基础上所做的改进,属于产品生命周期的后续几个阶段(假设产品有多个生命周期)。性能优化不是重新设计,性能优化是以现有的产品和代码为基础的,而不是推倒重来。性能优化的方法和技巧可以指导性能设计,但两者的方法和技巧不能等同。两者关注的对象不同。性能设计是从正向考虑问题:如何设计出高效,高性能的系统;而性能优化是从反向考虑问题:在出现性能问题时,如何定位和优化性能。性能设计考验的是开发者正向建设的能力,而性能优化考验的是开发者反向修复的能力。两者可以互补。

     

     

    下面是一个代码优化技巧列表,需要不断地补充,优化和筛选。

    1) Code adjacency (把相关代码放在一起),推荐指数:5颗星

    把相关代码放在一起有两个涵义,一是相关的源文件要放在一起;二是相关的函数在object文件里面,也应该是相邻的。这样,在可执行文件被加载到内存里面的时候,函数的位置也是相邻的。相邻的函数,冲突的几率比较小。而且相关的函数放在一起,也符合模块化编程的要求:那就是  高内聚,低耦合。

    如果能够把一个codepath上的函数编译到一起(需要编译器支持,把相关函数编译到一起),  很显然会提高I-cache的命中率,减少冲突。但是一个系统有很多个code path,所以不可能面面俱到。不同的性能指标,在优化的时候可能是冲突的。所以尽量做对所以case都有效的优化,虽然做到这一点比较难。

    2) Cache line alignment (cache对齐),推荐指数:4颗星

    数据跨越两个cacheline,就意味着两次load或者两次store。如果数据结构是cacheline对齐的,就有可能减少一次读写。数据结构的首地址cache line对齐,意味着可能有内存浪费(特别是数组这样连续分配的数据结构),所以需要在空间和时间两方面权衡。

    3) Branch prediction (分支预测),推荐指数:3颗星(不推荐静态分支预测)

    代码在内存里面是顺序排列的。对于分支程序来说,如果分支语句之后的代码有更大的执行几率,那么就可以减少跳转,一般CPU都有指令预取功能,这样可以提高指令预取命中的几率。分支预测用的就是likely/unlikely这样的宏,一般需要编译器的支持,这样做是静态的分支预测。现在也有很多CPU支持在CPU内部保存执行过的分支指令的结果(分支指令的cache),所以静态的分支预测就没有太多的意义。如果分支是有意义的,那么说明任何分支都会执行到,所以在特定情况下,静态分支预测的结果并没有多好,而且likely/unlikely对代码有很大的侵害(影响可读性),所以一般不推荐使用这个方法。

    4) Data prefetch (数据预取),推荐指数:4颗星

    指令预取是CPU自动完成的,但是数据预取就是一个有技术含量的工作。数据预取的依据是预取的数据马上会用到,这个应该符合空间局部性(spatial locality),但是如何知道预取的数据会被用到,这个要看上下文的关系。一般来说,数据预取在循环里面用的比较多,因为循环是最符合空间局部性的代码。

    但是数据预取的代码本身对程序是有侵害的(影响美观和可读性),而且优化效果不一定很明显(命中的概率)。数据预取可以填充流水线,避免访问内存的等待,还是有一定的好处的。

    5) Memory coloring (内存着色),推荐指数:不推荐

    内存着色属于系统层次的优化,在代码优化阶段去考虑内存着色,有点太晚了。所以这个话题可以放到系统层次优化里面去讨论。

    6)Register parameters (寄存器参数),推荐指数:4颗星

    寄存器做为速度最快的内存单元,不好好利用实在是浪费。但是,怎么用?一般来说,函数调用的参数少于某个数,比如3,参数是通过寄存器传递的(这个要看ABI的约定)。所以,写函数的时候,不要带那么多参数。c语言里还有一个register关键词,不过通常都没什么用处(没试过,不知道效果,不过可以反汇编看看具体的指令,估计是和编译器相关)。尝试从寄存器里面读取数据,而不是内存

    7) Lazy computation (延迟计算),推荐指数:5颗星

    延迟计算的意思是最近用不上的变量,就不要去初始化。通常来说,在函数开始就会初始化很多数据,但是这些数据在函数执行过程中并没有用到(比如一个分支判断,就退出了函数),那么这些动作就是浪费了。

    变量初始化是一个好的编程习惯,但是在性能优化的时候,有可能就是一个多余的动作,需要综合考虑函数的各个分支,做出决定。

    延迟计算也可以是系统层次的优化,比如COW(copy-on-write)就是在fork子进程的时候,并没有复制父进程所有的页表,而是只复制指令部分。当有写发生的时候,再复制数据部分,这样可以避免不必要的复制,提供进程创建的速度。

    8] Early computation (提前计算),推荐指数:5颗星

    有些变量,需要计算一次,多次使用的时候。最好是提前计算一下,保存结果,以后再引用,避免每次都重新计算一次。函数多了,有时就会忽略这个函数都做了些什么,写程序的人可以不了解,但是优化的时候不能不了解。能使用常数的地方,尽量使用常数,加减乘除都会消耗CPU的指令,不可不查。

    9)Inline or not inline (inline函数),推荐指数:5颗星

    Inline or not inline,这是个问题。Inline可以减少函数调用的开销(入栈,出栈的操作),但是inline也有可能造成大量的重复代码,使得代码的体积变大。Inline对debug也有坏处(汇编和语言对不上)。所以用这个的时候要谨慎。小的函数(小于10行),可以尝试用inline;调用次数多的或者很长的函数,尽量不要用inline。

    10) Macro or not macro (宏定义或者宏函数),推荐指数:5颗星

    Macro和inline带来的好处,坏处是一样的。但我的感觉是,可以用宏定义,不要用宏函数。用宏写函数,会有很多潜在的危险。宏要简单,精炼,最好是不要用。中看不中用。

    11) Allocation on stack (局部变量),推荐指数:5颗星

    如果每次都要在栈上分配一个1K大小的变量,这个代价是不是太大了哪?如果这个变量还需要初始化(因为值是随机的),那是不是更浪费了。全局变量好的一点是不需要反复的重建,销毁;而局部变量就有这个坏处。所以避免在栈上使用数组等变量

    12) Multiple conditions (多个条件的判断语句),推荐指数:3颗星

    多个条件判断时,是一个逐步缩小范围的过程。条件的先后,决定了前面的判断是否多余的。根据code path  的情况和条件分支的几率,调整条件的顺序,可以在一定程度上减少code path的开销。但是这个工作做起来有点难度,所以通常不推荐使用。

    13) Per-cpu data structure (非共享的数据结构),推荐指数:5颗星

    Per-cpu data structure 在多核,多CPU或者多线程编程里面一个通用的技巧。使用Per-cpu datastructure的目的是避免共享变量的锁,使得每个CPU可以独立访问数据而与其他CPU无关。坏处是会消耗大量的内存,而且并不是所有的变量都可以per-cpu化。并行是多核编程追求的目标,而串行化是多核编程里面最大的伤害。有关并行和串行的话题,在系统层次优化里面还会提到。

    局部变量肯定是threadlocal的,所以在多核编程里面,局部变量反而更有好处

    14) 64 bits counter in 32 bits environment (32位环境里的64位counter),推荐指数:5颗星

    32位环境里面用64位counter很显然会影响性能,所以除非必要,最好别用。有关counter的优化可以多说几句。counter是必须的,但是还需要慎重的选择,避免重复的计数。关键路径上的counter可以使用per-cpu counter,非关键路径(exception path)就可以省一点内存。

    15) Reduce call path or call trace (减少函数调用的层次),推荐指数:4颗星

    函数越多,有用的事情做的就越少(函数的入栈,出栈等)。所以要减少函数的调用层次。但是不应该破坏程序的美观和可读性。个人认为好程序的首要标准就是美观和可读性。不好看的程序读起来影响心情。所以需要权衡利弊,不能一个程序就一个函数。

    16) Move exception path out (把exception处理放到另一个函数里面),推荐指数:5颗星

    把exceptionpath和critical path放到一起(代码混合在一起),就会影响critical path的cache性能。而很多时候,exception path都是长篇大论,有点喧宾夺主的感觉。如果能criticalpathexception path完全分离开,这样对i-cache有很大帮助。

    17) Read, write split (读写分离),推荐指数:5颗星

    在cache.pdf里面提到了伪共享(false sharing),就是说两个无关的变量,一个读,一个写,而这两个变量在一个cache line里面。那么写会导致cache line失效(通常是在多核编程里面,两个变量在不同的core上引用)。读写分离是一个很难运用的技巧,特别是在code很复杂的情况下。需要不断地调试,是个力气活(如果有工具帮助会好一点,比如cache miss时触发cpu的execption处理之类的)。

    18) Reduce duplicated code(减少冗余代码),推荐指数:5颗星

    代码里面的冗余代码和死代码(deadcode)很多。减少冗余代码就是减小浪费。但冗余代码有时又是必不可少(copy-paste太多,尾大不掉,不好改了),但是对critical path,花一些功夫还是必要的。

    19) Use compiler optimization options (使用编译器的优化选项),推荐指数:4颗星

      使用编译器选项来优化代码,这个应该从一开始就进行。写编译器的人更懂CPU,所以可以放心地使用。编译器优化有不同的目标,有优化空间的,有优化时间的,看需求使用。

    20) Know your code path (了解所有的执行路径,并优化关键路径),推荐指数:5颗星

      代码的执行路径和静态代码不同,它是一个动态的执行过程,不同的输入,走过的路径不同。我们应该能区分出主要路径和次要路径,关注和优化主要路径。要了解执行路径的执行流程,有多少个锁,多少个原子操作,有多少同步消息,有多少内存拷贝等等。这是性能优化里面必不可少,也是唯一正确的途径,优化的过程,也是学习,整理知识的过程,虽然有时很无聊,但有时也很有趣。

     

     

     

     

     

     

     

     

     

     

     

     

    何时应该优化

    如果数据表明,性能确实没有达到指标,特别是当profiler表明,某处关键路径上的代码执行占用了大量的时间,那么就是优化的时候了。

     

    首先,要确保你要优化的代码是正确的,没有任何已知bug。因为优化后的代码往往会变得更复杂而难以修改,所以要趁代码还比较简单的时候赶紧把bug都修掉吧。

      然后,要确认性能指标,可以查specification,或者如果不清楚的话再问问客户,或者根据其他功能性需求计算得出。用profiler收集目前的性能数据,和性能指标对比,以确定是否需要优化、哪里需要优化。(数据要保留,因为等优化完后还要用这些数据来做对比,以检查优化是否有效。)常见的profiler有Rational Quantify、Borland Optimizeit等等。很多UNIX下面都自带了profiler,比如prof、gprof等,对于一般的使用已经够了。

      第三,进行优化。后面“常用的优化方法”一节对此进行了详细介绍。可以照着列出的常见的优化方法一个个地套用,或者更好的办法是进行一次团队头脑风暴会议,让大家提出各种可能的优化方案。记得优化时不要删除原来的实现。可以在源文件中以替代函数或者注释的方式保留原来的实现。

      第四,使用profiler,验证优化是否如所想的那样有效。如果有效,那是最好;如果无效甚至是帮了倒忙,那么就赶紧取消改动,使用原来的版本,然后继续尝试其他的优化方案。记得优化要一步一步来,从最省事且最有效的方案到最麻烦且收益最小的方案。一旦达成性能指标就收手,不要恋战。

      最后,记得对优化过的代码执行单元测试,看看有没有为了性能牺牲了正确性。要记得在注释或者文档中为优化留下记录。

     

    常用的优化方法

      最简单的优化:请检查是否使用了编译器的最新版本,是否把优化编译开关打开了,是否正确指定了目标处理器(以便使用MMX、SSE、3DNow!等高性能指令集以及让编译器自动为处理器所支持的其他高级特性做优化)。如果发布的产品要支持多种处理器,那么如果可能的话,请单独为每种处理器进行编译,分别发布,或者使用同一个发布包但让安装程序自动检测处理器型号并安装对应的二进制版本,或者把会在关键路径上执行的代码封装成动态链接库,然后让程序启动时自动检测处理器型号并加载为相应型号优化过的动态链接库版本。

      还有,要确保使用了高性能的库,好的算法。比如,同样是从堆上分配内存,不同编译器提供的malloc或者new的实现,性能差异就不小。GCC使用的DL malloc就比较高效,Borland的编译器提供的实现使用了类似内存池的方式来动态管理内存,效率也很高,但也有些编译器对此并没有做什么优化,直接进行系统调用。不仅malloc/new如此,STL的allocator也是如此。SGI STL带的allocator为小于128字节的内存块的分配进行了特别优化(用内存池实现),所以小型字符串以及其他会用到allocator此项功能的操作都会性能比较好,但其他STL实现就没有做这样的优化。

      选择正确的算法,往往比优化地实现算法更重要。因为不同时间复杂度的算法可能会给性能带来几个数量级的差异,而实现上的优化则往往付出很大、所得甚少。如果有时候精度不是那么重要,或者不需要找最佳的结果只需要找近似最佳的结果,那么往往可以用低时间复杂度的近似算法来代替。

      另外,查表法也是个常用的技巧。假设,用某个公式可以把彩色图像转换成灰度图象,那么如果转换处理量很大的话,对每个象素都用该公式计算一边就不划算了,完全可以事先对所有颜色都计算好,然后处理时查表即可。对三角函数也是如此。当然,为了减小表的尺寸,在精度上往往需要牺牲一些。

      但也不要以为因为是预先计算的不需要考虑计算代价,或者内存比较大虚拟内存更大,就可以把表做得很大。记住操作系统或者操作系统进行内存换页或者Cache换页都是要时间的,两个临界点分别是Cache的尺寸和物理内存的尺寸。具体是全部计算,还是全部查表,还是部分计算部分查表,表要做得多大,这些都需要尝试并用实际数据来支持。一个比较复杂的做法是动态地把计算出来的值缓存到稀疏表中并供以后使用时查询,表的物理尺寸根据当时机器的Cache、内存状况动态配置。

      如果使用Java或者.NET上的编程语言的话,因为垃圾会占用空间,垃圾收集器的执行会占用时间,所以除了优化算法及其实现,还要注意你的代码对垃圾收集器是否友好。比如有没有及时把不用的引用置成null,有没有不必要的finalizer等等。

      要避免很大的循环体,因为它们往往会超出Cache的尺寸。尽可能避免复杂的if-else或者switch-case语句,因为现代CPU的乱序执行功能看见这些语句会觉得很无奈。即便你非要用这些语句,最好养成习惯,把最可能的分支放在最前面。还有,如果可能的话,不要在循环体中使用这些条件分支语句。

      有一些经典著作,如ThePractice of Programming(《程序设计实践》)、Programming Pearls(《编程珠玑》)、CodeComplete 2e(国内目前只出版了第1版,叫《代码大全》)也都提到了很多优化技术,但是,很重要的一点是,这些书都很少提到或者没有展开讲“构架设计时注意不要留下性能瓶颈或者缺陷”这个问题。这已超出了优化的范畴,而是要求在设计起始阶段时就考虑到性能需求。事实上,在硬件性能极大提高、优化编译器大行其道的今天,我们写程序时已基本上很少需要去考虑局部的微观实现是否优化了,因为有95%的可能编译器会替你去操心,或者根本性能不优化也可满足需求。甚至如果程序的内部结构比较清晰的化,算法也是可以很容易地替换的(比如用Strategy模式,或者Policy-Based Design的方式)。但也有的东西不太好在程序写完后再改,但又可能对性能有极大影响:那就是总体的设计和构架,以及一些影响面很广的设计决策/取舍。在今天,这些比较宏观的内容远比微观的优化技巧要重要。

      读者可能要问了:“不是说‘不必要的优化是一切罪恶的源泉’、‘没有数据证明就不要做优化’吗?在设计起始阶段根本还没有代码可以执行,怎么获得数据?你怎么保证这不会是不必要的优化呢?”噢,这个问题很好回答:当设计还没形成,代码还没写时,这不叫优化,仅仅是设计。优化是一种改变,把现有的缓慢的东西变成快速的东西。而设计时“本来无一物,何来谈优化”呢。

      更何况,一些比较宏观的构架上的决策,日后重构起来会非常困难,所以一开始就应该要考虑到。如果一开始需求尚未明确并且你也预计不到日后会有这样的性能需求,那么没有考虑到也不能怪你。但若一开始客户就提出了明确的性能要求,或者你心里很清楚客户一定会需要这样的性能,而你设计时却依然选择了无法或者难以满足这样性能要求的构架,那么这就不太好了。此外,如果两种设计/构架,并没有明确的实现复杂性或者优雅程度的差别,而其中一种设计/构架明显性能扩展性更好,那么也应该选择后一种。这不叫“premature optimization”,而叫做“避免premature pessimization”(过早悲观)(见C++ CodingStandards一书的Item 9)。

      另外,还有一些很常见的和性能相关的话题。而且不少人对它们的认识还有一些误区,比如资源(特别是内存)的获取和释放、线程间的同步(也可看作特殊资源——各种线程锁的获取和释放)、字符串(或者其他缓冲区)的处理,以及这些操作的组合。这些话题很值得进一步讨论,在今后的文章中,会再和读者进行更深层次的交流。

     

     

     

     

     

     

    分支优化

    局部性优化

    循环展开

     

    展开全文
  • 嵌入式c语言程序优化方法总结

    万次阅读 2019-12-25 17:21:58
    本文先介绍了一些提高程序执行效率的原则,并根据这些原则对之前提出的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 <math.h>
    #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算法在单片机上的执行速率!

    展开全文
  • 程序性能优化总结

    2021-03-13 23:47:07
    一个运行的越好越快的程序应当是每个程序员的不懈追求,最近拉取视频流时,出现内存损耗严重的情况,经过不懈努力,终于得到了想要的结果,同时也意识到自己对如何优化程序性能这块缺乏足够的认识,经过一段时间学习...

    程序性能优化

    一个运行的越好越快的程序应当是每个程序员的不懈追求,最近拉取视频流时,出现内存损耗严重的情况,经过不懈努力,终于得到了想要的结果,同时也意识到自己对如何优化程序性能这块缺乏足够的认识,经过一段时间学习自己有了一些所得,做一个笔记,如果有不足和错误的地方,还请指正。

    一.编译器指定优先级别

    我们以gcc,g++编译器为例子,说明各优化级别的用法及效果

    1. 用法
       gcc -O1 源文件
    
    1. 优缺点
    • 优点
      程序员几乎可以不对程序进行任何优化,便可将程序性能提高几个优先级,这是由编译器内部的程序优化机制完成的
    • 缺点
      优化级别越高,生成的可执行文件越大,也可能影响我们使用标准调式工具(如gdb)对程序进行调试

    二.代码优化

    代码优化就是消除不必要的工作,这包括消除不必要的函数调用,条件测试,内存引用等,如果以上三种情况只进行一次,对整个程序性能几乎没影响,如果在循环中循环进行则对程序性能有相当大的影响

    1. 减少不必要的函数调用。 尤其是C语言标准函数库中的函数,有些函数触发系统调用或者函数本身具有高耗能属性的,比如open,socket,strlen等,为了便于比较下面正反例的性能差异,引入一个名词CPE(每元素周期数),数值越大,性能越差.
      例:
    void fun1(char *buff){ //buff != NULL
    	for(int i=0;i<strlen(buff);i++){
    		//.....
    	}
    }
    void fun2(char *buff){ //buff != NULL
    	int len = strlen(buff);
    	for(int i=0;i<len;i++){
    		//.....
    	}
    }
    
    // strlen是一个十分耗能的接口,直接从头开始读内存数据,一直读到'\0'为止
    // 因此字符串越长,所用时间越长
    

    fun1 和fun2两个函数分别调用strlen函数len次和1次,随着len变大性能差异也逐渐变大
    2. 内存引用.
    例:

    void fun1(int *dest,int s_len){
    	for(int i=0;i<s_len;i++){
    		*dest = *dest + i;
    	}
    }
    void fun2(int *dest,int s_len){
    	int tmpInt = 0;
    	for(int i=0;i<s_len;i++){
    		tmpInt  = tmpInt  + i;
    	}
    	*dest = *dest + tmpInt;
    }
    

    像上面这种的可以避免的我们要尽量避免,有时随着循环次数及内存数据的增加,一个简单的代码改变将对程序性能有一个巨大的提升
    3. 条件测试
    条件测试指尽可能的减少条件判断,比如if,else语句,当我们需要进行判断时,可以由switch替换的尽量使用switch替换,可以有效减少判断次数,从而提升性能

    本文只是博主对程序优化的一个小总结,更多是从应用这块入手,如果想进一步深入学习需了解处理器执行指令的底层系统设计,<<深入理解计算机系统>>第五章有这方面的知识,可去了解学习。

    展开全文
  • 优化程序性能的基本策略: (1)高级设计。为遇到的问题选择适当的算法和数据结构。要特别警觉,避免使用那些会渐进地产生糟糕性能的算法或编码技术。 (2)基本编码原则。避免限制优化的因素,这样编译器就能产生...
  • Android 程序优化总结

    千次阅读 2013-12-27 13:23:56
    程序结构清晰,简单易懂,单个函数的程序行数不得超过100行。 打算干什么,要简单,直接。 尽量使用标准库函数和公共函数 不要随意定义全局变量,尽量使用局部变量。 使用括号可以避免二意性 可读性要求: 可读性第...
  • 程序性能优化总结

    2019-01-09 12:26:06
    程序实战踩坑之B2B商城项目总结 初试小刀自我简历小程序 启动加载优化 在小程序启动时,微信会在背后完成几项工作:下载小程序代码包、加载小程序代码包、初始化小程序首页。 初始化小程序环境是微信环境做的工作...
  • 先简单介绍一下项目,就是一个比较常规的点餐小程序。 界面如图: 左边是分类菜单,右边是长列表,有多个分类的商品,单个分类滚动完后可以继续滚动切换到下一个分类,同时左边的分类菜单选中态会跟着切换到当前...
  • 程序性能优化 总结

    2019-09-23 22:02:11
    1.程序性能的表现方式 (执行速度,内存分配,启动时间,负载承受能力) 性能的参考标准 (执行时间,CPU时间,内存分配,磁盘吞吐量,网络吞吐量,响应时间) 2.最优可能成为系统瓶颈的计算资源 3....
  • ABAP程序优化方案总结

    2012-06-05 20:52:27
    1.最主要的是尽量减少I/O操作...CPU的负载可以通过优化程序来改善,在程序中尽量使用诸如SUM(SQL语句)或者COLLECT(ABAP语句)。 2.尽可能多地使用表的索引作为Where分句的条件选项,尽可能让程序只读取一定范
  • java程序优化总结

    2015-12-25 17:17:18
    1、面向对象的编程给我们很方便的编程思维,以类为原点,让我们去写程序。由于自己要写通讯解析程序,并且数据量大而不得不考虑效率的问题。 2、我们对类的定义有,javabean:数据转储到内存时使用的,每次使用每次...
  • CUDA之程序优化总结

    千次阅读 2017-03-24 23:29:09
    CUDA程序优化 CUDA程序优化应该考虑的点: 精度:只在关键步骤使用双精度,其他部分仍然使用单精度浮点以获得指令吞吐量和精度的平衡; 延迟:需要首先缓冲一部分数据,缓冲的大小应该可以保证每个内核程序处理的...
  • android 程序优化总结

    2015-03-17 00:31:51
    1、UI的复用 2、直接加载到内存里面,图片是否被释放 3、预加载 4、图片异步加载显示 5、分页刷新页面 6、tranveview分析执行时间 ...7、MAT分析是否有内存泄露 ...8、使用layoutopt分析布局文件层次是否太深 ...
  • 性能优化 内存溢出 内存监控 SSH应用注意事项

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,209
精华内容 2,083
关键字:

优化程序总结