/[escript]/trunk/escriptcore/test/python/test_util_spatial_functions2.py
ViewVC logotype

Diff of /trunk/escriptcore/test/python/test_util_spatial_functions2.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3911 by jfenwick, Thu Jun 14 01:01:03 2012 UTC revision 3975 by caltinay, Thu Sep 20 01:54:06 2012 UTC
# Line 3983  class Test_Util_SpatialFunctions_noGradO Line 3983  class Test_Util_SpatialFunctions_noGradO
3983        self.assertEqual(res.shape,(4, 5, 3, 2),"wrong shape of result.")        self.assertEqual(res.shape,(4, 5, 3, 2),"wrong shape of result.")
3984        self.assertTrue(Lsup(res-ref)<=self.RES_TOL*Lsup(ref),"wrong result")        self.assertTrue(Lsup(res-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
3985     #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++     #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    def test_integrate_onFunctionOnContactZero_fromSymbol_ContinuousFunction_rank0(self):  
       """  
       tests integral of rank 0 Symbol on the FunctionOnContactZero  
   
       assumptions: ContinuousFunction(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=ContinuousFunction(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=())  
       s=Data(0,(),w)  
       if dim==2:  
         s=(-0.239048993811)*x[0]**o+(0.519530081152)*x[0]+(0.0639850840479)*x[1]**o+(0.629919962063)*x[1]  
         ref=(0.0639850840479)/(o+1.)+(0.574725021608)+(-0.239048993811)*0.5**o  
       else:  
         s=(0.129836073672)*x[0]**o+(0.77979793904)*x[0]+(0.153605570913)*x[1]**o+(0.182457449004)*x[1]+(-0.363742743784)*x[2]**o+(-0.826028359978)*x[2]  
         ref=(-0.210137172871)/(o+1.)+(0.068113514033)+(0.129836073672)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onFunctionOnContactZero_fromSymbol_ContinuousFunction_rank1(self):  
       """  
       tests integral of rank 1 Symbol on the FunctionOnContactZero  
   
       assumptions: ContinuousFunction(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=ContinuousFunction(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(2,))  
       s=Data(0,(2,),w)  
       ref=numpy.zeros((2,),numpy.float_)  
       if dim==2:  
         s[0]=(-0.0535727754535)*x[0]**o+(-0.378911132266)*x[0]+(0.893236107106)*x[1]**o+(-0.133308761371)*x[1]  
         s[1]=(0.816344010178)*x[0]**o+(-0.629551729403)*x[0]+(0.962635839824)*x[1]**o+(0.531091887731)*x[1]  
         ref[0]=(0.893236107106)/(o+1.)+(-0.256109946819)+(-0.0535727754535)*0.5**o  
         ref[1]=(0.962635839824)/(o+1.)+(-0.049229920836)+(0.816344010178)*0.5**o  
       else:  
         s[0]=(0.99651578956)*x[0]**o+(-0.450391117128)*x[0]+(-0.0521202081325)*x[1]**o+(0.409486612049)*x[1]+(0.951839775929)*x[2]**o+(0.0755155386131)*x[2]  
         s[1]=(-0.226900637285)*x[0]**o+(-0.784888192711)*x[0]+(-0.475467162806)*x[1]**o+(0.536559857164)*x[1]+(0.346844399644)*x[2]**o+(-0.237869505536)*x[2]  
         ref[0]=(0.899719567796)/(o+1.)+(0.0173055167672)+(0.99651578956)*0.5**o  
         ref[1]=(-0.128622763161)/(o+1.)+(-0.243098920542)+(-0.226900637285)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(2,),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onFunctionOnContactZero_fromSymbol_ContinuousFunction_rank2(self):  
       """  
       tests integral of rank 2 Symbol on the FunctionOnContactZero  
   
       assumptions: ContinuousFunction(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=ContinuousFunction(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(4, 5))  
       s=Data(0,(4, 5),w)  
       ref=numpy.zeros((4, 5),numpy.float_)  
       if dim==2:  
         s[0,0]=(-0.328426418082)*x[0]**o+(-0.966431499834)*x[0]+(0.982530526624)*x[1]**o+(0.475372684178)*x[1]  
         s[0,1]=(0.61075753424)*x[0]**o+(-0.974986578257)*x[0]+(-0.0986707750313)*x[1]**o+(-0.490145139235)*x[1]  
         s[0,2]=(-0.629292138329)*x[0]**o+(-0.784677771399)*x[0]+(0.662986672949)*x[1]**o+(-0.0634716139549)*x[1]  
         s[0,3]=(0.74966960207)*x[0]**o+(-0.672137973696)*x[0]+(-0.104345950525)*x[1]**o+(-0.196646103769)*x[1]  
         s[0,4]=(0.714327500249)*x[0]**o+(-0.454839918323)*x[0]+(-0.904749225664)*x[1]**o+(0.829036667249)*x[1]  
         s[1,0]=(-0.290327744474)*x[0]**o+(-0.0432653521002)*x[0]+(-0.814637993515)*x[1]**o+(0.329873273442)*x[1]  
         s[1,1]=(-0.256944455249)*x[0]**o+(-0.0374267372088)*x[0]+(0.136172411148)*x[1]**o+(-0.82944305625)*x[1]  
         s[1,2]=(-0.260661151595)*x[0]**o+(-0.597199898207)*x[0]+(0.909049968542)*x[1]**o+(-0.262195958725)*x[1]  
         s[1,3]=(-0.228035815224)*x[0]**o+(0.772135534405)*x[0]+(0.00192609783775)*x[1]**o+(-0.855606696367)*x[1]  
         s[1,4]=(0.824519454106)*x[0]**o+(0.723545812848)*x[0]+(0.588395672453)*x[1]**o+(0.701489329605)*x[1]  
         s[2,0]=(0.104767951487)*x[0]**o+(0.0937742673825)*x[0]+(-0.226378722473)*x[1]**o+(-0.239638024937)*x[1]  
         s[2,1]=(0.922749632743)*x[0]**o+(0.380185381588)*x[0]+(-0.873869266649)*x[1]**o+(-0.995526870666)*x[1]  
         s[2,2]=(0.459628441315)*x[0]**o+(-0.870827776883)*x[0]+(0.963527703404)*x[1]**o+(-0.380921690386)*x[1]  
         s[2,3]=(0.0538635635094)*x[0]**o+(0.636269518871)*x[0]+(0.496494434174)*x[1]**o+(0.389503037841)*x[1]  
         s[2,4]=(0.486584334747)*x[0]**o+(0.595962829728)*x[0]+(-0.0473827215975)*x[1]**o+(-0.0598623245737)*x[1]  
         s[3,0]=(0.104809543499)*x[0]**o+(-0.103399959545)*x[0]+(0.46274253883)*x[1]**o+(0.00540100368281)*x[1]  
         s[3,1]=(0.182366414916)*x[0]**o+(-0.454996760913)*x[0]+(0.195895079357)*x[1]**o+(-0.445919339196)*x[1]  
         s[3,2]=(-0.270350002842)*x[0]**o+(0.0801494193318)*x[0]+(-0.192008845814)*x[1]**o+(0.20055215786)*x[1]  
         s[3,3]=(0.946634950526)*x[0]**o+(0.794617946132)*x[0]+(0.266843824183)*x[1]**o+(0.431654105192)*x[1]  
         s[3,4]=(-0.282961386823)*x[0]**o+(-0.659458559302)*x[0]+(-0.701137505881)*x[1]**o+(0.419244903032)*x[1]  
         ref[0,0]=(0.982530526624)/(o+1.)+(-0.245529407828)+(-0.328426418082)*0.5**o  
         ref[0,1]=(-0.0986707750313)/(o+1.)+(-0.732565858746)+(0.61075753424)*0.5**o  
         ref[0,2]=(0.662986672949)/(o+1.)+(-0.424074692677)+(-0.629292138329)*0.5**o  
         ref[0,3]=(-0.104345950525)/(o+1.)+(-0.434392038732)+(0.74966960207)*0.5**o  
         ref[0,4]=(-0.904749225664)/(o+1.)+(0.187098374463)+(0.714327500249)*0.5**o  
         ref[1,0]=(-0.814637993515)/(o+1.)+(0.143303960671)+(-0.290327744474)*0.5**o  
         ref[1,1]=(0.136172411148)/(o+1.)+(-0.433434896729)+(-0.256944455249)*0.5**o  
         ref[1,2]=(0.909049968542)/(o+1.)+(-0.429697928466)+(-0.260661151595)*0.5**o  
         ref[1,3]=(0.00192609783775)/(o+1.)+(-0.0417355809806)+(-0.228035815224)*0.5**o  
         ref[1,4]=(0.588395672453)/(o+1.)+(0.712517571227)+(0.824519454106)*0.5**o  
         ref[2,0]=(-0.226378722473)/(o+1.)+(-0.0729318787773)+(0.104767951487)*0.5**o  
         ref[2,1]=(-0.873869266649)/(o+1.)+(-0.307670744539)+(0.922749632743)*0.5**o  
         ref[2,2]=(0.963527703404)/(o+1.)+(-0.625874733635)+(0.459628441315)*0.5**o  
         ref[2,3]=(0.496494434174)/(o+1.)+(0.512886278356)+(0.0538635635094)*0.5**o  
         ref[2,4]=(-0.0473827215975)/(o+1.)+(0.268050252577)+(0.486584334747)*0.5**o  
         ref[3,0]=(0.46274253883)/(o+1.)+(-0.0489994779311)+(0.104809543499)*0.5**o  
         ref[3,1]=(0.195895079357)/(o+1.)+(-0.450458050054)+(0.182366414916)*0.5**o  
         ref[3,2]=(-0.192008845814)/(o+1.)+(0.140350788596)+(-0.270350002842)*0.5**o  
         ref[3,3]=(0.266843824183)/(o+1.)+(0.613136025662)+(0.946634950526)*0.5**o  
         ref[3,4]=(-0.701137505881)/(o+1.)+(-0.120106828135)+(-0.282961386823)*0.5**o  
       else:  
         s[0,0]=(-0.544243335601)*x[0]**o+(-0.307372154904)*x[0]+(0.244525574061)*x[1]**o+(-0.528694523489)*x[1]+(0.667705852103)*x[2]**o+(0.866378210585)*x[2]  
         s[0,1]=(-0.397733775219)*x[0]**o+(0.195969196217)*x[0]+(-0.941371407192)*x[1]**o+(0.524704832845)*x[1]+(-0.973723558169)*x[2]**o+(0.0452111700317)*x[2]  
         s[0,2]=(-0.0445896420815)*x[0]**o+(-0.730345503814)*x[0]+(-0.797148073969)*x[1]**o+(0.687229609119)*x[1]+(-0.905358686985)*x[2]**o+(-0.764008239213)*x[2]  
         s[0,3]=(0.803277368887)*x[0]**o+(0.716534949109)*x[0]+(-0.138102366205)*x[1]**o+(-0.0536511450001)*x[1]+(-0.608245637044)*x[2]**o+(-0.922294317712)*x[2]  
         s[0,4]=(-0.802690014092)*x[0]**o+(0.397998151759)*x[0]+(0.209143804619)*x[1]**o+(0.171210888095)*x[1]+(0.945371372346)*x[2]**o+(0.143657498886)*x[2]  
         s[1,0]=(-0.737094926707)*x[0]**o+(-0.682774905121)*x[0]+(-0.605040082549)*x[1]**o+(0.913015529243)*x[1]+(-0.923053380199)*x[2]**o+(0.488575946117)*x[2]  
         s[1,1]=(-0.19024610752)*x[0]**o+(0.112566519608)*x[0]+(0.631915593649)*x[1]**o+(0.613460770368)*x[1]+(-0.145279640801)*x[2]**o+(0.391904990063)*x[2]  
         s[1,2]=(0.503053165032)*x[0]**o+(0.150421546144)*x[0]+(-0.975785035648)*x[1]**o+(0.358360240583)*x[1]+(-0.116051949436)*x[2]**o+(0.22565570175)*x[2]  
         s[1,3]=(-0.183734715218)*x[0]**o+(0.397188558255)*x[0]+(0.621875746076)*x[1]**o+(-0.683761765859)*x[1]+(-0.964066487584)*x[2]**o+(0.572293215139)*x[2]  
         s[1,4]=(0.308876282691)*x[0]**o+(0.163499825051)*x[0]+(-0.859132579068)*x[1]**o+(-0.133046304211)*x[1]+(-0.995751005727)*x[2]**o+(0.256192590636)*x[2]  
         s[2,0]=(-0.823620775877)*x[0]**o+(-0.173531059768)*x[0]+(-0.428278048825)*x[1]**o+(-0.935056836732)*x[1]+(-0.16471171795)*x[2]**o+(-0.0746252552822)*x[2]  
         s[2,1]=(0.692340272178)*x[0]**o+(-0.178862964433)*x[0]+(0.241112494059)*x[1]**o+(-0.0400607170557)*x[1]+(-0.131477945619)*x[2]**o+(-0.742303256353)*x[2]  
         s[2,2]=(-0.213693977195)*x[0]**o+(0.829007036928)*x[0]+(0.269322769984)*x[1]**o+(0.988636255935)*x[1]+(0.145550246384)*x[2]**o+(0.53131223825)*x[2]  
         s[2,3]=(0.337485288934)*x[0]**o+(-0.794235442944)*x[0]+(-0.862195558251)*x[1]**o+(-0.302947127951)*x[1]+(0.660574358405)*x[2]**o+(0.383147294118)*x[2]  
         s[2,4]=(-0.0555202855446)*x[0]**o+(-0.298089725164)*x[0]+(-0.971009290556)*x[1]**o+(-0.867265062556)*x[1]+(0.669532302056)*x[2]**o+(-0.432375844991)*x[2]  
         s[3,0]=(0.596097084223)*x[0]**o+(-0.388031691584)*x[0]+(-0.596718750677)*x[1]**o+(0.196346996307)*x[1]+(0.0230334505824)*x[2]**o+(-0.293224683649)*x[2]  
         s[3,1]=(-0.855920365774)*x[0]**o+(-0.0363724823656)*x[0]+(-0.918160096067)*x[1]**o+(-0.275555163751)*x[1]+(-0.90266927)*x[2]**o+(-0.275537041793)*x[2]  
         s[3,2]=(0.788923009274)*x[0]**o+(-0.182338499866)*x[0]+(0.649442441856)*x[1]**o+(-0.179319161548)*x[1]+(-0.330240080654)*x[2]**o+(0.45030421169)*x[2]  
         s[3,3]=(-0.0731084424823)*x[0]**o+(0.903713856354)*x[0]+(0.749750641159)*x[1]**o+(-0.274337831625)*x[1]+(0.667970754626)*x[2]**o+(-0.369139994984)*x[2]  
         s[3,4]=(0.0580656964124)*x[0]**o+(0.30223985624)*x[0]+(-0.0278202819133)*x[1]**o+(-0.214845008141)*x[1]+(0.683342885793)*x[2]**o+(0.920939676772)*x[2]  
         ref[0,0]=(0.912231426164)/(o+1.)+(0.0151557660955)+(-0.544243335601)*0.5**o  
         ref[0,1]=(-1.91509496536)/(o+1.)+(0.382942599547)+(-0.397733775219)*0.5**o  
         ref[0,2]=(-1.70250676095)/(o+1.)+(-0.403562066955)+(-0.0445896420815)*0.5**o  
         ref[0,3]=(-0.746348003249)/(o+1.)+(-0.129705256801)+(0.803277368887)*0.5**o  
         ref[0,4]=(1.15451517696)/(o+1.)+(0.35643326937)+(-0.802690014092)*0.5**o  
         ref[1,0]=(-1.52809346275)/(o+1.)+(0.359408285119)+(-0.737094926707)*0.5**o  
         ref[1,1]=(0.486635952848)/(o+1.)+(0.558966140019)+(-0.19024610752)*0.5**o  
         ref[1,2]=(-1.09183698508)/(o+1.)+(0.367218744238)+(0.503053165032)*0.5**o  
         ref[1,3]=(-0.342190741508)/(o+1.)+(0.142860003768)+(-0.183734715218)*0.5**o  
         ref[1,4]=(-1.8548835848)/(o+1.)+(0.143323055738)+(0.308876282691)*0.5**o  
         ref[2,0]=(-0.592989766775)/(o+1.)+(-0.591606575891)+(-0.823620775877)*0.5**o  
         ref[2,1]=(0.109634548439)/(o+1.)+(-0.480613468921)+(0.692340272178)*0.5**o  
         ref[2,2]=(0.414873016368)/(o+1.)+(1.17447776556)+(-0.213693977195)*0.5**o  
         ref[2,3]=(-0.201621199846)/(o+1.)+(-0.357017638388)+(0.337485288934)*0.5**o  
         ref[2,4]=(-0.3014769885)/(o+1.)+(-0.798865316355)+(-0.0555202855446)*0.5**o  
         ref[3,0]=(-0.573685300094)/(o+1.)+(-0.242454689463)+(0.596097084223)*0.5**o  
         ref[3,1]=(-1.82082936607)/(o+1.)+(-0.293732343955)+(-0.855920365774)*0.5**o  
         ref[3,2]=(0.319202361202)/(o+1.)+(0.044323275138)+(0.788923009274)*0.5**o  
         ref[3,3]=(1.41772139578)/(o+1.)+(0.130118014873)+(-0.0731084424823)*0.5**o  
         ref[3,4]=(0.65552260388)/(o+1.)+(0.504167262435)+(0.0580656964124)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(4, 5),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onFunctionOnContactZero_fromSymbol_ContinuousFunction_rank3(self):  
       """  
       tests integral of rank 3 Symbol on the FunctionOnContactZero  
   
       assumptions: ContinuousFunction(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=ContinuousFunction(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(6, 2, 2))  
       s=Data(0,(6, 2, 2),w)  
       ref=numpy.zeros((6, 2, 2),numpy.float_)  
       if dim==2:  
         s[0,0,0]=(-0.2538014101)*x[0]**o+(0.422893022023)*x[0]+(-0.168009677754)*x[1]**o+(0.967205152872)*x[1]  
         s[0,0,1]=(-0.42169068503)*x[0]**o+(-0.87035047637)*x[0]+(0.861757151221)*x[1]**o+(0.233579078048)*x[1]  
         s[0,1,0]=(0.761004021853)*x[0]**o+(-0.406910518681)*x[0]+(-0.653627037953)*x[1]**o+(0.78163950747)*x[1]  
         s[0,1,1]=(0.571752563364)*x[0]**o+(0.352647230887)*x[0]+(0.64023828193)*x[1]**o+(-0.906400256269)*x[1]  
         s[1,0,0]=(-0.229152209793)*x[0]**o+(-0.164526860803)*x[0]+(-0.815301528075)*x[1]**o+(-0.375201173874)*x[1]  
         s[1,0,1]=(0.497997942477)*x[0]**o+(-0.590120034514)*x[0]+(0.387642938322)*x[1]**o+(-0.441598030675)*x[1]  
         s[1,1,0]=(-0.396407524403)*x[0]**o+(0.225115161973)*x[0]+(0.709660265053)*x[1]**o+(-0.723548390356)*x[1]  
         s[1,1,1]=(-0.810340425309)*x[0]**o+(0.571580569899)*x[0]+(0.401013753168)*x[1]**o+(0.881936918624)*x[1]  
         s[2,0,0]=(0.096907527902)*x[0]**o+(-0.329521007808)*x[0]+(0.872734305266)*x[1]**o+(-0.677632080143)*x[1]  
         s[2,0,1]=(-0.657791763259)*x[0]**o+(-0.0622202818891)*x[0]+(0.838133724288)*x[1]**o+(0.679646081219)*x[1]  
         s[2,1,0]=(-0.982546119133)*x[0]**o+(0.0982803558898)*x[0]+(0.188605842026)*x[1]**o+(-0.436341762577)*x[1]  
         s[2,1,1]=(0.623965743731)*x[0]**o+(-0.470311605613)*x[0]+(-0.700736177085)*x[1]**o+(0.688725936352)*x[1]  
         s[3,0,0]=(0.154576108414)*x[0]**o+(-0.114669097915)*x[0]+(-0.922751077939)*x[1]**o+(-0.0336084204309)*x[1]  
         s[3,0,1]=(-0.360543465066)*x[0]**o+(0.369432311166)*x[0]+(0.56460991873)*x[1]**o+(-0.56949007527)*x[1]  
         s[3,1,0]=(0.914890366289)*x[0]**o+(0.216556566085)*x[0]+(-0.720400002066)*x[1]**o+(-0.44569085463)*x[1]  
         s[3,1,1]=(0.0855171738813)*x[0]**o+(-0.47318307368)*x[0]+(0.267072371169)*x[1]**o+(-0.861793396744)*x[1]  
         s[4,0,0]=(-0.862522626201)*x[0]**o+(0.101759724363)*x[0]+(-0.843728984752)*x[1]**o+(-0.510998623672)*x[1]  
         s[4,0,1]=(0.827712219176)*x[0]**o+(-0.83052404804)*x[0]+(-0.349511963621)*x[1]**o+(0.379838260239)*x[1]  
         s[4,1,0]=(0.923120645339)*x[0]**o+(-0.310138654901)*x[0]+(-0.0364015485007)*x[1]**o+(-0.869695736822)*x[1]  
         s[4,1,1]=(0.462952706773)*x[0]**o+(0.391666695595)*x[0]+(0.918559046828)*x[1]**o+(0.0448293018515)*x[1]  
         s[5,0,0]=(0.708616542984)*x[0]**o+(-0.826033306645)*x[0]+(0.50975079739)*x[1]**o+(-0.213839768114)*x[1]  
         s[5,0,1]=(0.874170725144)*x[0]**o+(0.128033874112)*x[0]+(-0.236784782085)*x[1]**o+(0.885355734442)*x[1]  
         s[5,1,0]=(0.0315543075879)*x[0]**o+(-0.482419902735)*x[0]+(0.112741960603)*x[1]**o+(0.336157525634)*x[1]  
         s[5,1,1]=(0.000481165869329)*x[0]**o+(-0.356220818813)*x[0]+(-0.466568234378)*x[1]**o+(0.851934710295)*x[1]  
         ref[0,0,0]=(-0.168009677754)/(o+1.)+(0.695049087447)+(-0.2538014101)*0.5**o  
         ref[0,0,1]=(0.861757151221)/(o+1.)+(-0.318385699161)+(-0.42169068503)*0.5**o  
         ref[0,1,0]=(-0.653627037953)/(o+1.)+(0.187364494395)+(0.761004021853)*0.5**o  
         ref[0,1,1]=(0.64023828193)/(o+1.)+(-0.276876512691)+(0.571752563364)*0.5**o  
         ref[1,0,0]=(-0.815301528075)/(o+1.)+(-0.269864017338)+(-0.229152209793)*0.5**o  
         ref[1,0,1]=(0.387642938322)/(o+1.)+(-0.515859032595)+(0.497997942477)*0.5**o  
         ref[1,1,0]=(0.709660265053)/(o+1.)+(-0.249216614192)+(-0.396407524403)*0.5**o  
         ref[1,1,1]=(0.401013753168)/(o+1.)+(0.726758744261)+(-0.810340425309)*0.5**o  
         ref[2,0,0]=(0.872734305266)/(o+1.)+(-0.503576543976)+(0.096907527902)*0.5**o  
         ref[2,0,1]=(0.838133724288)/(o+1.)+(0.308712899665)+(-0.657791763259)*0.5**o  
         ref[2,1,0]=(0.188605842026)/(o+1.)+(-0.169030703344)+(-0.982546119133)*0.5**o  
         ref[2,1,1]=(-0.700736177085)/(o+1.)+(0.10920716537)+(0.623965743731)*0.5**o  
         ref[3,0,0]=(-0.922751077939)/(o+1.)+(-0.0741387591729)+(0.154576108414)*0.5**o  
         ref[3,0,1]=(0.56460991873)/(o+1.)+(-0.100028882052)+(-0.360543465066)*0.5**o  
         ref[3,1,0]=(-0.720400002066)/(o+1.)+(-0.114567144272)+(0.914890366289)*0.5**o  
         ref[3,1,1]=(0.267072371169)/(o+1.)+(-0.667488235212)+(0.0855171738813)*0.5**o  
         ref[4,0,0]=(-0.843728984752)/(o+1.)+(-0.204619449655)+(-0.862522626201)*0.5**o  
         ref[4,0,1]=(-0.349511963621)/(o+1.)+(-0.2253428939)+(0.827712219176)*0.5**o  
         ref[4,1,0]=(-0.0364015485007)/(o+1.)+(-0.589917195861)+(0.923120645339)*0.5**o  
         ref[4,1,1]=(0.918559046828)/(o+1.)+(0.218247998723)+(0.462952706773)*0.5**o  
         ref[5,0,0]=(0.50975079739)/(o+1.)+(-0.51993653738)+(0.708616542984)*0.5**o  
         ref[5,0,1]=(-0.236784782085)/(o+1.)+(0.506694804277)+(0.874170725144)*0.5**o  
         ref[5,1,0]=(0.112741960603)/(o+1.)+(-0.0731311885505)+(0.0315543075879)*0.5**o  
         ref[5,1,1]=(-0.466568234378)/(o+1.)+(0.247856945741)+(0.000481165869329)*0.5**o  
       else:  
         s[0,0,0]=(0.712776413788)*x[0]**o+(-0.232827372726)*x[0]+(0.504361060322)*x[1]**o+(-0.646213742366)*x[1]+(-0.292404315781)*x[2]**o+(0.0934342710289)*x[2]  
         s[0,0,1]=(-0.6231391885)*x[0]**o+(-0.201681226437)*x[0]+(0.295572186857)*x[1]**o+(0.490652427459)*x[1]+(-0.816764035717)*x[2]**o+(-0.920253719103)*x[2]  
         s[0,1,0]=(0.464396400115)*x[0]**o+(0.256116225806)*x[0]+(0.00347318217819)*x[1]**o+(0.290749204508)*x[1]+(0.755673392263)*x[2]**o+(0.0296476243926)*x[2]  
         s[0,1,1]=(-0.901282392808)*x[0]**o+(0.390894518003)*x[0]+(-0.638342109049)*x[1]**o+(0.325572670945)*x[1]+(0.011997038614)*x[2]**o+(-0.953246898018)*x[2]  
         s[1,0,0]=(-0.234152998295)*x[0]**o+(-0.686879447381)*x[0]+(0.684513221814)*x[1]**o+(0.314162707683)*x[1]+(-0.140878044122)*x[2]**o+(0.588563624841)*x[2]  
         s[1,0,1]=(0.00302398956565)*x[0]**o+(-0.255603279589)*x[0]+(-0.356254001427)*x[1]**o+(-0.00335409560896)*x[1]+(0.761527454384)*x[2]**o+(-0.803864763242)*x[2]  
         s[1,1,0]=(0.350958444218)*x[0]**o+(0.626399553048)*x[0]+(-0.804525479633)*x[1]**o+(0.999024446128)*x[1]+(-0.747418498661)*x[2]**o+(0.16538209042)*x[2]  
         s[1,1,1]=(0.830959844328)*x[0]**o+(-0.838517518014)*x[0]+(-0.815601516751)*x[1]**o+(-0.527962402292)*x[1]+(0.849695437437)*x[2]**o+(0.0461655137013)*x[2]  
         s[2,0,0]=(-0.654485309003)*x[0]**o+(-0.922437021301)*x[0]+(0.0726219637303)*x[1]**o+(-0.27358467284)*x[1]+(0.965940347168)*x[2]**o+(0.136286409807)*x[2]  
         s[2,0,1]=(-0.765669487668)*x[0]**o+(-0.381631759049)*x[0]+(-0.338604617382)*x[1]**o+(-0.026416557321)*x[1]+(-0.505094659996)*x[2]**o+(-0.109271565345)*x[2]  
         s[2,1,0]=(-0.823307360412)*x[0]**o+(0.742603440907)*x[0]+(0.264688242655)*x[1]**o+(0.152850147645)*x[1]+(0.576103041841)*x[2]**o+(-0.5223182504)*x[2]  
         s[2,1,1]=(-0.853043070027)*x[0]**o+(-0.841177435972)*x[0]+(-0.899106240107)*x[1]**o+(0.605850900198)*x[1]+(0.66690888915)*x[2]**o+(-0.294170728255)*x[2]  
         s[3,0,0]=(0.570005513209)*x[0]**o+(0.823970182367)*x[0]+(-0.097784833249)*x[1]**o+(0.873052382528)*x[1]+(-0.0636165773808)*x[2]**o+(0.282310913291)*x[2]  
         s[3,0,1]=(0.456449154672)*x[0]**o+(0.951161773651)*x[0]+(-0.373225942356)*x[1]**o+(-0.199594431547)*x[1]+(-0.484728313328)*x[2]**o+(-0.931817560358)*x[2]  
         s[3,1,0]=(-0.41042836838)*x[0]**o+(0.771670661129)*x[0]+(-0.0646371268204)*x[1]**o+(0.881286289043)*x[1]+(-0.197285717492)*x[2]**o+(0.857484079398)*x[2]  
         s[3,1,1]=(0.297402801452)*x[0]**o+(-0.147528679657)*x[0]+(0.0071150978913)*x[1]**o+(0.788738967825)*x[1]+(-0.191726852031)*x[2]**o+(-0.481649460835)*x[2]  
         s[4,0,0]=(-0.808360899963)*x[0]**o+(-0.181264991463)*x[0]+(-0.667551398858)*x[1]**o+(0.289372159531)*x[1]+(0.732773385522)*x[2]**o+(-0.123945731785)*x[2]  
         s[4,0,1]=(0.854370035772)*x[0]**o+(0.169945736996)*x[0]+(0.305712234323)*x[1]**o+(-0.60291919973)*x[1]+(0.0403778674069)*x[2]**o+(-0.0309870891437)*x[2]  
         s[4,1,0]=(0.543462693144)*x[0]**o+(0.102574070937)*x[0]+(0.963469439068)*x[1]**o+(-0.985245165577)*x[1]+(-0.74408200708)*x[2]**o+(-0.146993364858)*x[2]  
         s[4,1,1]=(-0.50927952968)*x[0]**o+(0.471050528827)*x[0]+(0.554105772637)*x[1]**o+(0.265977196333)*x[1]+(-0.447676667005)*x[2]**o+(-0.725761367739)*x[2]  
         s[5,0,0]=(0.738549622917)*x[0]**o+(-0.300701131285)*x[0]+(0.770397993383)*x[1]**o+(0.604771638849)*x[1]+(-0.839284085987)*x[2]**o+(-0.636936520767)*x[2]  
         s[5,0,1]=(0.546026750751)*x[0]**o+(-0.413469373764)*x[0]+(-0.246023997114)*x[1]**o+(0.207570581839)*x[1]+(0.447030203856)*x[2]**o+(0.0894542975251)*x[2]  
         s[5,1,0]=(0.262793971997)*x[0]**o+(-0.814182314897)*x[0]+(-0.340418569268)*x[1]**o+(-0.483737889608)*x[1]+(0.287508080597)*x[2]**o+(-0.602853752221)*x[2]  
         s[5,1,1]=(-0.417452810992)*x[0]**o+(-0.906502058242)*x[0]+(0.280357642399)*x[1]**o+(-0.452257960569)*x[1]+(0.239691800726)*x[2]**o+(0.0506798793624)*x[2]  
         ref[0,0,0]=(0.211956744542)/(o+1.)+(-0.392803422032)+(0.712776413788)*0.5**o  
         ref[0,0,1]=(-0.521191848861)/(o+1.)+(-0.31564125904)+(-0.6231391885)*0.5**o  
         ref[0,1,0]=(0.759146574441)/(o+1.)+(0.288256527353)+(0.464396400115)*0.5**o  
         ref[0,1,1]=(-0.626345070435)/(o+1.)+(-0.118389854535)+(-0.901282392808)*0.5**o  
         ref[1,0,0]=(0.543635177691)/(o+1.)+(0.107923442572)+(-0.234152998295)*0.5**o  
         ref[1,0,1]=(0.405273452958)/(o+1.)+(-0.53141106922)+(0.00302398956565)*0.5**o  
         ref[1,1,0]=(-1.55194397829)/(o+1.)+(0.895403044797)+(0.350958444218)*0.5**o  
         ref[1,1,1]=(0.0340939206865)/(o+1.)+(-0.660157203302)+(0.830959844328)*0.5**o  
         ref[2,0,0]=(1.0385623109)/(o+1.)+(-0.529867642167)+(-0.654485309003)*0.5**o  
         ref[2,0,1]=(-0.843699277378)/(o+1.)+(-0.258659940857)+(-0.765669487668)*0.5**o  
         ref[2,1,0]=(0.840791284496)/(o+1.)+(0.186567669076)+(-0.823307360412)*0.5**o  
         ref[2,1,1]=(-0.232197350956)/(o+1.)+(-0.264748632015)+(-0.853043070027)*0.5**o  
         ref[3,0,0]=(-0.16140141063)/(o+1.)+(0.989666739093)+(0.570005513209)*0.5**o  
         ref[3,0,1]=(-0.857954255684)/(o+1.)+(-0.0901251091271)+(0.456449154672)*0.5**o  
         ref[3,1,0]=(-0.261922844312)/(o+1.)+(1.25522051478)+(-0.41042836838)*0.5**o  
         ref[3,1,1]=(-0.18461175414)/(o+1.)+(0.0797804136672)+(0.297402801452)*0.5**o  
         ref[4,0,0]=(0.0652219866638)/(o+1.)+(-0.00791928185857)+(-0.808360899963)*0.5**o  
         ref[4,0,1]=(0.34609010173)/(o+1.)+(-0.231980275939)+(0.854370035772)*0.5**o  
         ref[4,1,0]=(0.219387431988)/(o+1.)+(-0.514832229749)+(0.543462693144)*0.5**o  
         ref[4,1,1]=(0.106429105632)/(o+1.)+(0.00563317871007)+(-0.50927952968)*0.5**o  
         ref[5,0,0]=(-0.0688860926042)/(o+1.)+(-0.166433006601)+(0.738549622917)*0.5**o  
         ref[5,0,1]=(0.201006206742)/(o+1.)+(-0.0582222472)+(0.546026750751)*0.5**o  
         ref[5,1,0]=(-0.0529104886711)/(o+1.)+(-0.950386978363)+(0.262793971997)*0.5**o  
         ref[5,1,1]=(0.520049443126)/(o+1.)+(-0.654040069724)+(-0.417452810992)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(6, 2, 2),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onFunctionOnContactZero_fromSymbol_ContinuousFunction_rank4(self):  
       """  
       tests integral of rank 4 Symbol on the FunctionOnContactZero  
   
       assumptions: ContinuousFunction(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=ContinuousFunction(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(4, 5, 3, 2))  
       s=Data(0,(4, 5, 3, 2),w)  
       ref=numpy.zeros((4, 5, 3, 2),numpy.float_)  
       if dim==2:  
         s[0,0,0,0]=(-0.829288219058)*x[0]**o+(-0.65217791272)*x[0]+(0.698846288116)*x[1]**o+(-0.0392705140136)*x[1]  
         s[0,0,0,1]=(-0.456023711562)*x[0]**o+(0.9183516109)*x[0]+(0.927490172078)*x[1]**o+(-0.394686077168)*x[1]  
         s[0,0,1,0]=(-0.497067376291)*x[0]**o+(0.237428033612)*x[0]+(-0.785186724625)*x[1]**o+(0.471101666176)*x[1]  
         s[0,0,1,1]=(-0.290568226175)*x[0]**o+(0.893982019035)*x[0]+(0.203073455207)*x[1]**o+(0.78973496755)*x[1]  
         s[0,0,2,0]=(0.00829962077999)*x[0]**o+(0.99718958928)*x[0]+(0.330466533936)*x[1]**o+(-0.619185067306)*x[1]  
         s[0,0,2,1]=(-0.806092658508)*x[0]**o+(-0.307457723596)*x[0]+(0.847169623314)*x[1]**o+(-0.832290917062)*x[1]  
         s[0,1,0,0]=(-0.140461069383)*x[0]**o+(0.760902362673)*x[0]+(0.0231278168453)*x[1]**o+(-0.508849645358)*x[1]  
         s[0,1,0,1]=(0.587581627616)*x[0]**o+(-0.229546331489)*x[0]+(-0.659235919696)*x[1]**o+(0.80409204008)*x[1]  
         s[0,1,1,0]=(-0.641654760801)*x[0]**o+(0.122524921907)*x[0]+(0.122921572782)*x[1]**o+(-0.23094495884)*x[1]  
         s[0,1,1,1]=(-0.380132178505)*x[0]**o+(-0.769451293694)*x[0]+(-0.745741833491)*x[1]**o+(0.11284350488)*x[1]  
         s[0,1,2,0]=(0.126835269214)*x[0]**o+(0.918739367312)*x[0]+(0.927407682128)*x[1]**o+(-0.273231826206)*x[1]  
         s[0,1,2,1]=(0.608413549196)*x[0]**o+(-0.591552902664)*x[0]+(0.873696757566)*x[1]**o+(-0.900225496133)*x[1]  
         s[0,2,0,0]=(0.0488258290791)*x[0]**o+(0.211067968473)*x[0]+(0.11529432626)*x[1]**o+(0.497957233179)*x[1]  
         s[0,2,0,1]=(-0.780993161707)*x[0]**o+(0.746546880275)*x[0]+(-0.0997128168301)*x[1]**o+(-0.663371860066)*x[1]  
         s[0,2,1,0]=(0.305794159864)*x[0]**o+(0.493723656879)*x[0]+(0.334264621015)*x[1]**o+(0.0579972251793)*x[1]  
         s[0,2,1,1]=(0.71588138307)*x[0]**o+(-0.0866536386387)*x[0]+(-0.159835910161)*x[1]**o+(0.562258753174)*x[1]  
         s[0,2,2,0]=(0.864605462382)*x[0]**o+(0.818516795215)*x[0]+(-0.0558026806854)*x[1]**o+(-0.225953364341)*x[1]  
         s[0,2,2,1]=(-0.0798994114092)*x[0]**o+(-0.73636091403)*x[0]+(-0.478543932177)*x[1]**o+(0.875789857891)*x[1]  
         s[0,3,0,0]=(0.998019190199)*x[0]**o+(-0.218007434364)*x[0]+(0.181378057097)*x[1]**o+(0.429126350197)*x[1]  
         s[0,3,0,1]=(-0.724306549649)*x[0]**o+(-0.303805025896)*x[0]+(0.58603690984)*x[1]**o+(0.976611908964)*x[1]  
         s[0,3,1,0]=(0.776728843377)*x[0]**o+(-0.874157618694)*x[0]+(-0.590753603973)*x[1]**o+(0.185288488913)*x[1]  
         s[0,3,1,1]=(0.285035031516)*x[0]**o+(-0.0667711315126)*x[0]+(0.220692714675)*x[1]**o+(0.841408314724)*x[1]  
         s[0,3,2,0]=(-0.00286941650137)*x[0]**o+(0.59339349489)*x[0]+(-0.158356936936)*x[1]**o+(-0.451137261062)*x[1]  
         s[0,3,2,1]=(0.37992478387)*x[0]**o+(0.835018328571)*x[0]+(-0.446900268053)*x[1]**o+(-0.700751807162)*x[1]  
         s[0,4,0,0]=(0.714232167791)*x[0]**o+(-0.688473756667)*x[0]+(0.0552121131111)*x[1]**o+(0.632003397091)*x[1]  
         s[0,4,0,1]=(0.49556700372)*x[0]**o+(0.0630560952096)*x[0]+(0.321456277553)*x[1]**o+(0.685060833092)*x[1]  
         s[0,4,1,0]=(0.841677614054)*x[0]**o+(0.886957973836)*x[0]+(0.0202839586672)*x[1]**o+(-0.923265656841)*x[1]  
         s[0,4,1,1]=(-0.504028346474)*x[0]**o+(0.071280762432)*x[0]+(0.629772140166)*x[1]**o+(-0.195290635886)*x[1]  
         s[0,4,2,0]=(0.434265669856)*x[0]**o+(0.376229784992)*x[0]+(0.919945289519)*x[1]**o+(-0.496219699959)*x[1]  
         s[0,4,2,1]=(-0.86013960593)*x[0]**o+(0.140206694208)*x[0]+(-0.834647694686)*x[1]**o+(0.381383127993)*x[1]  
         s[1,0,0,0]=(-0.437686950383)*x[0]**o+(0.385307277242)*x[0]+(-0.430841927673)*x[1]**o+(-0.556445729508)*x[1]  
         s[1,0,0,1]=(0.323843044435)*x[0]**o+(-0.21417604806)*x[0]+(-0.172390658038)*x[1]**o+(-0.847272401994)*x[1]  
         s[1,0,1,0]=(-0.845882465152)*x[0]**o+(-0.598486605858)*x[0]+(0.89008620109)*x[1]**o+(0.874381441062)*x[1]  
         s[1,0,1,1]=(-0.405423425934)*x[0]**o+(-0.404267054882)*x[0]+(-0.63801489002)*x[1]**o+(-0.728771425845)*x[1]  
         s[1,0,2,0]=(-0.216267078676)*x[0]**o+(0.956804195842)*x[0]+(-0.908451202669)*x[1]**o+(-0.322043280117)*x[1]  
         s[1,0,2,1]=(-0.168907777516)*x[0]**o+(0.840516962339)*x[0]+(0.103177353457)*x[1]**o+(0.939190271608)*x[1]  
         s[1,1,0,0]=(-0.884189035361)*x[0]**o+(-0.396863590748)*x[0]+(-0.380355614494)*x[1]**o+(0.913843764972)*x[1]  
         s[1,1,0,1]=(-0.983514772022)*x[0]**o+(0.953676778353)*x[0]+(-0.141666532996)*x[1]**o+(-0.782763806635)*x[1]  
         s[1,1,1,0]=(0.723588279961)*x[0]**o+(0.0698022948292)*x[0]+(-0.202960085361)*x[1]**o+(-0.0971108181392)*x[1]  
         s[1,1,1,1]=(-0.809610385863)*x[0]**o+(0.78262340178)*x[0]+(-0.292492437285)*x[1]**o+(0.909658049109)*x[1]  
         s[1,1,2,0]=(0.831333270285)*x[0]**o+(0.532412110902)*x[0]+(0.852180039142)*x[1]**o+(-0.126550447094)*x[1]  
         s[1,1,2,1]=(0.889635940128)*x[0]**o+(-0.0146231223219)*x[0]+(-0.505300606168)*x[1]**o+(0.286596962758)*x[1]  
         s[1,2,0,0]=(-0.479209867816)*x[0]**o+(-0.707176716613)*x[0]+(0.385223744345)*x[1]**o+(0.679335984842)*x[1]  
         s[1,2,0,1]=(-0.690494514078)*x[0]**o+(-0.591659781424)*x[0]+(-0.111527008468)*x[1]**o+(0.73261078188)*x[1]  
         s[1,2,1,0]=(-0.65110579618)*x[0]**o+(-0.861397125883)*x[0]+(-0.264211841662)*x[1]**o+(0.750122373459)*x[1]  
         s[1,2,1,1]=(-0.495114108462)*x[0]**o+(-0.555683103062)*x[0]+(-0.0384737773817)*x[1]**o+(0.422372598888)*x[1]  
         s[1,2,2,0]=(-0.846365789548)*x[0]**o+(0.247402342046)*x[0]+(-0.998046573914)*x[1]**o+(0.264003327979)*x[1]  
         s[1,2,2,1]=(0.4479853512)*x[0]**o+(-0.502771753169)*x[0]+(-0.366626482676)*x[1]**o+(0.506404378836)*x[1]  
         s[1,3,0,0]=(-0.677771809341)*x[0]**o+(-0.105232399291)*x[0]+(0.10440523429)*x[1]**o+(-0.780931426435)*x[1]  
         s[1,3,0,1]=(0.549864901432)*x[0]**o+(0.79598502718)*x[0]+(-0.424985507693)*x[1]**o+(-0.649629583228)*x[1]  
         s[1,3,1,0]=(0.795465752618)*x[0]**o+(-0.0630573960436)*x[0]+(-0.158966662533)*x[1]**o+(0.888189443186)*x[1]  
         s[1,3,1,1]=(-0.395120222846)*x[0]**o+(-0.529551413114)*x[0]+(-0.351127736099)*x[1]**o+(-0.960771541871)*x[1]  
         s[1,3,2,0]=(-0.244306249618)*x[0]**o+(0.925164172251)*x[0]+(-0.988402656417)*x[1]**o+(-0.0797097670335)*x[1]  
         s[1,3,2,1]=(0.905866127894)*x[0]**o+(0.135673487702)*x[0]+(-0.873223112612)*x[1]**o+(0.598121374326)*x[1]  
         s[1,4,0,0]=(0.171338765926)*x[0]**o+(-0.31796084081)*x[0]+(-0.914462477805)*x[1]**o+(0.923691484317)*x[1]  
         s[1,4,0,1]=(-0.188491880655)*x[0]**o+(-0.67119846649)*x[0]+(0.488643815471)*x[1]**o+(-0.912992530018)*x[1]  
         s[1,4,1,0]=(0.252606322081)*x[0]**o+(0.509944026633)*x[0]+(0.539656085813)*x[1]**o+(0.0286599718948)*x[1]  
         s[1,4,1,1]=(0.148934160341)*x[0]**o+(0.50451378885)*x[0]+(0.878910174211)*x[1]**o+(-0.617480145541)*x[1]  
         s[1,4,2,0]=(-0.235447116973)*x[0]**o+(0.825149714177)*x[0]+(0.300052096347)*x[1]**o+(-0.360690924033)*x[1]  
         s[1,4,2,1]=(0.944445188093)*x[0]**o+(-0.170511625527)*x[0]+(-0.333492913384)*x[1]**o+(0.907577674324)*x[1]  
         s[2,0,0,0]=(-0.942092595372)*x[0]**o+(-0.254482071505)*x[0]+(-0.0151488336686)*x[1]**o+(-0.0287652780384)*x[1]  
         s[2,0,0,1]=(0.0655506752825)*x[0]**o+(0.898719259761)*x[0]+(0.383024592178)*x[1]**o+(0.0989444595983)*x[1]  
         s[2,0,1,0]=(0.291304803618)*x[0]**o+(-0.720915295421)*x[0]+(0.138378684)*x[1]**o+(0.876226100573)*x[1]  
         s[2,0,1,1]=(0.0625773477714)*x[0]**o+(-0.0294480886227)*x[0]+(0.736449427619)*x[1]**o+(0.371697786988)*x[1]  
         s[2,0,2,0]=(-0.931044858876)*x[0]**o+(0.911308988417)*x[0]+(0.689775520125)*x[1]**o+(0.415135153045)*x[1]  
         s[2,0,2,1]=(-0.732200781532)*x[0]**o+(0.395135482591)*x[0]+(-0.619692129874)*x[1]**o+(-0.912759567625)*x[1]  
         s[2,1,0,0]=(-0.261557477097)*x[0]**o+(-0.933044351058)*x[0]+(0.0156599006787)*x[1]**o+(-0.082399909281)*x[1]  
         s[2,1,0,1]=(0.723444855088)*x[0]**o+(-0.216911506016)*x[0]+(0.604446335087)*x[1]**o+(0.947367685426)*x[1]  
         s[2,1,1,0]=(-0.606511927315)*x[0]**o+(0.825992890197)*x[0]+(0.757190663205)*x[1]**o+(-0.0991622858024)*x[1]  
         s[2,1,1,1]=(0.45110092033)*x[0]**o+(0.0571087683245)*x[0]+(-0.825169962155)*x[1]**o+(0.557059283915)*x[1]  
         s[2,1,2,0]=(-0.612806058565)*x[0]**o+(0.928772523716)*x[0]+(-0.288177463065)*x[1]**o+(0.341361092846)*x[1]  
         s[2,1,2,1]=(-0.746890321439)*x[0]**o+(0.893018453839)*x[0]+(0.0308905730956)*x[1]**o+(0.291585488925)*x[1]  
         s[2,2,0,0]=(-0.665223434533)*x[0]**o+(-0.997256499342)*x[0]+(-0.134118374176)*x[1]**o+(-0.930692055226)*x[1]  
         s[2,2,0,1]=(-0.478607794082)*x[0]**o+(0.0372165046416)*x[0]+(-0.149775511078)*x[1]**o+(-0.412243756318)*x[1]  
         s[2,2,1,0]=(-0.782692588953)*x[0]**o+(0.896152570987)*x[0]+(-0.265361365664)*x[1]**o+(0.0859566508122)*x[1]  
         s[2,2,1,1]=(0.141591460973)*x[0]**o+(0.399004634853)*x[0]+(0.351166595901)*x[1]**o+(-0.230314460514)*x[1]  
         s[2,2,2,0]=(-0.282452862833)*x[0]**o+(0.652348758087)*x[0]+(-0.006664462988)*x[1]**o+(0.115435922234)*x[1]  
         s[2,2,2,1]=(-0.108570066423)*x[0]**o+(0.536881567792)*x[0]+(-0.967086006781)*x[1]**o+(0.964315151846)*x[1]  
         s[2,3,0,0]=(-0.872481061987)*x[0]**o+(-0.152036048838)*x[0]+(0.714460711637)*x[1]**o+(-0.641192704763)*x[1]  
         s[2,3,0,1]=(-0.314322497313)*x[0]**o+(0.766601974446)*x[0]+(-0.304360730035)*x[1]**o+(-0.445351381604)*x[1]  
         s[2,3,1,0]=(0.364419198839)*x[0]**o+(-0.615166967343)*x[0]+(0.797973787987)*x[1]**o+(0.312408283718)*x[1]  
         s[2,3,1,1]=(-0.781147212189)*x[0]**o+(-0.549359753018)*x[0]+(0.235681715573)*x[1]**o+(-0.231862286881)*x[1]  
         s[2,3,2,0]=(-0.958493367772)*x[0]**o+(-0.775968770096)*x[0]+(-0.917090286139)*x[1]**o+(0.656115811881)*x[1]  
         s[2,3,2,1]=(0.572779229598)*x[0]**o+(-0.875089280859)*x[0]+(0.575188283953)*x[1]**o+(-0.617895968371)*x[1]  
         s[2,4,0,0]=(-0.178437300104)*x[0]**o+(-0.305311887897)*x[0]+(-0.362423234235)*x[1]**o+(-0.993155475703)*x[1]  
         s[2,4,0,1]=(-0.842863324823)*x[0]**o+(-0.334505517678)*x[0]+(-0.233874335956)*x[1]**o+(-0.280499554274)*x[1]  
         s[2,4,1,0]=(-0.396341438458)*x[0]**o+(0.605087475544)*x[0]+(-0.648099915852)*x[1]**o+(-0.338407917903)*x[1]  
         s[2,4,1,1]=(-0.359913098139)*x[0]**o+(0.80935120431)*x[0]+(-0.969248694111)*x[1]**o+(0.884624495846)*x[1]  
         s[2,4,2,0]=(0.965251612654)*x[0]**o+(-0.811340257859)*x[0]+(0.960012562229)*x[1]**o+(-0.825791870471)*x[1]  
         s[2,4,2,1]=(0.43888464177)*x[0]**o+(0.126116195477)*x[0]+(0.0455614359233)*x[1]**o+(0.387001710336)*x[1]  
         s[3,0,0,0]=(0.961744925179)*x[0]**o+(0.590267645729)*x[0]+(-0.657096083564)*x[1]**o+(-0.336931534761)*x[1]  
         s[3,0,0,1]=(0.0372329050631)*x[0]**o+(0.82966683846)*x[0]+(-0.537423647089)*x[1]**o+(0.13780696077)*x[1]  
         s[3,0,1,0]=(-0.762516609688)*x[0]**o+(-0.619904320036)*x[0]+(0.653234747183)*x[1]**o+(0.3188610791)*x[1]  
         s[3,0,1,1]=(-0.749684385643)*x[0]**o+(-0.30857008835)*x[0]+(0.066895978166)*x[1]**o+(-0.603289571527)*x[1]  
         s[3,0,2,0]=(-0.621186971872)*x[0]**o+(0.109237849031)*x[0]+(0.312234719711)*x[1]**o+(0.214139545654)*x[1]  
         s[3,0,2,1]=(-0.479630544493)*x[0]**o+(0.936515248516)*x[0]+(0.135913071464)*x[1]**o+(0.536193827105)*x[1]  
         s[3,1,0,0]=(-0.419606668612)*x[0]**o+(-0.825159184029)*x[0]+(-0.862279634673)*x[1]**o+(0.0205463968802)*x[1]  
         s[3,1,0,1]=(0.35798046036)*x[0]**o+(-0.599162907156)*x[0]+(0.174478509759)*x[1]**o+(-0.779627181611)*x[1]  
         s[3,1,1,0]=(-0.175201495388)*x[0]**o+(0.754090549688)*x[0]+(-0.131095703521)*x[1]**o+(-0.149892880631)*x[1]  
         s[3,1,1,1]=(-0.718173244947)*x[0]**o+(0.387119862798)*x[0]+(-0.190359128182)*x[1]**o+(0.71904977881)*x[1]  
         s[3,1,2,0]=(0.542104637274)*x[0]**o+(0.85151096271)*x[0]+(0.0402471065929)*x[1]**o+(-0.276985707209)*x[1]  
         s[3,1,2,1]=(-0.612520892999)*x[0]**o+(0.475838856018)*x[0]+(-0.524069927205)*x[1]**o+(-0.314728620326)*x[1]  
         s[3,2,0,0]=(0.853018031276)*x[0]**o+(0.783150840935)*x[0]+(-0.168512012086)*x[1]**o+(0.713965998504)*x[1]  
         s[3,2,0,1]=(0.253413905488)*x[0]**o+(-0.433043547194)*x[0]+(-0.775710938403)*x[1]**o+(-0.906939451854)*x[1]  
         s[3,2,1,0]=(0.6612655067)*x[0]**o+(0.959161354342)*x[0]+(-0.351925885901)*x[1]**o+(-0.542741000383)*x[1]  
         s[3,2,1,1]=(-0.651886826012)*x[0]**o+(0.799653456288)*x[0]+(0.482387863091)*x[1]**o+(-0.628626395493)*x[1]  
         s[3,2,2,0]=(-0.314962063276)*x[0]**o+(-0.237445058522)*x[0]+(0.983233001597)*x[1]**o+(0.105803386746)*x[1]  
         s[3,2,2,1]=(0.786422364797)*x[0]**o+(0.437192400732)*x[0]+(-0.238461142143)*x[1]**o+(0.696286963331)*x[1]  
         s[3,3,0,0]=(0.483733340742)*x[0]**o+(0.749644548963)*x[0]+(0.765700270847)*x[1]**o+(-0.470185526075)*x[1]  
         s[3,3,0,1]=(0.680316641067)*x[0]**o+(0.952443208592)*x[0]+(-0.0164617510632)*x[1]**o+(-0.234575904406)*x[1]  
         s[3,3,1,0]=(-0.993408262104)*x[0]**o+(-0.229008195245)*x[0]+(0.523753196917)*x[1]**o+(-0.318485891049)*x[1]  
         s[3,3,1,1]=(-0.748894192494)*x[0]**o+(-0.879841134058)*x[0]+(-0.650074035674)*x[1]**o+(0.07564873608)*x[1]  
         s[3,3,2,0]=(-0.0390185724072)*x[0]**o+(0.754358690288)*x[0]+(-0.961050878591)*x[1]**o+(-0.849404044511)*x[1]  
         s[3,3,2,1]=(0.483849885635)*x[0]**o+(0.168666402938)*x[0]+(-0.948399681695)*x[1]**o+(-0.923760856309)*x[1]  
         s[3,4,0,0]=(0.0487172550208)*x[0]**o+(-0.627393318222)*x[0]+(0.328198988132)*x[1]**o+(0.615434829581)*x[1]  
         s[3,4,0,1]=(0.294964552743)*x[0]**o+(0.593632204587)*x[0]+(-0.922244339835)*x[1]**o+(0.712032424818)*x[1]  
         s[3,4,1,0]=(-0.774393234162)*x[0]**o+(0.122655955494)*x[0]+(-0.993126331736)*x[1]**o+(0.553836798684)*x[1]  
         s[3,4,1,1]=(-0.46041945879)*x[0]**o+(-0.676034356031)*x[0]+(0.273980415493)*x[1]**o+(-0.190839002618)*x[1]  
         s[3,4,2,0]=(0.0439333449053)*x[0]**o+(-0.0796104621766)*x[0]+(0.479839558444)*x[1]**o+(-0.0221747154)*x[1]  
         s[3,4,2,1]=(-0.2108539974)*x[0]**o+(-0.743095604828)*x[0]+(-0.531276902705)*x[1]**o+(0.286137673119)*x[1]  
         ref[0,0,0,0]=(0.698846288116)/(o+1.)+(-0.345724213367)+(-0.829288219058)*0.5**o  
         ref[0,0,0,1]=(0.927490172078)/(o+1.)+(0.261832766866)+(-0.456023711562)*0.5**o  
         ref[0,0,1,0]=(-0.785186724625)/(o+1.)+(0.354264849894)+(-0.497067376291)*0.5**o  
         ref[0,0,1,1]=(0.203073455207)/(o+1.)+(0.841858493293)+(-0.290568226175)*0.5**o  
         ref[0,0,2,0]=(0.330466533936)/(o+1.)+(0.189002260987)+(0.00829962077999)*0.5**o  
         ref[0,0,2,1]=(0.847169623314)/(o+1.)+(-0.569874320329)+(-0.806092658508)*0.5**o  
         ref[0,1,0,0]=(0.0231278168453)/(o+1.)+(0.126026358657)+(-0.140461069383)*0.5**o  
         ref[0,1,0,1]=(-0.659235919696)/(o+1.)+(0.287272854295)+(0.587581627616)*0.5**o  
         ref[0,1,1,0]=(0.122921572782)/(o+1.)+(-0.0542100184667)+(-0.641654760801)*0.5**o  
         ref[0,1,1,1]=(-0.745741833491)/(o+1.)+(-0.328303894407)+(-0.380132178505)*0.5**o  
         ref[0,1,2,0]=(0.927407682128)/(o+1.)+(0.322753770553)+(0.126835269214)*0.5**o  
         ref[0,1,2,1]=(0.873696757566)/(o+1.)+(-0.745889199398)+(0.608413549196)*0.5**o  
         ref[0,2,0,0]=(0.11529432626)/(o+1.)+(0.354512600826)+(0.0488258290791)*0.5**o  
         ref[0,2,0,1]=(-0.0997128168301)/(o+1.)+(0.0415875101043)+(-0.780993161707)*0.5**o  
         ref[0,2,1,0]=(0.334264621015)/(o+1.)+(0.275860441029)+(0.305794159864)*0.5**o  
         ref[0,2,1,1]=(-0.159835910161)/(o+1.)+(0.237802557268)+(0.71588138307)*0.5**o  
         ref[0,2,2,0]=(-0.0558026806854)/(o+1.)+(0.296281715437)+(0.864605462382)*0.5**o  
         ref[0,2,2,1]=(-0.478543932177)/(o+1.)+(0.0697144719306)+(-0.0798994114092)*0.5**o  
         ref[0,3,0,0]=(0.181378057097)/(o+1.)+(0.105559457917)+(0.998019190199)*0.5**o  
         ref[0,3,0,1]=(0.58603690984)/(o+1.)+(0.336403441534)+(-0.724306549649)*0.5**o  
         ref[0,3,1,0]=(-0.590753603973)/(o+1.)+(-0.34443456489)+(0.776728843377)*0.5**o  
         ref[0,3,1,1]=(0.220692714675)/(o+1.)+(0.387318591606)+(0.285035031516)*0.5**o  
         ref[0,3,2,0]=(-0.158356936936)/(o+1.)+(0.0711281169143)+(-0.00286941650137)*0.5**o  
         ref[0,3,2,1]=(-0.446900268053)/(o+1.)+(0.0671332607043)+(0.37992478387)*0.5**o  
         ref[0,4,0,0]=(0.0552121131111)/(o+1.)+(-0.0282351797878)+(0.714232167791)*0.5**o  
         ref[0,4,0,1]=(0.321456277553)/(o+1.)+(0.374058464151)+(0.49556700372)*0.5**o  
         ref[0,4,1,0]=(0.0202839586672)/(o+1.)+(-0.0181538415026)+(0.841677614054)*0.5**o  
         ref[0,4,1,1]=(0.629772140166)/(o+1.)+(-0.062004936727)+(-0.504028346474)*0.5**o  
         ref[0,4,2,0]=(0.919945289519)/(o+1.)+(-0.0599949574834)+(0.434265669856)*0.5**o  
         ref[0,4,2,1]=(-0.834647694686)/(o+1.)+(0.2607949111)+(-0.86013960593)*0.5**o  
         ref[1,0,0,0]=(-0.430841927673)/(o+1.)+(-0.0855692261333)+(-0.437686950383)*0.5**o  
         ref[1,0,0,1]=(-0.172390658038)/(o+1.)+(-0.530724225027)+(0.323843044435)*0.5**o  
         ref[1,0,1,0]=(0.89008620109)/(o+1.)+(0.137947417602)+(-0.845882465152)*0.5**o  
         ref[1,0,1,1]=(-0.63801489002)/(o+1.)+(-0.566519240363)+(-0.405423425934)*0.5**o  
         ref[1,0,2,0]=(-0.908451202669)/(o+1.)+(0.317380457863)+(-0.216267078676)*0.5**o  
         ref[1,0,2,1]=(0.103177353457)/(o+1.)+(0.889853616974)+(-0.168907777516)*0.5**o  
         ref[1,1,0,0]=(-0.380355614494)/(o+1.)+(0.258490087112)+(-0.884189035361)*0.5**o  
         ref[1,1,0,1]=(-0.141666532996)/(o+1.)+(0.0854564858592)+(-0.983514772022)*0.5**o  
         ref[1,1,1,0]=(-0.202960085361)/(o+1.)+(-0.013654261655)+(0.723588279961)*0.5**o  
         ref[1,1,1,1]=(-0.292492437285)/(o+1.)+(0.846140725444)+(-0.809610385863)*0.5**o  
         ref[1,1,2,0]=(0.852180039142)/(o+1.)+(0.202930831904)+(0.831333270285)*0.5**o  
         ref[1,1,2,1]=(-0.505300606168)/(o+1.)+(0.135986920218)+(0.889635940128)*0.5**o  
         ref[1,2,0,0]=(0.385223744345)/(o+1.)+(-0.0139203658855)+(-0.479209867816)*0.5**o  
         ref[1,2,0,1]=(-0.111527008468)/(o+1.)+(0.0704755002279)+(-0.690494514078)*0.5**o  
         ref[1,2,1,0]=(-0.264211841662)/(o+1.)+(-0.055637376212)+(-0.65110579618)*0.5**o  
         ref[1,2,1,1]=(-0.0384737773817)/(o+1.)+(-0.066655252087)+(-0.495114108462)*0.5**o  
         ref[1,2,2,0]=(-0.998046573914)/(o+1.)+(0.255702835012)+(-0.846365789548)*0.5**o  
         ref[1,2,2,1]=(-0.366626482676)/(o+1.)+(0.00181631283349)+(0.4479853512)*0.5**o  
         ref[1,3,0,0]=(0.10440523429)/(o+1.)+(-0.443081912863)+(-0.677771809341)*0.5**o  
         ref[1,3,0,1]=(-0.424985507693)/(o+1.)+(0.0731777219764)+(0.549864901432)*0.5**o  
         ref[1,3,1,0]=(-0.158966662533)/(o+1.)+(0.412566023571)+(0.795465752618)*0.5**o  
         ref[1,3,1,1]=(-0.351127736099)/(o+1.)+(-0.745161477493)+(-0.395120222846)*0.5**o  
         ref[1,3,2,0]=(-0.988402656417)/(o+1.)+(0.422727202609)+(-0.244306249618)*0.5**o  
         ref[1,3,2,1]=(-0.873223112612)/(o+1.)+(0.366897431014)+(0.905866127894)*0.5**o  
         ref[1,4,0,0]=(-0.914462477805)/(o+1.)+(0.302865321753)+(0.171338765926)*0.5**o  
         ref[1,4,0,1]=(0.488643815471)/(o+1.)+(-0.792095498254)+(-0.188491880655)*0.5**o  
         ref[1,4,1,0]=(0.539656085813)/(o+1.)+(0.269301999264)+(0.252606322081)*0.5**o  
         ref[1,4,1,1]=(0.878910174211)/(o+1.)+(-0.0564831783457)+(0.148934160341)*0.5**o  
         ref[1,4,2,0]=(0.300052096347)/(o+1.)+(0.232229395072)+(-0.235447116973)*0.5**o  
         ref[1,4,2,1]=(-0.333492913384)/(o+1.)+(0.368533024398)+(0.944445188093)*0.5**o  
         ref[2,0,0,0]=(-0.0151488336686)/(o+1.)+(-0.141623674772)+(-0.942092595372)*0.5**o  
         ref[2,0,0,1]=(0.383024592178)/(o+1.)+(0.498831859679)+(0.0655506752825)*0.5**o  
         ref[2,0,1,0]=(0.138378684)/(o+1.)+(0.0776554025757)+(0.291304803618)*0.5**o  
         ref[2,0,1,1]=(0.736449427619)/(o+1.)+(0.171124849182)+(0.0625773477714)*0.5**o  
         ref[2,0,2,0]=(0.689775520125)/(o+1.)+(0.663222070731)+(-0.931044858876)*0.5**o  
         ref[2,0,2,1]=(-0.619692129874)/(o+1.)+(-0.258812042517)+(-0.732200781532)*0.5**o  
         ref[2,1,0,0]=(0.0156599006787)/(o+1.)+(-0.507722130169)+(-0.261557477097)*0.5**o  
         ref[2,1,0,1]=(0.604446335087)/(o+1.)+(0.365228089705)+(0.723444855088)*0.5**o  
         ref[2,1,1,0]=(0.757190663205)/(o+1.)+(0.363415302197)+(-0.606511927315)*0.5**o  
         ref[2,1,1,1]=(-0.825169962155)/(o+1.)+(0.30708402612)+(0.45110092033)*0.5**o  
         ref[2,1,2,0]=(-0.288177463065)/(o+1.)+(0.635066808281)+(-0.612806058565)*0.5**o  
         ref[2,1,2,1]=(0.0308905730956)/(o+1.)+(0.592301971382)+(-0.746890321439)*0.5**o  
         ref[2,2,0,0]=(-0.134118374176)/(o+1.)+(-0.963974277284)+(-0.665223434533)*0.5**o  
         ref[2,2,0,1]=(-0.149775511078)/(o+1.)+(-0.187513625838)+(-0.478607794082)*0.5**o  
         ref[2,2,1,0]=(-0.265361365664)/(o+1.)+(0.4910546109)+(-0.782692588953)*0.5**o  
         ref[2,2,1,1]=(0.351166595901)/(o+1.)+(0.0843450871693)+(0.141591460973)*0.5**o  
         ref[2,2,2,0]=(-0.006664462988)/(o+1.)+(0.383892340161)+(-0.282452862833)*0.5**o  
         ref[2,2,2,1]=(-0.967086006781)/(o+1.)+(0.750598359819)+(-0.108570066423)*0.5**o  
         ref[2,3,0,0]=(0.714460711637)/(o+1.)+(-0.3966143768)+(-0.872481061987)*0.5**o  
         ref[2,3,0,1]=(-0.304360730035)/(o+1.)+(0.160625296421)+(-0.314322497313)*0.5**o  
         ref[2,3,1,0]=(0.797973787987)/(o+1.)+(-0.151379341813)+(0.364419198839)*0.5**o  
         ref[2,3,1,1]=(0.235681715573)/(o+1.)+(-0.390611019949)+(-0.781147212189)*0.5**o  
         ref[2,3,2,0]=(-0.917090286139)/(o+1.)+(-0.0599264791076)+(-0.958493367772)*0.5**o  
         ref[2,3,2,1]=(0.575188283953)/(o+1.)+(-0.746492624615)+(0.572779229598)*0.5**o  
         ref[2,4,0,0]=(-0.362423234235)/(o+1.)+(-0.6492336818)+(-0.178437300104)*0.5**o  
         ref[2,4,0,1]=(-0.233874335956)/(o+1.)+(-0.307502535976)+(-0.842863324823)*0.5**o  
         ref[2,4,1,0]=(-0.648099915852)/(o+1.)+(0.133339778821)+(-0.396341438458)*0.5**o  
         ref[2,4,1,1]=(-0.969248694111)/(o+1.)+(0.846987850078)+(-0.359913098139)*0.5**o  
         ref[2,4,2,0]=(0.960012562229)/(o+1.)+(-0.818566064165)+(0.965251612654)*0.5**o  
         ref[2,4,2,1]=(0.0455614359233)/(o+1.)+(0.256558952907)+(0.43888464177)*0.5**o  
         ref[3,0,0,0]=(-0.657096083564)/(o+1.)+(0.126668055484)+(0.961744925179)*0.5**o  
         ref[3,0,0,1]=(-0.537423647089)/(o+1.)+(0.483736899615)+(0.0372329050631)*0.5**o  
         ref[3,0,1,0]=(0.653234747183)/(o+1.)+(-0.150521620468)+(-0.762516609688)*0.5**o  
         ref[3,0,1,1]=(0.066895978166)/(o+1.)+(-0.455929829939)+(-0.749684385643)*0.5**o  
         ref[3,0,2,0]=(0.312234719711)/(o+1.)+(0.161688697343)+(-0.621186971872)*0.5**o  
         ref[3,0,2,1]=(0.135913071464)/(o+1.)+(0.73635453781)+(-0.479630544493)*0.5**o  
         ref[3,1,0,0]=(-0.862279634673)/(o+1.)+(-0.402306393574)+(-0.419606668612)*0.5**o  
         ref[3,1,0,1]=(0.174478509759)/(o+1.)+(-0.689395044384)+(0.35798046036)*0.5**o  
         ref[3,1,1,0]=(-0.131095703521)/(o+1.)+(0.302098834529)+(-0.175201495388)*0.5**o  
         ref[3,1,1,1]=(-0.190359128182)/(o+1.)+(0.553084820804)+(-0.718173244947)*0.5**o  
         ref[3,1,2,0]=(0.0402471065929)/(o+1.)+(0.28726262775)+(0.542104637274)*0.5**o  
         ref[3,1,2,1]=(-0.524069927205)/(o+1.)+(0.0805551178455)+(-0.612520892999)*0.5**o  
         ref[3,2,0,0]=(-0.168512012086)/(o+1.)+(0.748558419719)+(0.853018031276)*0.5**o  
         ref[3,2,0,1]=(-0.775710938403)/(o+1.)+(-0.669991499524)+(0.253413905488)*0.5**o  
         ref[3,2,1,0]=(-0.351925885901)/(o+1.)+(0.20821017698)+(0.6612655067)*0.5**o  
         ref[3,2,1,1]=(0.482387863091)/(o+1.)+(0.0855135303978)+(-0.651886826012)*0.5**o  
         ref[3,2,2,0]=(0.983233001597)/(o+1.)+(-0.0658208358883)+(-0.314962063276)*0.5**o  
         ref[3,2,2,1]=(-0.238461142143)/(o+1.)+(0.566739682031)+(0.786422364797)*0.5**o  
         ref[3,3,0,0]=(0.765700270847)/(o+1.)+(0.139729511444)+(0.483733340742)*0.5**o  
         ref[3,3,0,1]=(-0.0164617510632)/(o+1.)+(0.358933652093)+(0.680316641067)*0.5**o  
         ref[3,3,1,0]=(0.523753196917)/(o+1.)+(-0.273747043147)+(-0.993408262104)*0.5**o  
         ref[3,3,1,1]=(-0.650074035674)/(o+1.)+(-0.402096198989)+(-0.748894192494)*0.5**o  
         ref[3,3,2,0]=(-0.961050878591)/(o+1.)+(-0.0475226771118)+(-0.0390185724072)*0.5**o  
         ref[3,3,2,1]=(-0.948399681695)/(o+1.)+(-0.377547226685)+(0.483849885635)*0.5**o  
         ref[3,4,0,0]=(0.328198988132)/(o+1.)+(-0.00597924432023)+(0.0487172550208)*0.5**o  
         ref[3,4,0,1]=(-0.922244339835)/(o+1.)+(0.652832314702)+(0.294964552743)*0.5**o  
         ref[3,4,1,0]=(-0.993126331736)/(o+1.)+(0.338246377089)+(-0.774393234162)*0.5**o  
         ref[3,4,1,1]=(0.273980415493)/(o+1.)+(-0.433436679324)+(-0.46041945879)*0.5**o  
         ref[3,4,2,0]=(0.479839558444)/(o+1.)+(-0.0508925887883)+(0.0439333449053)*0.5**o  
         ref[3,4,2,1]=(-0.531276902705)/(o+1.)+(-0.228478965855)+(-0.2108539974)*0.5**o  
       else:  
         s[0,0,0,0]=(-0.48893267678)*x[0]**o+(-0.276480532077)*x[0]+(0.774386441775)*x[1]**o+(-0.649500271111)*x[1]+(-0.0349902316269)*x[2]**o+(0.170017460369)*x[2]  
         s[0,0,0,1]=(0.271529548298)*x[0]**o+(-0.318825369645)*x[0]+(0.304421796509)*x[1]**o+(0.445685002224)*x[1]+(0.0335660627736)*x[2]**o+(-0.498125294129)*x[2]  
         s[0,0,1,0]=(0.217379546035)*x[0]**o+(0.0217166724721)*x[0]+(0.845692481133)*x[1]**o+(0.991062940209)*x[1]+(-0.504574922644)*x[2]**o+(-0.442660078459)*x[2]  
         s[0,0,1,1]=(0.042921886647)*x[0]**o+(0.223486944232)*x[0]+(0.0494176704553)*x[1]**o+(0.96519307605)*x[1]+(-0.138757753118)*x[2]**o+(0.0467978128441)*x[2]  
         s[0,0,2,0]=(-0.386813522991)*x[0]**o+(-0.460337705352)*x[0]+(0.868148506432)*x[1]**o+(-0.639578197438)*x[1]+(0.344241610414)*x[2]**o+(-0.340649859294)*x[2]  
         s[0,0,2,1]=(0.270966465259)*x[0]**o+(-0.921862313681)*x[0]+(0.419658509548)*x[1]**o+(0.382347312575)*x[1]+(-0.458089861176)*x[2]**o+(-0.680587978014)*x[2]  
         s[0,1,0,0]=(0.341922361346)*x[0]**o+(0.992862705739)*x[0]+(0.664064252002)*x[1]**o+(-0.976539711563)*x[1]+(-0.336860627327)*x[2]**o+(0.0351493378936)*x[2]  
         s[0,1,0,1]=(0.232432790902)*x[0]**o+(0.661576839972)*x[0]+(-0.0847723144646)*x[1]**o+(0.676452509633)*x[1]+(-0.523713339087)*x[2]**o+(-0.944537647834)*x[2]  
         s[0,1,1,0]=(-0.0195600321657)*x[0]**o+(0.548788073658)*x[0]+(0.732671243649)*x[1]**o+(-0.559596045627)*x[1]+(-0.821347880719)*x[2]**o+(0.523044807739)*x[2]  
         s[0,1,1,1]=(0.440682443808)*x[0]**o+(0.489252739473)*x[0]+(-0.0286407968844)*x[1]**o+(0.389892189545)*x[1]+(0.802377372742)*x[2]**o+(-0.848679176767)*x[2]  
         s[0,1,2,0]=(0.0308644963019)*x[0]**o+(-0.838818939488)*x[0]+(-0.923147289871)*x[1]**o+(-0.898497578423)*x[1]+(0.352358085546)*x[2]**o+(-0.0551880704817)*x[2]  
         s[0,1,2,1]=(0.964064258383)*x[0]**o+(0.889207476385)*x[0]+(-0.446058209666)*x[1]**o+(-0.410646592871)*x[1]+(-0.143876047927)*x[2]**o+(-0.231175626697)*x[2]  
         s[0,2,0,0]=(-0.378594793341)*x[0]**o+(0.45713093072)*x[0]+(-0.0164617155479)*x[1]**o+(-0.852502076132)*x[1]+(-0.445860749107)*x[2]**o+(0.718303558387)*x[2]  
         s[0,2,0,1]=(-0.24119818585)*x[0]**o+(-0.480829504364)*x[0]+(0.0483190702959)*x[1]**o+(-0.943891784533)*x[1]+(0.822005676991)*x[2]**o+(0.462965609893)*x[2]  
         s[0,2,1,0]=(0.260426222503)*x[0]**o+(0.801642256974)*x[0]+(-0.344027586708)*x[1]**o+(0.609754775626)*x[1]+(-0.614003273478)*x[2]**o+(0.254286708707)*x[2]  
         s[0,2,1,1]=(-0.585208459519)*x[0]**o+(0.409783580697)*x[0]+(0.675131095845)*x[1]**o+(0.962899493666)*x[1]+(-0.555202089686)*x[2]**o+(0.55800653582)*x[2]  
         s[0,2,2,0]=(0.926784535292)*x[0]**o+(0.366810833854)*x[0]+(0.280209292502)*x[1]**o+(0.455075782363)*x[1]+(0.315470862333)*x[2]**o+(0.804139765801)*x[2]  
         s[0,2,2,1]=(-0.182330163829)*x[0]**o+(0.137160802887)*x[0]+(0.50089868344)*x[1]**o+(0.457091587964)*x[1]+(0.661074305613)*x[2]**o+(-0.774463051929)*x[2]  
         s[0,3,0,0]=(0.251053015385)*x[0]**o+(-0.00252354996738)*x[0]+(0.219814741857)*x[1]**o+(-0.788960481779)*x[1]+(-0.628563574142)*x[2]**o+(0.238508420102)*x[2]  
         s[0,3,0,1]=(-0.885181589797)*x[0]**o+(0.524674512592)*x[0]+(-0.137981402257)*x[1]**o+(-0.57775224131)*x[1]+(-0.151536711237)*x[2]**o+(0.147483336195)*x[2]  
         s[0,3,1,0]=(0.464501690982)*x[0]**o+(0.477393661278)*x[0]+(-0.913546513036)*x[1]**o+(0.209928665471)*x[1]+(0.552522027491)*x[2]**o+(-0.200580731655)*x[2]  
         s[0,3,1,1]=(0.117929836206)*x[0]**o+(-0.973701486459)*x[0]+(-0.876411386461)*x[1]**o+(-0.511161888778)*x[1]+(0.213923028781)*x[2]**o+(0.620921035428)*x[2]  
         s[0,3,2,0]=(0.228255426058)*x[0]**o+(-0.135554118227)*x[0]+(0.607714808043)*x[1]**o+(0.522943351003)*x[1]+(-0.686514740068)*x[2]**o+(-0.238689322489)*x[2]  
         s[0,3,2,1]=(-0.155365105782)*x[0]**o+(0.28572413448)*x[0]+(-0.452657577548)*x[1]**o+(-0.884598572632)*x[1]+(0.279309317605)*x[2]**o+(-0.523804815006)*x[2]  
         s[0,4,0,0]=(-0.913401118579)*x[0]**o+(0.141999285441)*x[0]+(-0.0373272930617)*x[1]**o+(-0.907472677652)*x[1]+(0.648778084537)*x[2]**o+(0.905348717002)*x[2]  
         s[0,4,0,1]=(0.272596166342)*x[0]**o+(0.523354359959)*x[0]+(-0.597238366724)*x[1]**o+(-0.57955847031)*x[1]+(0.961129977909)*x[2]**o+(-0.539446933115)*x[2]  
         s[0,4,1,0]=(0.469445737741)*x[0]**o+(0.272602303288)*x[0]+(-0.168715269045)*x[1]**o+(-0.508483179891)*x[1]+(-0.0542883418628)*x[2]**o+(-0.549230857829)*x[2]  
         s[0,4,1,1]=(-0.727336869594)*x[0]**o+(0.501720827606)*x[0]+(0.0112875501961)*x[1]**o+(-0.195351938275)*x[1]+(0.477540723998)*x[2]**o+(0.314035857499)*x[2]  
         s[0,4,2,0]=(-0.826661708611)*x[0]**o+(-0.453403968062)*x[0]+(-0.424265582853)*x[1]**o+(0.850699490929)*x[1]+(0.869873737156)*x[2]**o+(0.512188794374)*x[2]  
         s[0,4,2,1]=(0.788019130522)*x[0]**o+(-0.38976086271)*x[0]+(0.450211292079)*x[1]**o+(-0.845896268738)*x[1]+(-0.944295444764)*x[2]**o+(0.49424688571)*x[2]  
         s[1,0,0,0]=(0.251841546653)*x[0]**o+(-0.262117658277)*x[0]+(-0.756023145868)*x[1]**o+(0.562918802897)*x[1]+(0.999897367962)*x[2]**o+(-0.438732703957)*x[2]  
         s[1,0,0,1]=(0.0702543485705)*x[0]**o+(0.553020799687)*x[0]+(0.129510978458)*x[1]**o+(-0.287781735231)*x[1]+(0.0962686272734)*x[2]**o+(-0.153713487101)*x[2]  
         s[1,0,1,0]=(0.0132145791001)*x[0]**o+(-0.747224756368)*x[0]+(0.533216099372)*x[1]**o+(0.651501143279)*x[1]+(0.275246126663)*x[2]**o+(0.564330219864)*x[2]  
         s[1,0,1,1]=(0.00555685773193)*x[0]**o+(-0.912265903466)*x[0]+(-0.165714475359)*x[1]**o+(-0.29550893963)*x[1]+(-0.834017179013)*x[2]**o+(-0.66051475999)*x[2]  
         s[1,0,2,0]=(-0.937628377428)*x[0]**o+(0.670046440332)*x[0]+(-0.836211833803)*x[1]**o+(0.294767128956)*x[1]+(-0.0831464801716)*x[2]**o+(0.173538164187)*x[2]  
         s[1,0,2,1]=(0.0853414413422)*x[0]**o+(0.332113726085)*x[0]+(-0.00785676889602)*x[1]**o+(-0.787517944282)*x[1]+(0.640692804663)*x[2]**o+(0.16190882793)*x[2]  
         s[1,1,0,0]=(-0.197717271419)*x[0]**o+(0.0875673864383)*x[0]+(0.303400667777)*x[1]**o+(0.561096499643)*x[1]+(-0.544100296942)*x[2]**o+(-0.236967889808)*x[2]  
         s[1,1,0,1]=(0.378319093831)*x[0]**o+(-0.173085814456)*x[0]+(-0.520972068858)*x[1]**o+(-0.0887121930691)*x[1]+(0.0219775149259)*x[2]**o+(-0.902192785902)*x[2]  
         s[1,1,1,0]=(-0.0852354427742)*x[0]**o+(-0.868052438949)*x[0]+(-0.962245566851)*x[1]**o+(-0.785773600296)*x[1]+(0.871469592508)*x[2]**o+(0.970335434685)*x[2]  
         s[1,1,1,1]=(0.543079304077)*x[0]**o+(0.563798729263)*x[0]+(-0.0684074924309)*x[1]**o+(-0.0846345417372)*x[1]+(-0.0409611114801)*x[2]**o+(0.064168518437)*x[2]  
         s[1,1,2,0]=(0.163126135652)*x[0]**o+(0.550910259467)*x[0]+(-0.838398060114)*x[1]**o+(0.20704094128)*x[1]+(-0.988745842471)*x[2]**o+(-0.238812411091)*x[2]  
         s[1,1,2,1]=(-0.4311680318)*x[0]**o+(-0.689268700879)*x[0]+(-0.478591190853)*x[1]**o+(-0.935785118221)*x[1]+(0.681916835809)*x[2]**o+(0.316911720884)*x[2]  
         s[1,2,0,0]=(-0.823741968282)*x[0]**o+(0.337348902553)*x[0]+(-0.773958391461)*x[1]**o+(0.319484407204)*x[1]+(-0.806392888327)*x[2]**o+(0.784342104197)*x[2]  
         s[1,2,0,1]=(-0.271373691068)*x[0]**o+(-0.674977315639)*x[0]+(-0.73119288706)*x[1]**o+(-0.822294334638)*x[1]+(-0.348777213792)*x[2]**o+(0.539498527057)*x[2]  
         s[1,2,1,0]=(-0.197804966703)*x[0]**o+(-0.000545898061773)*x[0]+(-0.477781076232)*x[1]**o+(-0.726309620722)*x[1]+(0.33565493623)*x[2]**o+(-0.472018740475)*x[2]  
         s[1,2,1,1]=(0.985473777724)*x[0]**o+(-0.905489956976)*x[0]+(0.542738966677)*x[1]**o+(0.405770678949)*x[1]+(0.742199205539)*x[2]**o+(-0.834198356515)*x[2]  
         s[1,2,2,0]=(0.0963375474866)*x[0]**o+(-0.702341975163)*x[0]+(-0.719805210146)*x[1]**o+(-0.573969955879)*x[1]+(0.849036302763)*x[2]**o+(-0.050325972969)*x[2]  
         s[1,2,2,1]=(-0.000809557040863)*x[0]**o+(-0.298554227357)*x[0]+(-0.257571070168)*x[1]**o+(0.902842431485)*x[1]+(-0.565532231171)*x[2]**o+(-0.0268976084038)*x[2]  
         s[1,3,0,0]=(-0.450224087014)*x[0]**o+(0.644911723614)*x[0]+(0.585908753859)*x[1]**o+(0.192087613433)*x[1]+(0.37463835574)*x[2]**o+(-0.858368552725)*x[2]  
         s[1,3,0,1]=(-0.211716554169)*x[0]**o+(0.133373638633)*x[0]+(-0.477897006462)*x[1]**o+(-0.856170108137)*x[1]+(0.709445201671)*x[2]**o+(0.999843178308)*x[2]  
         s[1,3,1,0]=(0.469992449976)*x[0]**o+(-0.547601912734)*x[0]+(-0.652917936853)*x[1]**o+(-0.973841854379)*x[1]+(0.346404346699)*x[2]**o+(0.960819995744)*x[2]  
         s[1,3,1,1]=(-0.9202597392)*x[0]**o+(0.476802978382)*x[0]+(-0.106899807732)*x[1]**o+(-0.704577566959)*x[1]+(-0.331549015764)*x[2]**o+(0.936043692204)*x[2]  
         s[1,3,2,0]=(0.724283786459)*x[0]**o+(0.822984194337)*x[0]+(0.705848034385)*x[1]**o+(-0.59858805565)*x[1]+(0.350635957833)*x[2]**o+(0.882807237348)*x[2]  
         s[1,3,2,1]=(-0.582421422441)*x[0]**o+(0.809035080665)*x[0]+(-0.457851306764)*x[1]**o+(-0.993328352221)*x[1]+(-0.576322826333)*x[2]**o+(-0.749512812669)*x[2]  
         s[1,4,0,0]=(0.268654181239)*x[0]**o+(-0.902343324019)*x[0]+(0.638580048206)*x[1]**o+(-0.832694904209)*x[1]+(-0.305201732282)*x[2]**o+(-0.867754959197)*x[2]  
         s[1,4,0,1]=(-0.526400834988)*x[0]**o+(-0.40198050654)*x[0]+(0.337289899423)*x[1]**o+(0.179314676284)*x[1]+(-0.931514578551)*x[2]**o+(-0.449197337162)*x[2]  
         s[1,4,1,0]=(0.912742445536)*x[0]**o+(-0.815137545811)*x[0]+(-0.38425815792)*x[1]**o+(-0.713804511416)*x[1]+(-0.0940645853762)*x[2]**o+(-0.184482970408)*x[2]  
         s[1,4,1,1]=(0.0912352323191)*x[0]**o+(0.990389316513)*x[0]+(-0.0350410457429)*x[1]**o+(0.80277947226)*x[1]+(0.35771085432)*x[2]**o+(0.704976740376)*x[2]  
         s[1,4,2,0]=(-0.212374984853)*x[0]**o+(0.115911507956)*x[0]+(0.743357884785)*x[1]**o+(-0.351179816129)*x[1]+(0.363783848165)*x[2]**o+(0.0667503905017)*x[2]  
         s[1,4,2,1]=(-0.192346087265)*x[0]**o+(-0.875505251594)*x[0]+(0.450972468787)*x[1]**o+(0.0441627318307)*x[1]+(-0.955445583779)*x[2]**o+(0.561351576194)*x[2]  
         s[2,0,0,0]=(0.646959412154)*x[0]**o+(0.49125803323)*x[0]+(-0.380573298578)*x[1]**o+(0.5795381042)*x[1]+(0.988167811553)*x[2]**o+(-0.848010513202)*x[2]  
         s[2,0,0,1]=(-0.116490832795)*x[0]**o+(-0.413497866427)*x[0]+(0.015263239692)*x[1]**o+(0.995022978956)*x[1]+(-0.606550379921)*x[2]**o+(0.480728880447)*x[2]  
         s[2,0,1,0]=(-0.656776412474)*x[0]**o+(0.105101642124)*x[0]+(-0.152043267549)*x[1]**o+(0.0397914854834)*x[1]+(0.907598907718)*x[2]**o+(0.55003346668)*x[2]  
         s[2,0,1,1]=(-0.244997314762)*x[0]**o+(-0.180839249852)*x[0]+(0.737654816515)*x[1]**o+(-0.316505218599)*x[1]+(-0.467254068865)*x[2]**o+(0.642411232963)*x[2]  
         s[2,0,2,0]=(0.427359531608)*x[0]**o+(0.0694309336993)*x[0]+(0.567819273901)*x[1]**o+(0.302951042003)*x[1]+(-0.652475445869)*x[2]**o+(-0.0604300175636)*x[2]  
         s[2,0,2,1]=(-0.28054117321)*x[0]**o+(-0.506627838493)*x[0]+(0.830518434434)*x[1]**o+(-0.878165796713)*x[1]+(-0.924137956967)*x[2]**o+(-0.542977024006)*x[2]  
         s[2,1,0,0]=(0.832323847638)*x[0]**o+(0.788814796981)*x[0]+(0.443003510301)*x[1]**o+(-0.692364079852)*x[1]+(-0.107112423673)*x[2]**o+(-0.42975252335)*x[2]  
         s[2,1,0,1]=(0.791743274331)*x[0]**o+(0.506185826171)*x[0]+(0.880323084905)*x[1]**o+(0.875445981105)*x[1]+(-0.988158636575)*x[2]**o+(0.0106467506338)*x[2]  
         s[2,1,1,0]=(-0.0716642151005)*x[0]**o+(0.184121338207)*x[0]+(0.563163918743)*x[1]**o+(-0.0476664508964)*x[1]+(-0.779735247644)*x[2]**o+(0.0532353296963)*x[2]  
         s[2,1,1,1]=(-0.487936865731)*x[0]**o+(0.910882234056)*x[0]+(0.0698617623832)*x[1]**o+(0.949481044342)*x[1]+(0.605781066129)*x[2]**o+(-0.961538763982)*x[2]  
         s[2,1,2,0]=(-0.865760152137)*x[0]**o+(0.98792005348)*x[0]+(-0.266208542741)*x[1]**o+(0.724207675193)*x[1]+(-0.431135420169)*x[2]**o+(-0.719606907727)*x[2]  
         s[2,1,2,1]=(-0.550134186201)*x[0]**o+(0.377678575292)*x[0]+(0.681637629077)*x[1]**o+(0.880510886804)*x[1]+(0.185916696615)*x[2]**o+(-0.561352445373)*x[2]  
         s[2,2,0,0]=(-0.0191940498302)*x[0]**o+(0.92499736077)*x[0]+(-0.457609595358)*x[1]**o+(0.295953391548)*x[1]+(-0.60039707059)*x[2]**o+(0.439541541552)*x[2]  
         s[2,2,0,1]=(-0.593353550722)*x[0]**o+(-0.262307597953)*x[0]+(0.0707406713996)*x[1]**o+(0.510104333108)*x[1]+(-0.325033325591)*x[2]**o+(-0.978979243989)*x[2]  
         s[2,2,1,0]=(0.758386313418)*x[0]**o+(-0.904849079285)*x[0]+(0.517417240328)*x[1]**o+(0.662794014603)*x[1]+(-0.9181308007)*x[2]**o+(0.545716036213)*x[2]  
         s[2,2,1,1]=(-0.0562030350565)*x[0]**o+(-0.187267436123)*x[0]+(-0.0666932679699)*x[1]**o+(-0.192661397505)*x[1]+(0.683795366538)*x[2]**o+(0.554493956469)*x[2]  
         s[2,2,2,0]=(0.632035307709)*x[0]**o+(-0.352426434378)*x[0]+(-0.572996524284)*x[1]**o+(-0.260948177348)*x[1]+(0.0781523669039)*x[2]**o+(-0.755607733499)*x[2]  
         s[2,2,2,1]=(0.877117460076)*x[0]**o+(-0.368983710962)*x[0]+(0.339499499347)*x[1]**o+(-0.74687226645)*x[1]+(-0.0236621043423)*x[2]**o+(-0.524200850201)*x[2]  
         s[2,3,0,0]=(0.868438479199)*x[0]**o+(-0.490384020524)*x[0]+(-0.348975370347)*x[1]**o+(0.0689779831612)*x[1]+(0.993171286973)*x[2]**o+(0.238168596199)*x[2]  
         s[2,3,0,1]=(0.58688914355)*x[0]**o+(-0.299012943187)*x[0]+(-0.475183593899)*x[1]**o+(-0.209284023343)*x[1]+(-0.128788417577)*x[2]**o+(0.88040263674)*x[2]  
         s[2,3,1,0]=(-0.491821145506)*x[0]**o+(0.28222061488)*x[0]+(-0.432027482169)*x[1]**o+(0.0843542963065)*x[1]+(0.179895461516)*x[2]**o+(0.26281058218)*x[2]  
         s[2,3,1,1]=(-0.68076808014)*x[0]**o+(0.966337829009)*x[0]+(-0.967714227169)*x[1]**o+(-0.511464770717)*x[1]+(-0.00173666009442)*x[2]**o+(0.418327208497)*x[2]  
         s[2,3,2,0]=(-0.981204168827)*x[0]**o+(-0.481006793801)*x[0]+(0.223651529206)*x[1]**o+(0.0692948204072)*x[1]+(0.833168651519)*x[2]**o+(-0.747962032571)*x[2]  
         s[2,3,2,1]=(-0.979594675181)*x[0]**o+(-0.793815945451)*x[0]+(-0.972489753584)*x[1]**o+(0.193666863184)*x[1]+(0.813999185145)*x[2]**o+(0.976350643493)*x[2]  
         s[2,4,0,0]=(0.160095467562)*x[0]**o+(-0.0596430245423)*x[0]+(0.421111483086)*x[1]**o+(-0.50368497144)*x[1]+(0.295956709432)*x[2]**o+(-0.547225692085)*x[2]  
         s[2,4,0,1]=(0.121233419707)*x[0]**o+(0.0796884300301)*x[0]+(0.63360038458)*x[1]**o+(-0.285793125165)*x[1]+(-0.322665608493)*x[2]**o+(0.144053221653)*x[2]  
         s[2,4,1,0]=(-0.327390540088)*x[0]**o+(-0.158990478104)*x[0]+(0.0417451752863)*x[1]**o+(0.0577661706274)*x[1]+(0.608054602266)*x[2]**o+(0.876076509191)*x[2]  
         s[2,4,1,1]=(-0.336090262681)*x[0]**o+(0.460831366224)*x[0]+(0.126375418917)*x[1]**o+(-0.0524791065196)*x[1]+(0.778197798934)*x[2]**o+(-0.938503586105)*x[2]  
         s[2,4,2,0]=(-0.157686815732)*x[0]**o+(-0.240464045969)*x[0]+(-0.610957847036)*x[1]**o+(-0.591812526831)*x[1]+(0.683562885502)*x[2]**o+(-0.575699253807)*x[2]  
         s[2,4,2,1]=(-0.591186612156)*x[0]**o+(0.952366931656)*x[0]+(0.563360859838)*x[1]**o+(-0.540973061762)*x[1]+(0.95638308424)*x[2]**o+(0.0810587285575)*x[2]  
         s[3,0,0,0]=(-0.777152282839)*x[0]**o+(0.0462962198971)*x[0]+(-0.989861157039)*x[1]**o+(-0.895147454926)*x[1]+(0.496304718705)*x[2]**o+(0.724664844743)*x[2]  
         s[3,0,0,1]=(-0.152045574171)*x[0]**o+(0.557429298004)*x[0]+(0.172100777056)*x[1]**o+(-0.762302216782)*x[1]+(0.0107560041439)*x[2]**o+(0.0984433240396)*x[2]  
         s[3,0,1,0]=(-0.300572515767)*x[0]**o+(-0.776096822514)*x[0]+(-0.304519070945)*x[1]**o+(0.222039297615)*x[1]+(0.42051246201)*x[2]**o+(0.875929404536)*x[2]  
         s[3,0,1,1]=(-0.832809662655)*x[0]**o+(-0.775869677688)*x[0]+(-0.548130481677)*x[1]**o+(-0.863910117253)*x[1]+(-0.708195298544)*x[2]**o+(-0.895809178957)*x[2]  
         s[3,0,2,0]=(0.417580286092)*x[0]**o+(-0.320463746468)*x[0]+(-0.780326066905)*x[1]**o+(-0.397006341179)*x[1]+(0.575088222676)*x[2]**o+(0.621841867422)*x[2]  
         s[3,0,2,1]=(0.266423263811)*x[0]**o+(0.782081751363)*x[0]+(-0.395723332933)*x[1]**o+(-0.474817183348)*x[1]+(0.483870682109)*x[2]**o+(-0.416708790303)*x[2]  
         s[3,1,0,0]=(0.364336403912)*x[0]**o+(0.4746091186)*x[0]+(0.419745216537)*x[1]**o+(0.906218032598)*x[1]+(-0.561381612354)*x[2]**o+(0.252977998753)*x[2]  
         s[3,1,0,1]=(-0.479065041103)*x[0]**o+(-0.727722678216)*x[0]+(0.298427986755)*x[1]**o+(0.391426108723)*x[1]+(-0.18371001783)*x[2]**o+(-0.298396916251)*x[2]  
         s[3,1,1,0]=(-0.456720853948)*x[0]**o+(-0.137192756988)*x[0]+(0.0387577082772)*x[1]**o+(0.0342816278)*x[1]+(0.287825957753)*x[2]**o+(-0.416093408739)*x[2]  
         s[3,1,1,1]=(-0.157773606009)*x[0]**o+(0.229634478596)*x[0]+(-0.100573203257)*x[1]**o+(-0.791674554355)*x[1]+(0.633139739302)*x[2]**o+(0.53643300369)*x[2]  
         s[3,1,2,0]=(-0.977094714538)*x[0]**o+(-0.980511324919)*x[0]+(-0.996777041114)*x[1]**o+(-0.135014608241)*x[1]+(0.171228488823)*x[2]**o+(-0.826149942234)*x[2]  
         s[3,1,2,1]=(0.40095895971)*x[0]**o+(-0.16005681048)*x[0]+(-0.110948052824)*x[1]**o+(-0.0657272460506)*x[1]+(-0.921326915659)*x[2]**o+(0.498246475577)*x[2]  
         s[3,2,0,0]=(-0.521393633448)*x[0]**o+(-0.442461853948)*x[0]+(0.882466157567)*x[1]**o+(-0.318640196818)*x[1]+(-0.454978258143)*x[2]**o+(-0.146713474073)*x[2]  
         s[3,2,0,1]=(-0.60584665741)*x[0]**o+(0.186330030473)*x[0]+(0.800412347134)*x[1]**o+(0.632355962829)*x[1]+(-0.577489166576)*x[2]**o+(0.288233513083)*x[2]  
         s[3,2,1,0]=(0.645974743024)*x[0]**o+(-0.463548979592)*x[0]+(0.454659333323)*x[1]**o+(-0.147068470329)*x[1]+(0.621612597429)*x[2]**o+(0.309226445731)*x[2]  
         s[3,2,1,1]=(0.142559408818)*x[0]**o+(0.568796102102)*x[0]+(-0.957487822488)*x[1]**o+(0.199695598234)*x[1]+(0.437309500275)*x[2]**o+(-0.608539956732)*x[2]  
         s[3,2,2,0]=(0.814258898685)*x[0]**o+(-0.0657073512095)*x[0]+(-0.675703123952)*x[1]**o+(-0.826924419864)*x[1]+(-0.202583280241)*x[2]**o+(0.556708057646)*x[2]  
         s[3,2,2,1]=(0.420183604639)*x[0]**o+(0.234120268268)*x[0]+(-0.690228330954)*x[1]**o+(0.0742691494912)*x[1]+(-0.542445114625)*x[2]**o+(-0.671138939877)*x[2]  
         s[3,3,0,0]=(-0.327300600039)*x[0]**o+(-0.883120008711)*x[0]+(-0.588356952373)*x[1]**o+(0.964702848682)*x[1]+(0.0983852055922)*x[2]**o+(-0.517082121951)*x[2]  
         s[3,3,0,1]=(0.808391338918)*x[0]**o+(0.413826885405)*x[0]+(-0.781923414495)*x[1]**o+(0.941400794201)*x[1]+(0.566387362748)*x[2]**o+(-0.361926999623)*x[2]  
         s[3,3,1,0]=(0.0408315227595)*x[0]**o+(0.00354329999935)*x[0]+(0.29340210554)*x[1]**o+(-0.129271597771)*x[1]+(0.85418604558)*x[2]**o+(0.972437132596)*x[2]  
         s[3,3,1,1]=(0.488110633719)*x[0]**o+(0.442243578548)*x[0]+(0.491915283822)*x[1]**o+(0.900808596947)*x[1]+(0.872340191832)*x[2]**o+(-0.821189941972)*x[2]  
         s[3,3,2,0]=(0.698445367492)*x[0]**o+(0.235000428999)*x[0]+(0.0231665862971)*x[1]**o+(0.175887750008)*x[1]+(0.285424647457)*x[2]**o+(-0.0889092865387)*x[2]  
         s[3,3,2,1]=(-0.619448487664)*x[0]**o+(-0.25845368795)*x[0]+(0.514713543216)*x[1]**o+(0.933603723018)*x[1]+(0.965553741692)*x[2]**o+(0.775325889348)*x[2]  
         s[3,4,0,0]=(0.653712053876)*x[0]**o+(0.397899343408)*x[0]+(-0.980528220216)*x[1]**o+(0.192768638146)*x[1]+(-0.131961987222)*x[2]**o+(0.294990291948)*x[2]  
         s[3,4,0,1]=(0.519872654154)*x[0]**o+(-0.523923706123)*x[0]+(-0.366056337857)*x[1]**o+(0.587286575656)*x[1]+(0.67858517405)*x[2]**o+(-0.528581733781)*x[2]  
         s[3,4,1,0]=(-0.561163638499)*x[0]**o+(0.834141187099)*x[0]+(0.101344553848)*x[1]**o+(-0.630659721656)*x[1]+(0.177616824366)*x[2]**o+(-0.702449367192)*x[2]  
         s[3,4,1,1]=(0.0594382754162)*x[0]**o+(-0.274398458709)*x[0]+(0.423874245449)*x[1]**o+(0.644709194846)*x[1]+(0.742592384867)*x[2]**o+(-0.00411951621579)*x[2]  
         s[3,4,2,0]=(0.0680763742436)*x[0]**o+(0.718014295363)*x[0]+(0.10166016369)*x[1]**o+(-0.308308565274)*x[1]+(0.529471669819)*x[2]**o+(0.371855430993)*x[2]  
         s[3,4,2,1]=(0.154883537954)*x[0]**o+(-0.727616949065)*x[0]+(0.685560277601)*x[1]**o+(0.0846298021044)*x[1]+(0.284159382541)*x[2]**o+(0.869297635219)*x[2]  
         ref[0,0,0,0]=(0.739396210148)/(o+1.)+(-0.377981671409)+(-0.48893267678)*0.5**o  
         ref[0,0,0,1]=(0.337987859283)/(o+1.)+(-0.185632830775)+(0.271529548298)*0.5**o  
         ref[0,0,1,0]=(0.341117558489)/(o+1.)+(0.285059767111)+(0.217379546035)*0.5**o  
         ref[0,0,1,1]=(-0.0893400826624)/(o+1.)+(0.617738916563)+(0.042921886647)*0.5**o  
         ref[0,0,2,0]=(1.21239011685)/(o+1.)+(-0.720282881042)+(-0.386813522991)*0.5**o  
         ref[0,0,2,1]=(-0.0384313516284)/(o+1.)+(-0.61005148956)+(0.270966465259)*0.5**o  
         ref[0,1,0,0]=(0.327203624676)/(o+1.)+(0.0257361660344)+(0.341922361346)*0.5**o  
         ref[0,1,0,1]=(-0.608485653551)/(o+1.)+(0.196745850885)+(0.232432790902)*0.5**o  
         ref[0,1,1,0]=(-0.0886766370694)/(o+1.)+(0.256118417885)+(-0.0195600321657)*0.5**o  
         ref[0,1,1,1]=(0.773736575857)/(o+1.)+(0.015232876126)+(0.440682443808)*0.5**o  
         ref[0,1,2,0]=(-0.570789204325)/(o+1.)+(-0.896252294196)+(0.0308644963019)*0.5**o  
         ref[0,1,2,1]=(-0.589934257593)/(o+1.)+(0.123692628409)+(0.964064258383)*0.5**o  
         ref[0,2,0,0]=(-0.462322464655)/(o+1.)+(0.161466206488)+(-0.378594793341)*0.5**o  
         ref[0,2,0,1]=(0.870324747287)/(o+1.)+(-0.480877839502)+(-0.24119818585)*0.5**o  
         ref[0,2,1,0]=(-0.958030860186)/(o+1.)+(0.832841870654)+(0.260426222503)*0.5**o  
         ref[0,2,1,1]=(0.119929006158)/(o+1.)+(0.965344805092)+(-0.585208459519)*0.5**o  
         ref[0,2,2,0]=(0.595680154835)/(o+1.)+(0.813013191009)+(0.926784535292)*0.5**o  
         ref[0,2,2,1]=(1.16197298905)/(o+1.)+(-0.0901053305394)+(-0.182330163829)*0.5**o  
         ref[0,3,0,0]=(-0.408748832285)/(o+1.)+(-0.276487805822)+(0.251053015385)*0.5**o  
         ref[0,3,0,1]=(-0.289518113494)/(o+1.)+(0.0472028037384)+(-0.885181589797)*0.5**o  
         ref[0,3,1,0]=(-0.361024485545)/(o+1.)+(0.243370797547)+(0.464501690982)*0.5**o  
         ref[0,3,1,1]=(-0.66248835768)/(o+1.)+(-0.431971169905)+(0.117929836206)*0.5**o  
         ref[0,3,2,0]=(-0.0787999320256)/(o+1.)+(0.0743499551435)+(0.228255426058)*0.5**o  
         ref[0,3,2,1]=(-0.173348259943)/(o+1.)+(-0.561339626579)+(-0.155365105782)*0.5**o  
         ref[0,4,0,0]=(0.611450791476)/(o+1.)+(0.0699376623952)+(-0.913401118579)*0.5**o  
         ref[0,4,0,1]=(0.363891611185)/(o+1.)+(-0.297825521733)+(0.272596166342)*0.5**o  
         ref[0,4,1,0]=(-0.223003610908)/(o+1.)+(-0.392555867216)+(0.469445737741)*0.5**o  
         ref[0,4,1,1]=(0.488828274194)/(o+1.)+(0.310202373415)+(-0.727336869594)*0.5**o  
         ref[0,4,2,0]=(0.445608154304)/(o+1.)+(0.454742158621)+(-0.826661708611)*0.5**o  
         ref[0,4,2,1]=(-0.494084152685)/(o+1.)+(-0.370705122869)+(0.788019130522)*0.5**o  
         ref[1,0,0,0]=(0.243874222094)/(o+1.)+(-0.0689657796687)+(0.251841546653)*0.5**o  
         ref[1,0,0,1]=(0.225779605731)/(o+1.)+(0.0557627886771)+(0.0702543485705)*0.5**o  
         ref[1,0,1,0]=(0.808462226036)/(o+1.)+(0.234303303388)+(0.0132145791001)*0.5**o  
         ref[1,0,1,1]=(-0.999731654372)/(o+1.)+(-0.934144801543)+(0.00555685773193)*0.5**o  
         ref[1,0,2,0]=(-0.919358313974)/(o+1.)+(0.569175866738)+(-0.937628377428)*0.5**o  
         ref[1,0,2,1]=(0.632836035767)/(o+1.)+(-0.146747695134)+(0.0853414413422)*0.5**o  
         ref[1,1,0,0]=(-0.240699629165)/(o+1.)+(0.205847998136)+(-0.197717271419)*0.5**o  
         ref[1,1,0,1]=(-0.498994553932)/(o+1.)+(-0.581995396714)+(0.378319093831)*0.5**o  
         ref[1,1,1,0]=(-0.0907759743431)/(o+1.)+(-0.34174530228)+(-0.0852354427742)*0.5**o  
         ref[1,1,1,1]=(-0.109368603911)/(o+1.)+(0.271666352981)+(0.543079304077)*0.5**o  
         ref[1,1,2,0]=(-1.82714390258)/(o+1.)+(0.259569394828)+(0.163126135652)*0.5**o  
         ref[1,1,2,1]=(0.203325644955)/(o+1.)+(-0.654071049108)+(-0.4311680318)*0.5**o  
         ref[1,2,0,0]=(-1.58035127979)/(o+1.)+(0.720587706977)+(-0.823741968282)*0.5**o  
         ref[1,2,0,1]=(-1.07997010085)/(o+1.)+(-0.47888656161)+(-0.271373691068)*0.5**o  
         ref[1,2,1,0]=(-0.142126140002)/(o+1.)+(-0.599437129629)+(-0.197804966703)*0.5**o  
         ref[1,2,1,1]=(1.28493817222)/(o+1.)+(-0.666958817271)+(0.985473777724)*0.5**o  
         ref[1,2,2,0]=(0.129231092617)/(o+1.)+(-0.663318952006)+(0.0963375474866)*0.5**o  
         ref[1,2,2,1]=(-0.823103301339)/(o+1.)+(0.288695297862)+(-0.000809557040863)*0.5**o  
         ref[1,3,0,0]=(0.960547109599)/(o+1.)+(-0.010684607839)+(-0.450224087014)*0.5**o  
         ref[1,3,0,1]=(0.231548195209)/(o+1.)+(0.138523354402)+(-0.211716554169)*0.5**o  
         ref[1,3,1,0]=(-0.306513590154)/(o+1.)+(-0.280311885684)+(0.469992449976)*0.5**o  
         ref[1,3,1,1]=(-0.438448823496)/(o+1.)+(0.354134551813)+(-0.9202597392)*0.5**o  
         ref[1,3,2,0]=(1.05648399222)/(o+1.)+(0.553601688018)+(0.724283786459)*0.5**o  
         ref[1,3,2,1]=(-1.0341741331)/(o+1.)+(-0.466903042112)+(-0.582421422441)*0.5**o  
         ref[1,4,0,0]=(0.333378315924)/(o+1.)+(-1.30139659371)+(0.268654181239)*0.5**o  
         ref[1,4,0,1]=(-0.594224679128)/(o+1.)+(-0.335931583709)+(-0.526400834988)*0.5**o  
         ref[1,4,1,0]=(-0.478322743296)/(o+1.)+(-0.856712513818)+(0.912742445536)*0.5**o  
         ref[1,4,1,1]=(0.322669808577)/(o+1.)+(1.24907276457)+(0.0912352323191)*0.5**o  
         ref[1,4,2,0]=(1.10714173295)/(o+1.)+(-0.0842589588357)+(-0.212374984853)*0.5**o  
         ref[1,4,2,1]=(-0.504473114993)/(o+1.)+(-0.134995471785)+(-0.192346087265)*0.5**o  
         ref[2,0,0,0]=(0.607594512975)/(o+1.)+(0.111392812114)+(0.646959412154)*0.5**o  
         ref[2,0,0,1]=(-0.59128714023)/(o+1.)+(0.531126996488)+(-0.116490832795)*0.5**o  
         ref[2,0,1,0]=(0.755555640169)/(o+1.)+(0.347463297144)+(-0.656776412474)*0.5**o  
         ref[2,0,1,1]=(0.27040074765)/(o+1.)+(0.0725333822557)+(-0.244997314762)*0.5**o  
         ref[2,0,2,0]=(-0.0846561719678)/(o+1.)+(0.155975979069)+(0.427359531608)*0.5**o  
         ref[2,0,2,1]=(-0.0936195225336)/(o+1.)+(-0.963885329606)+(-0.28054117321)*0.5**o  
         ref[2,1,0,0]=(0.335891086628)/(o+1.)+(-0.166650903111)+(0.832323847638)*0.5**o  
         ref[2,1,0,1]=(-0.10783555167)/(o+1.)+(0.696139278955)+(0.791743274331)*0.5**o  
         ref[2,1,1,0]=(-0.2165713289)/(o+1.)+(0.0948451085032)+(-0.0716642151005)*0.5**o  
         ref[2,1,1,1]=(0.675642828512)/(o+1.)+(0.449412257208)+(-0.487936865731)*0.5**o  
         ref[2,1,2,0]=(-0.69734396291)/(o+1.)+(0.496260410473)+(-0.865760152137)*0.5**o  
         ref[2,1,2,1]=(0.867554325692)/(o+1.)+(0.348418508362)+(-0.550134186201)*0.5**o  
         ref[2,2,0,0]=(-1.05800666595)/(o+1.)+(0.830246146935)+(-0.0191940498302)*0.5**o  
         ref[2,2,0,1]=(-0.254292654192)/(o+1.)+(-0.365591254417)+(-0.593353550722)*0.5**o  
         ref[2,2,1,0]=(-0.400713560372)/(o+1.)+(0.151830485765)+(0.758386313418)*0.5**o  
         ref[2,2,1,1]=(0.617102098568)/(o+1.)+(0.0872825614209)+(-0.0562030350565)*0.5**o  
         ref[2,2,2,0]=(-0.49484415738)/(o+1.)+(-0.684491172613)+(0.632035307709)*0.5**o  
         ref[2,2,2,1]=(0.315837395005)/(o+1.)+(-0.820028413806)+(0.877117460076)*0.5**o  
         ref[2,3,0,0]=(0.644195916625)/(o+1.)+(-0.0916187205818)+(0.868438479199)*0.5**o  
         ref[2,3,0,1]=(-0.603972011476)/(o+1.)+(0.186052835105)+(0.58688914355)*0.5**o  
         ref[2,3,1,0]=(-0.252132020652)/(o+1.)+(0.314692746683)+(-0.491821145506)*0.5**o  
         ref[2,3,1,1]=(-0.969450887263)/(o+1.)+(0.436600133394)+(-0.68076808014)*0.5**o  
         ref[2,3,2,0]=(1.05682018072)/(o+1.)+(-0.579837002982)+(-0.981204168827)*0.5**o  
         ref[2,3,2,1]=(-0.15849056844)/(o+1.)+(0.188100780613)+(-0.979594675181)*0.5**o  
         ref[2,4,0,0]=(0.717068192518)/(o+1.)+(-0.555276844034)+(0.160095467562)*0.5**o  
         ref[2,4,0,1]=(0.310934776087)/(o+1.)+(-0.031025736741)+(0.121233419707)*0.5**o  
         ref[2,4,1,0]=(0.649799777552)/(o+1.)+(0.387426100857)+(-0.327390540088)*0.5**o  
         ref[2,4,1,1]=(0.904573217851)/(o+1.)+(-0.2650756632)+(-0.336090262681)*0.5**o  
         ref[2,4,2,0]=(0.0726050384664)/(o+1.)+(-0.703987913303)+(-0.157686815732)*0.5**o  
         ref[2,4,2,1]=(1.51974394408)/(o+1.)+(0.246226299226)+(-0.591186612156)*0.5**o  
         ref[3,0,0,0]=(-0.493556438334)/(o+1.)+(-0.0620931951433)+(-0.777152282839)*0.5**o  
         ref[3,0,0,1]=(0.1828567812)/(o+1.)+(-0.0532147973691)+(-0.152045574171)*0.5**o  
         ref[3,0,1,0]=(0.115993391065)/(o+1.)+(0.160935939818)+(-0.300572515767)*0.5**o  
         ref[3,0,1,1]=(-1.25632578022)/(o+1.)+(-1.26779448695)+(-0.832809662655)*0.5**o  
         ref[3,0,2,0]=(-0.205237844229)/(o+1.)+(-0.0478141101127)+(0.417580286092)*0.5**o  
         ref[3,0,2,1]=(0.088147349176)/(o+1.)+(-0.0547221111442)+(0.266423263811)*0.5**o  
         ref[3,1,0,0]=(-0.141636395817)/(o+1.)+(0.816902574975)+(0.364336403912)*0.5**o  
         ref[3,1,0,1]=(0.114717968925)/(o+1.)+(-0.317346742872)+(-0.479065041103)*0.5**o  
         ref[3,1,1,0]=(0.32658366603)/(o+1.)+(-0.259502268963)+(-0.456720853948)*0.5**o  
         ref[3,1,1,1]=(0.532566536046)/(o+1.)+(-0.0128035360346)+(-0.157773606009)*0.5**o  
         ref[3,1,2,0]=(-0.825548552291)/(o+1.)+(-0.970837937697)+(-0.977094714538)*0.5**o  
         ref[3,1,2,1]=(-1.03227496848)/(o+1.)+(0.136231209523)+(0.40095895971)*0.5**o  
         ref[3,2,0,0]=(0.427487899424)/(o+1.)+(-0.453907762419)+(-0.521393633448)*0.5**o  
         ref[3,2,0,1]=(0.222923180558)/(o+1.)+(0.553459753192)+(-0.60584665741)*0.5**o  
         ref[3,2,1,0]=(1.07627193075)/(o+1.)+(-0.150695502095)+(0.645974743024)*0.5**o  
         ref[3,2,1,1]=(-0.520178322214)/(o+1.)+(0.0799758718026)+(0.142559408818)*0.5**o  
         ref[3,2,2,0]=(-0.878286404193)/(o+1.)+(-0.167961856714)+(0.814258898685)*0.5**o  
         ref[3,2,2,1]=(-1.23267344558)/(o+1.)+(-0.181374761059)+(0.420183604639)*0.5**o  
         ref[3,3,0,0]=(-0.489971746781)/(o+1.)+(-0.21774964099)+(-0.327300600039)*0.5**o  
         ref[3,3,0,1]=(-0.215536051747)/(o+1.)+(0.496650339992)+(0.808391338918)*0.5**o  
         ref[3,3,1,0]=(1.14758815112)/(o+1.)+(0.423354417412)+(0.0408315227595)*0.5**o  
         ref[3,3,1,1]=(1.36425547565)/(o+1.)+(0.260931116761)+(0.488110633719)*0.5**o  
         ref[3,3,2,0]=(0.308591233754)/(o+1.)+(0.160989446234)+(0.698445367492)*0.5**o  
         ref[3,3,2,1]=(1.48026728491)/(o+1.)+(0.725237962208)+(-0.619448487664)*0.5**o  
         ref[3,4,0,0]=(-1.11249020744)/(o+1.)+(0.442829136751)+(0.653712053876)*0.5**o  
         ref[3,4,0,1]=(0.312528836193)/(o+1.)+(-0.232609432124)+(0.519872654154)*0.5**o  
         ref[3,4,1,0]=(0.278961378214)/(o+1.)+(-0.249483950874)+(-0.561163638499)*0.5**o  
         ref[3,4,1,1]=(1.16646663032)/(o+1.)+(0.183095609961)+(0.0594382754162)*0.5**o  
         ref[3,4,2,0]=(0.631131833509)/(o+1.)+(0.390780580541)+(0.0680763742436)*0.5**o  
         ref[3,4,2,1]=(0.969719660142)/(o+1.)+(0.113155244129)+(0.154883537954)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(4, 5, 3, 2),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onFunctionOnContactZero_fromSymbol_Solution_rank0(self):  
       """  
       tests integral of rank 0 Symbol on the FunctionOnContactZero  
   
       assumptions: Solution(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=Solution(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=())  
       s=Data(0,(),w)  
       if dim==2:  
         s=(0.551831061348)*x[0]**o+(-0.711823790733)*x[0]+(0.766098862021)*x[1]**o+(0.348439108965)*x[1]  
         ref=(0.766098862021)/(o+1.)+(-0.181692340884)+(0.551831061348)*0.5**o  
       else:  
         s=(-0.534750207803)*x[0]**o+(0.67975160623)*x[0]+(0.747517712959)*x[1]**o+(0.392190678153)*x[1]+(-0.586558763208)*x[2]**o+(0.67325251011)*x[2]  
         ref=(0.160958949751)/(o+1.)+(0.872597397246)+(-0.534750207803)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onFunctionOnContactZero_fromSymbol_Solution_rank1(self):  
       """  
       tests integral of rank 1 Symbol on the FunctionOnContactZero  
   
       assumptions: Solution(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=Solution(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(2,))  
       s=Data(0,(2,),w)  
       ref=numpy.zeros((2,),numpy.float_)  
       if dim==2:  
         s[0]=(0.824614999579)*x[0]**o+(-0.92501072999)*x[0]+(-0.164852435473)*x[1]**o+(0.625787035398)*x[1]  
         s[1]=(0.933187313904)*x[0]**o+(-0.76410941839)*x[0]+(-0.924559271586)*x[1]**o+(-0.951797707375)*x[1]  
         ref[0]=(-0.164852435473)/(o+1.)+(-0.149611847296)+(0.824614999579)*0.5**o  
         ref[1]=(-0.924559271586)/(o+1.)+(-0.857953562883)+(0.933187313904)*0.5**o  
       else:  
         s[0]=(-0.73247014084)*x[0]**o+(-0.447784692568)*x[0]+(-0.206145797624)*x[1]**o+(0.800549366557)*x[1]+(0.0980004782263)*x[2]**o+(0.68684151518)*x[2]  
         s[1]=(0.734011170766)*x[0]**o+(-0.718028398303)*x[0]+(0.768940123369)*x[1]**o+(0.410156990187)*x[1]+(0.6562835776)*x[2]**o+(-0.899108897402)*x[2]  
         ref[0]=(-0.108145319398)/(o+1.)+(0.519803094585)+(-0.73247014084)*0.5**o  
         ref[1]=(1.42522370097)/(o+1.)+(-0.603490152759)+(0.734011170766)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(2,),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onFunctionOnContactZero_fromSymbol_Solution_rank2(self):  
       """  
       tests integral of rank 2 Symbol on the FunctionOnContactZero  
   
       assumptions: Solution(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=Solution(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(4, 5))  
       s=Data(0,(4, 5),w)  
       ref=numpy.zeros((4, 5),numpy.float_)  
       if dim==2:  
         s[0,0]=(0.860004136579)*x[0]**o+(-0.117366140441)*x[0]+(0.0876424200904)*x[1]**o+(0.0578427219547)*x[1]  
         s[0,1]=(-0.934262599682)*x[0]**o+(-0.834391940774)*x[0]+(-0.37703046074)*x[1]**o+(0.571779357388)*x[1]  
         s[0,2]=(-0.524417646775)*x[0]**o+(-0.562788330473)*x[0]+(-0.454146889642)*x[1]**o+(0.382147150671)*x[1]  
         s[0,3]=(0.53752054491)*x[0]**o+(0.52118522583)*x[0]+(0.196117385249)*x[1]**o+(0.968096844135)*x[1]  
         s[0,4]=(-0.346245303793)*x[0]**o+(0.169183126761)*x[0]+(0.35430553025)*x[1]**o+(-0.1953526461)*x[1]  
         s[1,0]=(0.110897459128)*x[0]**o+(-0.189310140801)*x[0]+(-0.503153929692)*x[1]**o+(-0.776512889143)*x[1]  
         s[1,1]=(0.0773234920212)*x[0]**o+(-0.323298685849)*x[0]+(0.956652842652)*x[1]**o+(-0.834584362886)*x[1]  
         s[1,2]=(0.725330064304)*x[0]**o+(-0.761117907603)*x[0]+(-0.161152622185)*x[1]**o+(0.633185715895)*x[1]  
         s[1,3]=(0.399871656297)*x[0]**o+(-0.831922720579)*x[0]+(0.125957093778)*x[1]**o+(0.909312599897)*x[1]  
         s[1,4]=(0.450333632811)*x[0]**o+(-0.914467685845)*x[0]+(-0.71553040823)*x[1]**o+(-0.806957497854)*x[1]  
         s[2,0]=(-0.596111663177)*x[0]**o+(-0.896500016447)*x[0]+(-0.175137342743)*x[1]**o+(-0.519618663869)*x[1]  
         s[2,1]=(0.219789961005)*x[0]**o+(0.394778437788)*x[0]+(0.516359075868)*x[1]**o+(0.158719123393)*x[1]  
         s[2,2]=(-0.202978715302)*x[0]**o+(0.326528455071)*x[0]+(-0.475802171068)*x[1]**o+(-0.470892970453)*x[1]  
         s[2,3]=(0.34431665114)*x[0]**o+(0.847623303071)*x[0]+(-0.300788565801)*x[1]**o+(0.623946324835)*x[1]  
         s[2,4]=(-0.482716534989)*x[0]**o+(0.610848202802)*x[0]+(-0.618220314271)*x[1]**o+(-0.270417044737)*x[1]  
         s[3,0]=(0.323084711653)*x[0]**o+(0.870297617987)*x[0]+(-0.817231621484)*x[1]**o+(0.599137155405)*x[1]  
         s[3,1]=(-0.464413485909)*x[0]**o+(-0.948296858226)*x[0]+(-0.872776322969)*x[1]**o+(0.0058301771792)*x[1]  
         s[3,2]=(-0.920685763376)*x[0]**o+(-0.429364041758)*x[0]+(0.211630014364)*x[1]**o+(-0.311548404071)*x[1]  
         s[3,3]=(-0.175827412744)*x[0]**o+(-0.687378086381)*x[0]+(0.265852072745)*x[1]**o+(0.799115907363)*x[1]  
         s[3,4]=(-0.99517403847)*x[0]**o+(0.746397561862)*x[0]+(-0.747340816778)*x[1]**o+(-0.57474910244)*x[1]  
         ref[0,0]=(0.0876424200904)/(o+1.)+(-0.0297617092432)+(0.860004136579)*0.5**o  
         ref[0,1]=(-0.37703046074)/(o+1.)+(-0.131306291693)+(-0.934262599682)*0.5**o  
         ref[0,2]=(-0.454146889642)/(o+1.)+(-0.0903205899012)+(-0.524417646775)*0.5**o  
         ref[0,3]=(0.196117385249)/(o+1.)+(0.744641034982)+(0.53752054491)*0.5**o  
         ref[0,4]=(0.35430553025)/(o+1.)+(-0.0130847596698)+(-0.346245303793)*0.5**o  
         ref[1,0]=(-0.503153929692)/(o+1.)+(-0.482911514972)+(0.110897459128)*0.5**o  
         ref[1,1]=(0.956652842652)/(o+1.)+(-0.578941524367)+(0.0773234920212)*0.5**o  
         ref[1,2]=(-0.161152622185)/(o+1.)+(-0.063966095854)+(0.725330064304)*0.5**o  
         ref[1,3]=(0.125957093778)/(o+1.)+(0.0386949396593)+(0.399871656297)*0.5**o  
         ref[1,4]=(-0.71553040823)/(o+1.)+(-0.860712591849)+(0.450333632811)*0.5**o  
         ref[2,0]=(-0.175137342743)/(o+1.)+(-0.708059340158)+(-0.596111663177)*0.5**o  
         ref[2,1]=(0.516359075868)/(o+1.)+(0.27674878059)+(0.219789961005)*0.5**o  
         ref[2,2]=(-0.475802171068)/(o+1.)+(-0.072182257691)+(-0.202978715302)*0.5**o  
         ref[2,3]=(-0.300788565801)/(o+1.)+(0.735784813953)+(0.34431665114)*0.5**o  
         ref[2,4]=(-0.618220314271)/(o+1.)+(0.170215579033)+(-0.482716534989)*0.5**o  
         ref[3,0]=(-0.817231621484)/(o+1.)+(0.734717386696)+(0.323084711653)*0.5**o  
         ref[3,1]=(-0.872776322969)/(o+1.)+(-0.471233340523)+(-0.464413485909)*0.5**o  
         ref[3,2]=(0.211630014364)/(o+1.)+(-0.370456222914)+(-0.920685763376)*0.5**o  
         ref[3,3]=(0.265852072745)/(o+1.)+(0.0558689104915)+(-0.175827412744)*0.5**o  
         ref[3,4]=(-0.747340816778)/(o+1.)+(0.0858242297109)+(-0.99517403847)*0.5**o  
       else:  
         s[0,0]=(0.578101616539)*x[0]**o+(-0.941355465542)*x[0]+(-0.661840086733)*x[1]**o+(-0.574686372209)*x[1]+(-0.488980453488)*x[2]**o+(0.8057154356)*x[2]  
         s[0,1]=(0.188043130009)*x[0]**o+(-0.53795144833)*x[0]+(0.585611542575)*x[1]**o+(-0.394354708911)*x[1]+(-0.753395938984)*x[2]**o+(-0.775038773873)*x[2]  
         s[0,2]=(-0.0069454884707)*x[0]**o+(0.925798676533)*x[0]+(-0.617492289762)*x[1]**o+(-0.412950379597)*x[1]+(0.530650448811)*x[2]**o+(-0.882156765835)*x[2]  
         s[0,3]=(-0.109411491583)*x[0]**o+(0.794417685565)*x[0]+(0.395199315447)*x[1]**o+(0.221963288858)*x[1]+(0.944618017853)*x[2]**o+(0.710576727198)*x[2]  
         s[0,4]=(0.0376370205208)*x[0]**o+(-0.387469327476)*x[0]+(0.989435100596)*x[1]**o+(-0.697198283115)*x[1]+(0.705109597826)*x[2]**o+(0.00235357316422)*x[2]  
         s[1,0]=(-0.861013305772)*x[0]**o+(-0.117175144313)*x[0]+(-0.851114880006)*x[1]**o+(0.830657298231)*x[1]+(0.897872709447)*x[2]**o+(-0.500434787953)*x[2]  
         s[1,1]=(-0.659762659407)*x[0]**o+(-0.293584253789)*x[0]+(-0.549133974878)*x[1]**o+(0.124482383522)*x[1]+(-0.71415106775)*x[2]**o+(-0.452353669527)*x[2]  
         s[1,2]=(-0.944798023011)*x[0]**o+(0.352545190549)*x[0]+(-0.950981266242)*x[1]**o+(-0.338339076366)*x[1]+(-0.385100481358)*x[2]**o+(-0.751511160424)*x[2]  
         s[1,3]=(-0.514889491143)*x[0]**o+(-0.0573778568353)*x[0]+(0.189167569167)*x[1]**o+(-0.122152801538)*x[1]+(-0.075952059447)*x[2]**o+(-0.575271878121)*x[2]  
         s[1,4]=(0.092128759086)*x[0]**o+(-0.391395765897)*x[0]+(0.621302034853)*x[1]**o+(-0.169193910488)*x[1]+(0.895953307228)*x[2]**o+(-0.171715374513)*x[2]  
         s[2,0]=(-0.896341445352)*x[0]**o+(0.55427420625)*x[0]+(-0.68618123058)*x[1]**o+(0.586997200722)*x[1]+(-0.16193062027)*x[2]**o+(0.47614229102)*x[2]  
         s[2,1]=(0.0173555065441)*x[0]**o+(-0.137706680345)*x[0]+(0.124390959958)*x[1]**o+(0.0817218208151)*x[1]+(-0.883487601024)*x[2]**o+(-0.99725370538)*x[2]  
         s[2,2]=(0.653947795759)*x[0]**o+(-0.0561188253491)*x[0]+(-0.304869234336)*x[1]**o+(-0.5647971996)*x[1]+(0.842979371974)*x[2]**o+(0.271112357653)*x[2]  
         s[2,3]=(-0.916870447792)*x[0]**o+(0.532760446169)*x[0]+(0.125531293566)*x[1]**o+(-0.772485238164)*x[1]+(-0.0249888509834)*x[2]**o+(-0.215774489527)*x[2]  
         s[2,4]=(0.82957204564)*x[0]**o+(-0.536668870818)*x[0]+(0.18150637899)*x[1]**o+(0.213776071225)*x[1]+(-0.607190995474)*x[2]**o+(-0.0534051775785)*x[2]  
         s[3,0]=(-0.0156695889369)*x[0]**o+(-0.920483023826)*x[0]+(0.173953779108)*x[1]**o+(0.723326965312)*x[1]+(-0.946445962586)*x[2]**o+(0.242480497946)*x[2]  
         s[3,1]=(0.253546369583)*x[0]**o+(-0.455303700999)*x[0]+(0.265484731924)*x[1]**o+(-0.334855283665)*x[1]+(0.263585801553)*x[2]**o+(0.768099093921)*x[2]  
         s[3,2]=(-0.0884797551735)*x[0]**o+(-0.744966141189)*x[0]+(0.685728482818)*x[1]**o+(-0.700119204761)*x[1]+(-0.996053069429)*x[2]**o+(-0.300758647065)*x[2]  
         s[3,3]=(-0.265221319311)*x[0]**o+(0.119741272443)*x[0]+(0.0623093135308)*x[1]**o+(0.617188763307)*x[1]+(-0.14935010921)*x[2]**o+(0.315030342521)*x[2]  
         s[3,4]=(0.634255080399)*x[0]**o+(0.0848130779284)*x[0]+(-0.262488356592)*x[1]**o+(-0.698599321231)*x[1]+(-0.411566742148)*x[2]**o+(0.307995972853)*x[2]  
         ref[0,0]=(-1.15082054022)/(o+1.)+(-0.355163201075)+(0.578101616539)*0.5**o  
         ref[0,1]=(-0.167784396409)/(o+1.)+(-0.853672465557)+(0.188043130009)*0.5**o  
         ref[0,2]=(-0.0868418409506)/(o+1.)+(-0.18465423445)+(-0.0069454884707)*0.5**o  
         ref[0,3]=(1.3398173333)/(o+1.)+(0.86347885081)+(-0.109411491583)*0.5**o  
         ref[0,4]=(1.69454469842)/(o+1.)+(-0.541157018713)+(0.0376370205208)*0.5**o  
         ref[1,0]=(0.0467578294411)/(o+1.)+(0.106523682982)+(-0.861013305772)*0.5**o  
         ref[1,1]=(-1.26328504263)/(o+1.)+(-0.310727769897)+(-0.659762659407)*0.5**o  
         ref[1,2]=(-1.3360817476)/(o+1.)+(-0.36865252312)+(-0.944798023011)*0.5**o  
         ref[1,3]=(0.11321550972)/(o+1.)+(-0.377401268247)+(-0.514889491143)*0.5**o  
         ref[1,4]=(1.51725534208)/(o+1.)+(-0.366152525449)+(0.092128759086)*0.5**o  
         ref[2,0]=(-0.84811185085)/(o+1.)+(0.808706848996)+(-0.896341445352)*0.5**o  
         ref[2,1]=(-0.759096641066)/(o+1.)+(-0.526619282455)+(0.0173555065441)*0.5**o  
         ref[2,2]=(0.538110137638)/(o+1.)+(-0.174901833648)+(0.653947795759)*0.5**o  
         ref[2,3]=(0.100542442583)/(o+1.)+(-0.227749640761)+(-0.916870447792)*0.5**o  
         ref[2,4]=(-0.425684616484)/(o+1.)+(-0.188148988586)+(0.82957204564)*0.5**o  
         ref[3,0]=(-0.772492183478)/(o+1.)+(0.0226622197163)+(-0.0156695889369)*0.5**o  
         ref[3,1]=(0.529070533478)/(o+1.)+(-0.0110299453715)+(0.253546369583)*0.5**o  
         ref[3,2]=(-0.310324586611)/(o+1.)+(-0.872921996508)+(-0.0884797551735)*0.5**o  
         ref[3,3]=(-0.0870407956792)/(o+1.)+(0.525980189135)+(-0.265221319311)*0.5**o  
         ref[3,4]=(-0.67405509874)/(o+1.)+(-0.152895135225)+(0.634255080399)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(4, 5),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onFunctionOnContactZero_fromSymbol_Solution_rank3(self):  
       """  
       tests integral of rank 3 Symbol on the FunctionOnContactZero  
   
       assumptions: Solution(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=Solution(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(6, 2, 2))  
       s=Data(0,(6, 2, 2),w)  
       ref=numpy.zeros((6, 2, 2),numpy.float_)  
       if dim==2:  
         s[0,0,0]=(-0.970014070821)*x[0]**o+(0.195828821364)*x[0]+(-0.329248582962)*x[1]**o+(0.765729760657)*x[1]  
         s[0,0,1]=(-0.78480276531)*x[0]**o+(0.660249421528)*x[0]+(-0.112211565471)*x[1]**o+(-0.732753874188)*x[1]  
         s[0,1,0]=(-0.610728226383)*x[0]**o+(-0.617391668915)*x[0]+(-0.755934195771)*x[1]**o+(-0.301037750184)*x[1]  
         s[0,1,1]=(-0.271483777605)*x[0]**o+(-0.118144079798)*x[0]+(0.00595756313744)*x[1]**o+(0.00973544005055)*x[1]  
         s[1,0,0]=(-0.880152279586)*x[0]**o+(0.173587205863)*x[0]+(-0.772256433861)*x[1]**o+(-0.929831194333)*x[1]  
         s[1,0,1]=(0.663917147636)*x[0]**o+(0.602039234824)*x[0]+(-0.761663518039)*x[1]**o+(-0.794981650104)*x[1]  
         s[1,1,0]=(0.669982500097)*x[0]**o+(-0.867340940384)*x[0]+(0.425166963846)*x[1]**o+(0.809034058423)*x[1]  
         s[1,1,1]=(-0.748164617999)*x[0]**o+(0.820897422648)*x[0]+(0.282790963068)*x[1]**o+(0.418210593072)*x[1]  
         s[2,0,0]=(-0.151105173252)*x[0]**o+(0.588856734796)*x[0]+(-0.587574498534)*x[1]**o+(0.214690992942)*x[1]  
         s[2,0,1]=(0.846293738229)*x[0]**o+(0.453778324604)*x[0]+(-0.750479939889)*x[1]**o+(0.988318560374)*x[1]  
         s[2,1,0]=(0.0520443817173)*x[0]**o+(0.66477304094)*x[0]+(0.220203729906)*x[1]**o+(0.807678486344)*x[1]  
         s[2,1,1]=(-0.481828231947)*x[0]**o+(0.301163693914)*x[0]+(-0.240012695397)*x[1]**o+(-0.739330362354)*x[1]  
         s[3,0,0]=(-0.464086304345)*x[0]**o+(0.204976865077)*x[0]+(0.360828971652)*x[1]**o+(0.179421383025)*x[1]  
         s[3,0,1]=(0.524003162473)*x[0]**o+(0.241725193779)*x[0]+(0.137006148453)*x[1]**o+(0.122270180832)*x[1]  
         s[3,1,0]=(-0.148537542555)*x[0]**o+(-0.87771789463)*x[0]+(0.776889116646)*x[1]**o+(0.72202598779)*x[1]  
         s[3,1,1]=(-0.0984207735775)*x[0]**o+(-0.200545725506)*x[0]+(-0.422044149217)*x[1]**o+(-0.403374011642)*x[1]  
         s[4,0,0]=(0.332893223127)*x[0]**o+(-0.238038393676)*x[0]+(-0.796376263577)*x[1]**o+(0.059346957422)*x[1]  
         s[4,0,1]=(-0.877726930853)*x[0]**o+(0.287774676493)*x[0]+(-0.690097100077)*x[1]**o+(0.806523530334)*x[1]  
         s[4,1,0]=(-0.466369745006)*x[0]**o+(0.511932688176)*x[0]+(-0.569648246707)*x[1]**o+(-0.180363948019)*x[1]  
         s[4,1,1]=(0.82395338594)*x[0]**o+(0.0423959362879)*x[0]+(-0.508349189015)*x[1]**o+(0.0735939835821)*x[1]  
         s[5,0,0]=(-0.631799410304)*x[0]**o+(0.0828019140935)*x[0]+(0.132222069751)*x[1]**o+(0.716700894256)*x[1]  
         s[5,0,1]=(-0.871739775831)*x[0]**o+(-0.364312533128)*x[0]+(0.660932493381)*x[1]**o+(-0.638799141415)*x[1]  
         s[5,1,0]=(-0.927257402325)*x[0]**o+(-0.745507370225)*x[0]+(0.70647119912)*x[1]**o+(0.583112912025)*x[1]  
         s[5,1,1]=(-0.440675815785)*x[0]**o+(0.292262539618)*x[0]+(0.172815874747)*x[1]**o+(-0.854959570718)*x[1]  
         ref[0,0,0]=(-0.329248582962)/(o+1.)+(0.480779291011)+(-0.970014070821)*0.5**o  
         ref[0,0,1]=(-0.112211565471)/(o+1.)+(-0.0362522263304)+(-0.78480276531)*0.5**o  
         ref[0,1,0]=(-0.755934195771)/(o+1.)+(-0.459214709549)+(-0.610728226383)*0.5**o  
         ref[0,1,1]=(0.00595756313744)/(o+1.)+(-0.0542043198736)+(-0.271483777605)*0.5**o  
         ref[1,0,0]=(-0.772256433861)/(o+1.)+(-0.378121994235)+(-0.880152279586)*0.5**o  
         ref[1,0,1]=(-0.761663518039)/(o+1.)+(-0.0964712076398)+(0.663917147636)*0.5**o  
         ref[1,1,0]=(0.425166963846)/(o+1.)+(-0.0291534409806)+(0.669982500097)*0.5**o  
         ref[1,1,1]=(0.282790963068)/(o+1.)+(0.61955400786)+(-0.748164617999)*0.5**o  
         ref[2,0,0]=(-0.587574498534)/(o+1.)+(0.401773863869)+(-0.151105173252)*0.5**o  
         ref[2,0,1]=(-0.750479939889)/(o+1.)+(0.721048442489)+(0.846293738229)*0.5**o  
         ref[2,1,0]=(0.220203729906)/(o+1.)+(0.736225763642)+(0.0520443817173)*0.5**o  
         ref[2,1,1]=(-0.240012695397)/(o+1.)+(-0.21908333422)+(-0.481828231947)*0.5**o  
         ref[3,0,0]=(0.360828971652)/(o+1.)+(0.192199124051)+(-0.464086304345)*0.5**o  
         ref[3,0,1]=(0.137006148453)/(o+1.)+(0.181997687306)+(0.524003162473)*0.5**o  
         ref[3,1,0]=(0.776889116646)/(o+1.)+(-0.0778459534199)+(-0.148537542555)*0.5**o  
         ref[3,1,1]=(-0.422044149217)/(o+1.)+(-0.301959868574)+(-0.0984207735775)*0.5**o  
         ref[4,0,0]=(-0.796376263577)/(o+1.)+(-0.0893457181268)+(0.332893223127)*0.5**o  
         ref[4,0,1]=(-0.690097100077)/(o+1.)+(0.547149103413)+(-0.877726930853)*0.5**o  
         ref[4,1,0]=(-0.569648246707)/(o+1.)+(0.165784370078)+(-0.466369745006)*0.5**o  
         ref[4,1,1]=(-0.508349189015)/(o+1.)+(0.057994959935)+(0.82395338594)*0.5**o  
         ref[5,0,0]=(0.132222069751)/(o+1.)+(0.399751404175)+(-0.631799410304)*0.5**o  
         ref[5,0,1]=(0.660932493381)/(o+1.)+(-0.501555837272)+(-0.871739775831)*0.5**o  
         ref[5,1,0]=(0.70647119912)/(o+1.)+(-0.0811972291003)+(-0.927257402325)*0.5**o  
         ref[5,1,1]=(0.172815874747)/(o+1.)+(-0.28134851555)+(-0.440675815785)*0.5**o  
       else:  
         s[0,0,0]=(-0.565533896373)*x[0]**o+(-0.0872485111367)*x[0]+(-0.283353388539)*x[1]**o+(-0.152989536217)*x[1]+(-0.444002969358)*x[2]**o+(0.670423385061)*x[2]  
         s[0,0,1]=(-0.0944154284688)*x[0]**o+(-0.884982028889)*x[0]+(0.79965600284)*x[1]**o+(-0.422245813699)*x[1]+(-0.479173724334)*x[2]**o+(-0.726826676767)*x[2]  
         s[0,1,0]=(0.789722540135)*x[0]**o+(-0.0774752885776)*x[0]+(-0.95515742871)*x[1]**o+(0.300583198538)*x[1]+(0.485489410617)*x[2]**o+(-0.303592354814)*x[2]  
         s[0,1,1]=(0.652206005345)*x[0]**o+(0.90387230638)*x[0]+(-0.943316098191)*x[1]**o+(-0.600569529668)*x[1]+(-0.157071495888)*x[2]**o+(0.289655248779)*x[2]  
         s[1,0,0]=(0.963881471424)*x[0]**o+(-0.67090862423)*x[0]+(-0.56250637167)*x[1]**o+(0.432938287823)*x[1]+(0.632690957193)*x[2]**o+(0.437978271014)*x[2]  
         s[1,0,1]=(0.211364301181)*x[0]**o+(-0.482725619403)*x[0]+(0.818668277765)*x[1]**o+(-0.202108275895)*x[1]+(0.38755788328)*x[2]**o+(0.315009480388)*x[2]  
         s[1,1,0]=(-0.931623738361)*x[0]**o+(0.865171378595)*x[0]+(0.983563036962)*x[1]**o+(-0.674022850075)*x[1]+(-0.743850008639)*x[2]**o+(-0.666081693537)*x[2]  
         s[1,1,1]=(0.00368798622506)*x[0]**o+(0.431757463365)*x[0]+(-0.348566468597)*x[1]**o+(0.451792881229)*x[1]+(-0.380511811466)*x[2]**o+(0.850391058252)*x[2]  
         s[2,0,0]=(0.0418268780255)*x[0]**o+(0.749915304085)*x[0]+(0.155766457341)*x[1]**o+(0.782071885494)*x[1]+(-0.539808510551)*x[2]**o+(0.483245601178)*x[2]  
         s[2,0,1]=(-0.460744056666)*x[0]**o+(0.124701348548)*x[0]+(-0.703875182049)*x[1]**o+(0.796527478381)*x[1]+(-0.221938800568)*x[2]**o+(0.971830341802)*x[2]  
         s[2,1,0]=(0.53954548965)*x[0]**o+(0.0162996837218)*x[0]+(0.142104929682)*x[1]**o+(-0.971657840256)*x[1]+(-0.503179671457)*x[2]**o+(-0.542014263985)*x[2]  
         s[2,1,1]=(0.908980902057)*x[0]**o+(-0.502995849973)*x[0]+(-0.306045266955)*x[1]**o+(0.663346607536)*x[1]+(-0.350114579334)*x[2]**o+(0.576410602991)*x[2]  
         s[3,0,0]=(0.813242844535)*x[0]**o+(-0.373751247405)*x[0]+(-0.155529865713)*x[1]**o+(-0.757860853884)*x[1]+(0.834637852603)*x[2]**o+(0.909806811712)*x[2]  
         s[3,0,1]=(-0.287829796913)*x[0]**o+(-0.521503208519)*x[0]+(0.373235117298)*x[1]**o+(0.820819656976)*x[1]+(0.666911247106)*x[2]**o+(-0.0367218914776)*x[2]  
         s[3,1,0]=(0.432791246384)*x[0]**o+(0.958703389048)*x[0]+(0.964027641291)*x[1]**o+(0.546429571768)*x[1]+(-0.299474553396)*x[2]**o+(-0.699665640827)*x[2]  
         s[3,1,1]=(0.728884851779)*x[0]**o+(0.650980056729)*x[0]+(0.133592857822)*x[1]**o+(0.693391334869)*x[1]+(-0.836602488593)*x[2]**o+(-0.442753441073)*x[2]  
         s[4,0,0]=(0.833243436386)*x[0]**o+(0.980178093504)*x[0]+(-0.819050787144)*x[1]**o+(0.797889271257)*x[1]+(-0.723026474407)*x[2]**o+(0.783764698489)*x[2]  
         s[4,0,1]=(-0.452251186626)*x[0]**o+(-0.627980945947)*x[0]+(-0.462394480861)*x[1]**o+(-0.591297748282)*x[1]+(-0.630289931985)*x[2]**o+(0.495939505391)*x[2]  
         s[4,1,0]=(-0.774984503568)*x[0]**o+(0.635843202085)*x[0]+(0.835305935226)*x[1]**o+(-0.0209656725511)*x[1]+(0.257099035711)*x[2]**o+(-0.735192237148)*x[2]  
         s[4,1,1]=(0.919373693068)*x[0]**o+(0.38072204474)*x[0]+(-0.92955685309)*x[1]**o+(-0.145126274743)*x[1]+(-0.50004893122)*x[2]**o+(-0.252139341208)*x[2]  
         s[5,0,0]=(0.802245464817)*x[0]**o+(0.617146384769)*x[0]+(0.0802760805435)*x[1]**o+(-0.698667208547)*x[1]+(-0.531164225022)*x[2]**o+(-0.761354857435)*x[2]  
         s[5,0,1]=(-0.400952829207)*x[0]**o+(0.605414258928)*x[0]+(0.563769114393)*x[1]**o+(0.952187363261)*x[1]+(-0.539409233701)*x[2]**o+(-0.680444521941)*x[2]  
         s[5,1,0]=(0.0304057674653)*x[0]**o+(0.190919897349)*x[0]+(-0.812827460152)*x[1]**o+(0.822295166707)*x[1]+(0.678796730302)*x[2]**o+(-0.648229118268)*x[2]  
         s[5,1,1]=(0.644695792666)*x[0]**o+(-0.0232924889471)*x[0]+(0.294470818979)*x[1]**o+(0.626411257894)*x[1]+(-0.453808003683)*x[2]**o+(0.89191417949)*x[2]  
         ref[0,0,0]=(-0.727356357898)/(o+1.)+(0.215092668853)+(-0.565533896373)*0.5**o  
         ref[0,0,1]=(0.320482278506)/(o+1.)+(-1.01702725968)+(-0.0944154284688)*0.5**o  
         ref[0,1,0]=(-0.469668018093)/(o+1.)+(-0.0402422224272)+(0.789722540135)*0.5**o  
         ref[0,1,1]=(-1.10038759408)/(o+1.)+(0.296479012746)+(0.652206005345)*0.5**o  
         ref[1,0,0]=(0.0701845855234)/(o+1.)+(0.100003967304)+(0.963881471424)*0.5**o  
         ref[1,0,1]=(1.20622616105)/(o+1.)+(-0.184912207455)+(0.211364301181)*0.5**o  
         ref[1,1,0]=(0.239713028324)/(o+1.)+(-0.237466582508)+(-0.931623738361)*0.5**o  
         ref[1,1,1]=(-0.729078280063)/(o+1.)+(0.866970701424)+(0.00368798622506)*0.5**o  
         ref[2,0,0]=(-0.38404205321)/(o+1.)+(1.00761639538)+(0.0418268780255)*0.5**o  
         ref[2,0,1]=(-0.925813982617)/(o+1.)+(0.946529584366)+(-0.460744056666)*0.5**o  
         ref[2,1,0]=(-0.361074741775)/(o+1.)+(-0.74868621026)+(0.53954548965)*0.5**o  
         ref[2,1,1]=(-0.656159846289)/(o+1.)+(0.368380680277)+(0.908980902057)*0.5**o  
         ref[3,0,0]=(0.67910798689)/(o+1.)+(-0.110902644788)+(0.813242844535)*0.5**o  
         ref[3,0,1]=(1.0401463644)/(o+1.)+(0.13129727849)+(-0.287829796913)*0.5**o  
         ref[3,1,0]=(0.664553087895)/(o+1.)+(0.402733659994)+(0.432791246384)*0.5**o  
         ref[3,1,1]=(-0.703009630771)/(o+1.)+(0.450808975263)+(0.728884851779)*0.5**o  
         ref[4,0,0]=(-1.54207726155)/(o+1.)+(1.28091603163)+(0.833243436386)*0.5**o  
         ref[4,0,1]=(-1.09268441285)/(o+1.)+(-0.361669594419)+(-0.452251186626)*0.5**o  
         ref[4,1,0]=(1.09240497094)/(o+1.)+(-0.0601573538071)+(-0.774984503568)*0.5**o  
         ref[4,1,1]=(-1.42960578431)/(o+1.)+(-0.00827178560514)+(0.919373693068)*0.5**o  
         ref[5,0,0]=(-0.450888144479)/(o+1.)+(-0.421437840607)+(0.802245464817)*0.5**o  
         ref[5,0,1]=(0.0243598806918)/(o+1.)+(0.438578550124)+(-0.400952829207)*0.5**o  
         ref[5,1,0]=(-0.13403072985)/(o+1.)+(0.182492972894)+(0.0304057674653)*0.5**o  
         ref[5,1,1]=(-0.159337184705)/(o+1.)+(0.747516474218)+(0.644695792666)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(6, 2, 2),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onFunctionOnContactZero_fromSymbol_Solution_rank4(self):  
       """  
       tests integral of rank 4 Symbol on the FunctionOnContactZero  
   
       assumptions: Solution(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=Solution(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(4, 5, 3, 2))  
       s=Data(0,(4, 5, 3, 2),w)  
       ref=numpy.zeros((4, 5, 3, 2),numpy.float_)  
       if dim==2:  
         s[0,0,0,0]=(0.0390601545717)*x[0]**o+(-0.222613292224)*x[0]+(0.246692793786)*x[1]**o+(-0.0199554145217)*x[1]  
         s[0,0,0,1]=(0.608816949634)*x[0]**o+(0.840495963273)*x[0]+(-0.986136095398)*x[1]**o+(0.16852755525)*x[1]  
         s[0,0,1,0]=(0.580621174141)*x[0]**o+(-0.931460241997)*x[0]+(0.725705948245)*x[1]**o+(0.0239157549247)*x[1]  
         s[0,0,1,1]=(0.388567471102)*x[0]**o+(0.311382975022)*x[0]+(-0.376543304375)*x[1]**o+(-0.859691633345)*x[1]  
         s[0,0,2,0]=(-0.692988033922)*x[0]**o+(-0.059082135717)*x[0]+(-0.088525361736)*x[1]**o+(-0.435255796923)*x[1]  
         s[0,0,2,1]=(0.274277434778)*x[0]**o+(0.783272547433)*x[0]+(-0.380234357131)*x[1]**o+(-0.355490082493)*x[1]  
         s[0,1,0,0]=(-0.802394756916)*x[0]**o+(-0.352698691101)*x[0]+(0.335411545595)*x[1]**o+(0.558556090302)*x[1]  
         s[0,1,0,1]=(0.174271017656)*x[0]**o+(-0.442785108924)*x[0]+(0.178161299328)*x[1]**o+(-0.18823731442)*x[1]  
         s[0,1,1,0]=(-0.598879030318)*x[0]**o+(0.373869209105)*x[0]+(0.589565043365)*x[1]**o+(-0.62976640408)*x[1]  
         s[0,1,1,1]=(-0.667493955405)*x[0]**o+(0.998759793079)*x[0]+(-0.743341570183)*x[1]**o+(-0.0859848525819)*x[1]  
         s[0,1,2,0]=(0.47631386081)*x[0]**o+(0.0151722662021)*x[0]+(0.899075872977)*x[1]**o+(0.0678095622752)*x[1]  
         s[0,1,2,1]=(-0.497833539416)*x[0]**o+(0.00600269705464)*x[0]+(-0.541353591572)*x[1]**o+(0.0705426009397)*x[1]  
         s[0,2,0,0]=(-0.735607995943)*x[0]**o+(0.921942121227)*x[0]+(-0.697588210675)*x[1]**o+(-0.555902048922)*x[1]  
         s[0,2,0,1]=(0.705776536011)*x[0]**o+(0.202303757789)*x[0]+(-0.630771158486)*x[1]**o+(-0.0166043126446)*x[1]  
         s[0,2,1,0]=(-0.975134219189)*x[0]**o+(0.566584421811)*x[0]+(0.315121166158)*x[1]**o+(-0.952791171948)*x[1]  
         s[0,2,1,1]=(-0.43751086407)*x[0]**o+(0.793023085525)*x[0]+(-0.471199351714)*x[1]**o+(0.227828159087)*x[1]  
         s[0,2,2,0]=(0.526770705207)*x[0]**o+(-0.779856515281)*x[0]+(0.433608622434)*x[1]**o+(0.45679766746)*x[1]  
         s[0,2,2,1]=(-0.418834628035)*x[0]**o+(0.325385358616)*x[0]+(0.0493546850323)*x[1]**o+(-0.611087977891)*x[1]  
         s[0,3,0,0]=(0.302691082154)*x[0]**o+(-0.0840254373723)*x[0]+(0.235788766456)*x[1]**o+(0.00697145365732)*x[1]  
         s[0,3,0,1]=(-0.400507082213)*x[0]**o+(0.922575813908)*x[0]+(0.653142282067)*x[1]**o+(-0.819060793296)*x[1]  
         s[0,3,1,0]=(-0.542123872101)*x[0]**o+(-0.386997884801)*x[0]+(-0.0222151576861)*x[1]**o+(-0.914062036349)*x[1]  
         s[0,3,1,1]=(0.0629454961983)*x[0]**o+(0.953558638015)*x[0]+(-0.977561971438)*x[1]**o+(-0.3034113517)*x[1]  
         s[0,3,2,0]=(0.088224801816)*x[0]**o+(-0.0370702186771)*x[0]+(0.094320839406)*x[1]**o+(-0.342299582748)*x[1]  
         s[0,3,2,1]=(0.976917465786)*x[0]**o+(-0.528174142655)*x[0]+(-0.387883052017)*x[1]**o+(-0.631752291799)*x[1]  
         s[0,4,0,0]=(-0.468335475351)*x[0]**o+(-0.565555734167)*x[0]+(-0.308997447406)*x[1]**o+(-0.747826956462)*x[1]  
         s[0,4,0,1]=(0.069233902558)*x[0]**o+(-0.646481367913)*x[0]+(-0.978900933671)*x[1]**o+(0.743358367572)*x[1]  
         s[0,4,1,0]=(0.192177279681)*x[0]**o+(0.443905094115)*x[0]+(-0.687749538927)*x[1]**o+(-0.0130016040578)*x[1]  
         s[0,4,1,1]=(0.336586630924)*x[0]**o+(0.952526894755)*x[0]+(-0.32776980948)*x[1]**o+(-0.46574155251)*x[1]  
         s[0,4,2,0]=(0.635240845083)*x[0]**o+(-0.694619696795)*x[0]+(0.184107273061)*x[1]**o+(-0.102554433435)*x[1]  
         s[0,4,2,1]=(0.392781256576)*x[0]**o+(0.962026661797)*x[0]+(0.657049172645)*x[1]**o+(0.462113010746)*x[1]  
         s[1,0,0,0]=(0.188456710847)*x[0]**o+(0.835668677088)*x[0]+(0.379822929854)*x[1]**o+(-0.864958528812)*x[1]  
         s[1,0,0,1]=(-0.910686394304)*x[0]**o+(-0.323019307138)*x[0]+(0.339165812738)*x[1]**o+(0.651547968842)*x[1]  
         s[1,0,1,0]=(0.0133563994025)*x[0]**o+(-0.931707806441)*x[0]+(0.473665399577)*x[1]**o+(-0.626120577625)*x[1]  
         s[1,0,1,1]=(0.19107514064)*x[0]**o+(-0.462202695026)*x[0]+(0.46369841557)*x[1]**o+(-0.253328976575)*x[1]  
         s[1,0,2,0]=(0.179414794128)*x[0]**o+(-0.809074596595)*x[0]+(0.128452495995)*x[1]**o+(-0.501454759976)*x[1]  
         s[1,0,2,1]=(0.507586792052)*x[0]**o+(-0.448027963861)*x[0]+(0.244339731125)*x[1]**o+(0.506838949931)*x[1]  
         s[1,1,0,0]=(0.0515340520755)*x[0]**o+(-0.554979125841)*x[0]+(0.508215404195)*x[1]**o+(-0.880450798699)*x[1]  
         s[1,1,0,1]=(0.149995895729)*x[0]**o+(0.207292493123)*x[0]+(-0.0719243226652)*x[1]**o+(-0.9540219098)*x[1]  
         s[1,1,1,0]=(-0.298918981626)*x[0]**o+(0.90891772564)*x[0]+(0.0457980649267)*x[1]**o+(-0.266285753328)*x[1]  
         s[1,1,1,1]=(-0.833495545848)*x[0]**o+(0.902967001807)*x[0]+(0.103572135419)*x[1]**o+(-0.262026617122)*x[1]  
         s[1,1,2,0]=(0.381644351387)*x[0]**o+(0.77834766803)*x[0]+(-0.785664720197)*x[1]**o+(0.678219935866)*x[1]  
         s[1,1,2,1]=(0.589726138962)*x[0]**o+(-0.794897130021)*x[0]+(0.0749818396161)*x[1]**o+(0.818217309223)*x[1]  
         s[1,2,0,0]=(0.648262414915)*x[0]**o+(0.737500663109)*x[0]+(0.714248701071)*x[1]**o+(-0.306480036057)*x[1]  
         s[1,2,0,1]=(0.154336156671)*x[0]**o+(0.988237826231)*x[0]+(0.186782608772)*x[1]**o+(-0.29179239454)*x[1]  
         s[1,2,1,0]=(0.631907675013)*x[0]**o+(-0.297341493926)*x[0]+(-0.159116807039)*x[1]**o+(-0.435773119414)*x[1]  
         s[1,2,1,1]=(-0.150281595818)*x[0]**o+(0.00593213086215)*x[0]+(0.995323329778)*x[1]**o+(0.978446533527)*x[1]  
         s[1,2,2,0]=(0.15122501321)*x[0]**o+(0.781060971949)*x[0]+(0.945042808379)*x[1]**o+(-0.236073537251)*x[1]  
         s[1,2,2,1]=(0.490853599647)*x[0]**o+(0.70560372132)*x[0]+(0.518228280852)*x[1]**o+(0.00359879318509)*x[1]  
         s[1,3,0,0]=(-0.868069831372)*x[0]**o+(-0.808015513984)*x[0]+(-0.99302787628)*x[1]**o+(0.643430993188)*x[1]  
         s[1,3,0,1]=(-0.540392753009)*x[0]**o+(0.412535909714)*x[0]+(-0.691622353639)*x[1]**o+(-0.726320722169)*x[1]  
         s[1,3,1,0]=(-0.38171518034)*x[0]**o+(0.574401211179)*x[0]+(0.239758390058)*x[1]**o+(0.667920000788)*x[1]  
         s[1,3,1,1]=(0.405015772479)*x[0]**o+(0.871607122253)*x[0]+(0.875356104271)*x[1]**o+(0.571089711154)*x[1]  
         s[1,3,2,0]=(-0.859288591023)*x[0]**o+(0.0495016165977)*x[0]+(0.652544093354)*x[1]**o+(-0.950289461543)*x[1]  
         s[1,3,2,1]=(-0.385753789824)*x[0]**o+(-0.929231955794)*x[0]+(-0.266920992105)*x[1]**o+(-0.170089958141)*x[1]  
         s[1,4,0,0]=(0.248320342844)*x[0]**o+(-0.193177840651)*x[0]+(-0.974008625555)*x[1]**o+(0.19289653706)*x[1]  
         s[1,4,0,1]=(-0.408988831595)*x[0]**o+(-0.753769725549)*x[0]+(-0.890410564837)*x[1]**o+(-0.574271841364)*x[1]  
         s[1,4,1,0]=(-0.637267396746)*x[0]**o+(-0.270785389868)*x[0]+(0.272797445173)*x[1]**o+(-0.495088539306)*x[1]  
         s[1,4,1,1]=(-0.711284122459)*x[0]**o+(0.635952871792)*x[0]+(-0.0849564635014)*x[1]**o+(-0.227419456586)*x[1]  
         s[1,4,2,0]=(0.194861831786)*x[0]**o+(0.52267182066)*x[0]+(0.396913284632)*x[1]**o+(0.446135337457)*x[1]  
         s[1,4,2,1]=(-0.111812571843)*x[0]**o+(0.919973056019)*x[0]+(0.954568821795)*x[1]**o+(-0.410846336745)*x[1]  
         s[2,0,0,0]=(0.149006416722)*x[0]**o+(-0.254413162151)*x[0]+(0.66590243332)*x[1]**o+(0.28412642191)*x[1]  
         s[2,0,0,1]=(-0.788828642343)*x[0]**o+(-0.384244929105)*x[0]+(-0.115430427081)*x[1]**o+(-0.670217327178)*x[1]  
         s[2,0,1,0]=(0.598185590774)*x[0]**o+(-0.593162615988)*x[0]+(-0.247117069506)*x[1]**o+(-0.545724450495)*x[1]  
         s[2,0,1,1]=(-0.945230420194)*x[0]**o+(-0.158557029333)*x[0]+(-0.628357637608)*x[1]**o+(-0.516938772751)*x[1]  
         s[2,0,2,0]=(0.184549704327)*x[0]**o+(-0.753954168024)*x[0]+(-0.43734992018)*x[1]**o+(-0.767428538976)*x[1]  
         s[2,0,2,1]=(-0.897896267578)*x[0]**o+(0.782159121394)*x[0]+(0.926088436529)*x[1]**o+(-0.922666911396)*x[1]  
         s[2,1,0,0]=(-0.0375376932325)*x[0]**o+(-0.648996277693)*x[0]+(0.163113306006)*x[1]**o+(0.326391594556)*x[1]  
         s[2,1,0,1]=(-0.603507455453)*x[0]**o+(-0.227212072795)*x[0]+(0.762838138451)*x[1]**o+(0.784904636664)*x[1]  
         s[2,1,1,0]=(-0.250121932289)*x[0]**o+(0.820330134347)*x[0]+(0.954063036094)*x[1]**o+(-0.0944681705347)*x[1]  
         s[2,1,1,1]=(0.0147284052497)*x[0]**o+(0.214839823184)*x[0]+(-0.932724945971)*x[1]**o+(0.723405207766)*x[1]  
         s[2,1,2,0]=(-0.832131948289)*x[0]**o+(-0.361716015855)*x[0]+(-0.648739038507)*x[1]**o+(-0.825135489955)*x[1]  
         s[2,1,2,1]=(-0.809460903823)*x[0]**o+(0.219025460406)*x[0]+(-0.399288944386)*x[1]**o+(-0.443923619258)*x[1]  
         s[2,2,0,0]=(0.851821921349)*x[0]**o+(0.864789449232)*x[0]+(-0.146472829559)*x[1]**o+(-0.13802610172)*x[1]  
         s[2,2,0,1]=(0.145872642324)*x[0]**o+(-0.53737681799)*x[0]+(-0.262458059774)*x[1]**o+(-0.865100768157)*x[1]  
         s[2,2,1,0]=(-0.97150697777)*x[0]**o+(0.74271566101)*x[0]+(-0.941540320886)*x[1]**o+(-0.992417829758)*x[1]  
         s[2,2,1,1]=(0.705001677542)*x[0]**o+(-0.464736083815)*x[0]+(0.725341857111)*x[1]**o+(-0.350205035943)*x[1]  
         s[2,2,2,0]=(-0.405826604429)*x[0]**o+(0.741314043354)*x[0]+(-0.797706422949)*x[1]**o+(0.177373453057)*x[1]  
         s[2,2,2,1]=(-0.338189348522)*x[0]**o+(-0.933697184604)*x[0]+(-0.381859891282)*x[1]**o+(0.0825590545614)*x[1]  
         s[2,3,0,0]=(-0.532343324478)*x[0]**o+(-0.425963751562)*x[0]+(0.306014483173)*x[1]**o+(-0.886115500167)*x[1]  
         s[2,3,0,1]=(0.384975538101)*x[0]**o+(0.198217241539)*x[0]+(0.939876357973)*x[1]**o+(-0.227463489114)*x[1]  
         s[2,3,1,0]=(0.39221893978)*x[0]**o+(-0.173675431821)*x[0]+(0.929829286228)*x[1]**o+(0.643170164534)*x[1]  
         s[2,3,1,1]=(-0.706521549808)*x[0]**o+(-0.6114595264)*x[0]+(0.207625492571)*x[1]**o+(0.262958323309)*x[1]  
         s[2,3,2,0]=(0.464449153296)*x[0]**o+(-0.438225086666)*x[0]+(-0.463914786644)*x[1]**o+(0.532074329884)*x[1]  
         s[2,3,2,1]=(-0.755612237619)*x[0]**o+(0.450659729492)*x[0]+(0.265758298887)*x[1]**o+(0.0352759835818)*x[1]  
         s[2,4,0,0]=(-0.913101029308)*x[0]**o+(-0.244134313945)*x[0]+(0.347084253405)*x[1]**o+(0.84625762348)*x[1]  
         s[2,4,0,1]=(-0.261381262076)*x[0]**o+(-0.0817994875895)*x[0]+(0.870579357546)*x[1]**o+(-0.917318949068)*x[1]  
         s[2,4,1,0]=(-0.128568967272)*x[0]**o+(0.732248131756)*x[0]+(0.414206585164)*x[1]**o+(0.659941361833)*x[1]  
         s[2,4,1,1]=(0.924901584611)*x[0]**o+(0.592074499154)*x[0]+(0.681628131999)*x[1]**o+(0.167953983361)*x[1]  
         s[2,4,2,0]=(0.409615949394)*x[0]**o+(-0.902690757356)*x[0]+(0.577674551804)*x[1]**o+(0.0220011629429)*x[1]  
         s[2,4,2,1]=(0.382356012027)*x[0]**o+(-0.423633937718)*x[0]+(-0.592574898322)*x[1]**o+(0.183184987952)*x[1]  
         s[3,0,0,0]=(-0.254267267009)*x[0]**o+(-0.665177288859)*x[0]+(-0.666690913098)*x[1]**o+(-0.433935909161)*x[1]  
         s[3,0,0,1]=(-0.672935968283)*x[0]**o+(-0.862578688926)*x[0]+(-0.431014198736)*x[1]**o+(-0.950634125485)*x[1]  
         s[3,0,1,0]=(0.198586757881)*x[0]**o+(0.654459371747)*x[0]+(0.768197508919)*x[1]**o+(-0.911430651255)*x[1]  
         s[3,0,1,1]=(0.835596691179)*x[0]**o+(0.662532614321)*x[0]+(0.64745394627)*x[1]**o+(-0.177665076446)*x[1]  
         s[3,0,2,0]=(-0.60108209247)*x[0]**o+(0.104120238589)*x[0]+(0.478363486403)*x[1]**o+(0.60998776125)*x[1]  
         s[3,0,2,1]=(-0.632653025461)*x[0]**o+(0.415693475381)*x[0]+(-0.0139161976239)*x[1]**o+(-0.486360398365)*x[1]  
         s[3,1,0,0]=(-0.216238961155)*x[0]**o+(0.605030211804)*x[0]+(-0.894286771395)*x[1]**o+(-0.738005399203)*x[1]  
         s[3,1,0,1]=(0.453465128819)*x[0]**o+(-0.958353730943)*x[0]+(-0.191303802435)*x[1]**o+(-0.403969790319)*x[1]  
         s[3,1,1,0]=(-0.371601120889)*x[0]**o+(-0.000506485761004)*x[0]+(0.128347107042)*x[1]**o+(-0.617448247517)*x[1]  
         s[3,1,1,1]=(-0.492741845463)*x[0]**o+(0.114070742237)*x[0]+(0.968707420077)*x[1]**o+(0.897709784012)*x[1]  
         s[3,1,2,0]=(-0.774958662409)*x[0]**o+(0.712770979439)*x[0]+(0.825889537824)*x[1]**o+(0.73040987218)*x[1]  
         s[3,1,2,1]=(0.412550829295)*x[0]**o+(-0.861820540337)*x[0]+(-0.64322990825)*x[1]**o+(0.262526540471)*x[1]  
         s[3,2,0,0]=(-0.543691366072)*x[0]**o+(0.685553656644)*x[0]+(0.65968803389)*x[1]**o+(0.664750334284)*x[1]  
         s[3,2,0,1]=(0.428045943755)*x[0]**o+(-0.140247368953)*x[0]+(0.380175178975)*x[1]**o+(-0.467518419036)*x[1]  
         s[3,2,1,0]=(-0.389824098536)*x[0]**o+(-0.276525222589)*x[0]+(0.147155465185)*x[1]**o+(0.976584972227)*x[1]  
         s[3,2,1,1]=(-0.801779406727)*x[0]**o+(-0.265379451805)*x[0]+(-0.515076806975)*x[1]**o+(0.436497310193)*x[1]  
         s[3,2,2,0]=(0.484267483123)*x[0]**o+(0.17147902302)*x[0]+(0.386200975176)*x[1]**o+(-0.467212146867)*x[1]  
         s[3,2,2,1]=(0.508871274459)*x[0]**o+(-0.819775442961)*x[0]+(0.662298902936)*x[1]**o+(-0.680488821518)*x[1]  
         s[3,3,0,0]=(-0.268312881659)*x[0]**o+(0.879490107736)*x[0]+(-0.0144262822452)*x[1]**o+(-0.71519934726)*x[1]  
         s[3,3,0,1]=(-0.790430004852)*x[0]**o+(-0.532618460762)*x[0]+(0.253908480901)*x[1]**o+(-0.909634079731)*x[1]  
         s[3,3,1,0]=(0.0137346713747)*x[0]**o+(-0.385222519657)*x[0]+(-0.217309505922)*x[1]**o+(-0.488231851176)*x[1]  
         s[3,3,1,1]=(-0.0284395764434)*x[0]**o+(0.604128820394)*x[0]+(0.459487518143)*x[1]**o+(0.0415640328609)*x[1]  
         s[3,3,2,0]=(-0.162643181454)*x[0]**o+(0.998506598628)*x[0]+(0.772502162236)*x[1]**o+(0.0667163114862)*x[1]  
         s[3,3,2,1]=(0.623630922274)*x[0]**o+(0.148711722927)*x[0]+(-0.161606838558)*x[1]**o+(0.156709490526)*x[1]  
         s[3,4,0,0]=(-0.30946349425)*x[0]**o+(0.0987044449972)*x[0]+(0.620328824713)*x[1]**o+(0.212795150211)*x[1]  
         s[3,4,0,1]=(-0.431480440685)*x[0]**o+(-0.000853814120948)*x[0]+(0.322994919175)*x[1]**o+(-0.444398394184)*x[1]  
         s[3,4,1,0]=(0.768816881062)*x[0]**o+(-0.148697199679)*x[0]+(0.676778413386)*x[1]**o+(0.58721092116)*x[1]  
         s[3,4,1,1]=(0.642322282841)*x[0]**o+(-0.863985751359)*x[0]+(-0.030305847597)*x[1]**o+(0.16420798613)*x[1]  
         s[3,4,2,0]=(-0.652491180967)*x[0]**o+(-0.455511531309)*x[0]+(0.739317807968)*x[1]**o+(-0.299398746891)*x[1]  
         s[3,4,2,1]=(-0.934623810452)*x[0]**o+(0.0755256471511)*x[0]+(-0.573554337332)*x[1]**o+(0.940012415898)*x[1]  
         ref[0,0,0,0]=(0.246692793786)/(o+1.)+(-0.121284353373)+(0.0390601545717)*0.5**o  
         ref[0,0,0,1]=(-0.986136095398)/(o+1.)+(0.504511759262)+(0.608816949634)*0.5**o  
         ref[0,0,1,0]=(0.725705948245)/(o+1.)+(-0.453772243536)+(0.580621174141)*0.5**o  
         ref[0,0,1,1]=(-0.376543304375)/(o+1.)+(-0.274154329162)+(0.388567471102)*0.5**o  
         ref[0,0,2,0]=(-0.088525361736)/(o+1.)+(-0.24716896632)+(-0.692988033922)*0.5**o  
         ref[0,0,2,1]=(-0.380234357131)/(o+1.)+(0.21389123247)+(0.274277434778)*0.5**o  
         ref[0,1,0,0]=(0.335411545595)/(o+1.)+(0.1029286996)+(-0.802394756916)*0.5**o  
         ref[0,1,0,1]=(0.178161299328)/(o+1.)+(-0.315511211672)+(0.174271017656)*0.5**o  
         ref[0,1,1,0]=(0.589565043365)/(o+1.)+(-0.127948597487)+(-0.598879030318)*0.5**o  
         ref[0,1,1,1]=(-0.743341570183)/(o+1.)+(0.456387470249)+(-0.667493955405)*0.5**o  
         ref[0,1,2,0]=(0.899075872977)/(o+1.)+(0.0414909142386)+(0.47631386081)*0.5**o  
         ref[0,1,2,1]=(-0.541353591572)/(o+1.)+(0.0382726489972)+(-0.497833539416)*0.5**o  
         ref[0,2,0,0]=(-0.697588210675)/(o+1.)+(0.183020036152)+(-0.735607995943)*0.5**o  
         ref[0,2,0,1]=(-0.630771158486)/(o+1.)+(0.0928497225723)+(0.705776536011)*0.5**o  
         ref[0,2,1,0]=(0.315121166158)/(o+1.)+(-0.193103375068)+(-0.975134219189)*0.5**o  
         ref[0,2,1,1]=(-0.471199351714)/(o+1.)+(0.510425622306)+(-0.43751086407)*0.5**o  
         ref[0,2,2,0]=(0.433608622434)/(o+1.)+(-0.16152942391)+(0.526770705207)*0.5**o  
         ref[0,2,2,1]=(0.0493546850323)/(o+1.)+(-0.142851309637)+(-0.418834628035)*0.5**o  
         ref[0,3,0,0]=(0.235788766456)/(o+1.)+(-0.0385269918575)+(0.302691082154)*0.5**o  
         ref[0,3,0,1]=(0.653142282067)/(o+1.)+(0.0517575103062)+(-0.400507082213)*0.5**o  
         ref[0,3,1,0]=(-0.0222151576861)/(o+1.)+(-0.650529960575)+(-0.542123872101)*0.5**o  
         ref[0,3,1,1]=(-0.977561971438)/(o+1.)+(0.325073643158)+(0.0629454961983)*0.5**o  
         ref[0,3,2,0]=(0.094320839406)/(o+1.)+(-0.189684900712)+(0.088224801816)*0.5**o  
         ref[0,3,2,1]=(-0.387883052017)/(o+1.)+(-0.579963217227)+(0.976917465786)*0.5**o  
         ref[0,4,0,0]=(-0.308997447406)/(o+1.)+(-0.656691345314)+(-0.468335475351)*0.5**o  
         ref[0,4,0,1]=(-0.978900933671)/(o+1.)+(0.0484384998298)+(0.069233902558)*0.5**o  
         ref[0,4,1,0]=(-0.687749538927)/(o+1.)+(0.215451745029)+(0.192177279681)*0.5**o  
         ref[0,4,1,1]=(-0.32776980948)/(o+1.)+(0.243392671122)+(0.336586630924)*0.5**o  
         ref[0,4,2,0]=(0.184107273061)/(o+1.)+(-0.398587065115)+(0.635240845083)*0.5**o  
         ref[0,4,2,1]=(0.657049172645)/(o+1.)+(0.712069836271)+(0.392781256576)*0.5**o  
         ref[1,0,0,0]=(0.379822929854)/(o+1.)+(-0.014644925862)+(0.188456710847)*0.5**o  
         ref[1,0,0,1]=(0.339165812738)/(o+1.)+(0.164264330852)+(-0.910686394304)*0.5**o  
         ref[1,0,1,0]=(0.473665399577)/(o+1.)+(-0.778914192033)+(0.0133563994025)*0.5**o  
         ref[1,0,1,1]=(0.46369841557)/(o+1.)+(-0.3577658358)+(0.19107514064)*0.5**o  
         ref[1,0,2,0]=(0.128452495995)/(o+1.)+(-0.655264678285)+(0.179414794128)*0.5**o  
         ref[1,0,2,1]=(0.244339731125)/(o+1.)+(0.029405493035)+(0.507586792052)*0.5**o  
         ref[1,1,0,0]=(0.508215404195)/(o+1.)+(-0.71771496227)+(0.0515340520755)*0.5**o  
         ref[1,1,0,1]=(-0.0719243226652)/(o+1.)+(-0.373364708338)+(0.149995895729)*0.5**o  
         ref[1,1,1,0]=(0.0457980649267)/(o+1.)+(0.321315986156)+(-0.298918981626)*0.5**o  
         ref[1,1,1,1]=(0.103572135419)/(o+1.)+(0.320470192342)+(-0.833495545848)*0.5**o  
         ref[1,1,2,0]=(-0.785664720197)/(o+1.)+(0.728283801948)+(0.381644351387)*0.5**o  
         ref[1,1,2,1]=(0.0749818396161)/(o+1.)+(0.0116600896011)+(0.589726138962)*0.5**o  
         ref[1,2,0,0]=(0.714248701071)/(o+1.)+(0.215510313526)+(0.648262414915)*0.5**o  
         ref[1,2,0,1]=(0.186782608772)/(o+1.)+(0.348222715845)+(0.154336156671)*0.5**o  
         ref[1,2,1,0]=(-0.159116807039)/(o+1.)+(-0.36655730667)+(0.631907675013)*0.5**o  
         ref[1,2,1,1]=(0.995323329778)/(o+1.)+(0.492189332195)+(-0.150281595818)*0.5**o  
         ref[1,2,2,0]=(0.945042808379)/(o+1.)+(0.272493717349)+(0.15122501321)*0.5**o  
         ref[1,2,2,1]=(0.518228280852)/(o+1.)+(0.354601257252)+(0.490853599647)*0.5**o  
         ref[1,3,0,0]=(-0.99302787628)/(o+1.)+(-0.0822922603983)+(-0.868069831372)*0.5**o  
         ref[1,3,0,1]=(-0.691622353639)/(o+1.)+(-0.156892406228)+(-0.540392753009)*0.5**o  
         ref[1,3,1,0]=(0.239758390058)/(o+1.)+(0.621160605983)+(-0.38171518034)*0.5**o  
         ref[1,3,1,1]=(0.875356104271)/(o+1.)+(0.721348416703)+(0.405015772479)*0.5**o  
         ref[1,3,2,0]=(0.652544093354)/(o+1.)+(-0.450393922473)+(-0.859288591023)*0.5**o  
         ref[1,3,2,1]=(-0.266920992105)/(o+1.)+(-0.549660956967)+(-0.385753789824)*0.5**o  
         ref[1,4,0,0]=(-0.974008625555)/(o+1.)+(-0.000140651795392)+(0.248320342844)*0.5**o  
         ref[1,4,0,1]=(-0.890410564837)/(o+1.)+(-0.664020783456)+(-0.408988831595)*0.5**o  
         ref[1,4,1,0]=(0.272797445173)/(o+1.)+(-0.382936964587)+(-0.637267396746)*0.5**o  
         ref[1,4,1,1]=(-0.0849564635014)/(o+1.)+(0.204266707603)+(-0.711284122459)*0.5**o  
         ref[1,4,2,0]=(0.396913284632)/(o+1.)+(0.484403579059)+(0.194861831786)*0.5**o  
         ref[1,4,2,1]=(0.954568821795)/(o+1.)+(0.254563359637)+(-0.111812571843)*0.5**o  
         ref[2,0,0,0]=(0.66590243332)/(o+1.)+(0.0148566298797)+(0.149006416722)*0.5**o  
         ref[2,0,0,1]=(-0.115430427081)/(o+1.)+(-0.527231128141)+(-0.788828642343)*0.5**o  
         ref[2,0,1,0]=(-0.247117069506)/(o+1.)+(-0.569443533242)+(0.598185590774)*0.5**o  
         ref[2,0,1,1]=(-0.628357637608)/(o+1.)+(-0.337747901042)+(-0.945230420194)*0.5**o  
         ref[2,0,2,0]=(-0.43734992018)/(o+1.)+(-0.7606913535)+(0.184549704327)*0.5**o  
         ref[2,0,2,1]=(0.926088436529)/(o+1.)+(-0.070253895001)+(-0.897896267578)*0.5**o  
         ref[2,1,0,0]=(0.163113306006)/(o+1.)+(-0.161302341569)+(-0.0375376932325)*0.5**o  
         ref[2,1,0,1]=(0.762838138451)/(o+1.)+(0.278846281935)+(-0.603507455453)*0.5**o  
         ref[2,1,1,0]=(0.954063036094)/(o+1.)+(0.362930981906)+(-0.250121932289)*0.5**o  
         ref[2,1,1,1]=(-0.932724945971)/(o+1.)+(0.469122515475)+(0.0147284052497)*0.5**o  
         ref[2,1,2,0]=(-0.648739038507)/(o+1.)+(-0.593425752905)+(-0.832131948289)*0.5**o  
         ref[2,1,2,1]=(-0.399288944386)/(o+1.)+(-0.112449079426)+(-0.809460903823)*0.5**o  
         ref[2,2,0,0]=(-0.146472829559)/(o+1.)+(0.363381673756)+(0.851821921349)*0.5**o  
         ref[2,2,0,1]=(-0.262458059774)/(o+1.)+(-0.701238793074)+(0.145872642324)*0.5**o  
         ref[2,2,1,0]=(-0.941540320886)/(o+1.)+(-0.124851084374)+(-0.97150697777)*0.5**o  
         ref[2,2,1,1]=(0.725341857111)/(o+1.)+(-0.407470559879)+(0.705001677542)*0.5**o  
         ref[2,2,2,0]=(-0.797706422949)/(o+1.)+(0.459343748206)+(-0.405826604429)*0.5**o  
         ref[2,2,2,1]=(-0.381859891282)/(o+1.)+(-0.425569065022)+(-0.338189348522)*0.5**o  
         ref[2,3,0,0]=(0.306014483173)/(o+1.)+(-0.656039625864)+(-0.532343324478)*0.5**o  
         ref[2,3,0,1]=(0.939876357973)/(o+1.)+(-0.0146231237877)+(0.384975538101)*0.5**o  
         ref[2,3,1,0]=(0.929829286228)/(o+1.)+(0.234747366357)+(0.39221893978)*0.5**o  
         ref[2,3,1,1]=(0.207625492571)/(o+1.)+(-0.174250601546)+(-0.706521549808)*0.5**o  
         ref[2,3,2,0]=(-0.463914786644)/(o+1.)+(0.046924621609)+(0.464449153296)*0.5**o  
         ref[2,3,2,1]=(0.265758298887)/(o+1.)+(0.242967856537)+(-0.755612237619)*0.5**o  
         ref[2,4,0,0]=(0.347084253405)/(o+1.)+(0.301061654767)+(-0.913101029308)*0.5**o  
         ref[2,4,0,1]=(0.870579357546)/(o+1.)+(-0.499559218329)+(-0.261381262076)*0.5**o  
         ref[2,4,1,0]=(0.414206585164)/(o+1.)+(0.696094746795)+(-0.128568967272)*0.5**o  
         ref[2,4,1,1]=(0.681628131999)/(o+1.)+(0.380014241257)+(0.924901584611)*0.5**o  
         ref[2,4,2,0]=(0.577674551804)/(o+1.)+(-0.440344797207)+(0.409615949394)*0.5**o  
         ref[2,4,2,1]=(-0.592574898322)/(o+1.)+(-0.120224474883)+(0.382356012027)*0.5**o  
         ref[3,0,0,0]=(-0.666690913098)/(o+1.)+(-0.54955659901)+(-0.254267267009)*0.5**o  
         ref[3,0,0,1]=(-0.431014198736)/(o+1.)+(-0.906606407206)+(-0.672935968283)*0.5**o  
         ref[3,0,1,0]=(0.768197508919)/(o+1.)+(-0.128485639754)+(0.198586757881)*0.5**o  
         ref[3,0,1,1]=(0.64745394627)/(o+1.)+(0.242433768937)+(0.835596691179)*0.5**o  
         ref[3,0,2,0]=(0.478363486403)/(o+1.)+(0.35705399992)+(-0.60108209247)*0.5**o  
         ref[3,0,2,1]=(-0.0139161976239)/(o+1.)+(-0.0353334614921)+(-0.632653025461)*0.5**o  
         ref[3,1,0,0]=(-0.894286771395)/(o+1.)+(-0.0664875936996)+(-0.216238961155)*0.5**o  
         ref[3,1,0,1]=(-0.191303802435)/(o+1.)+(-0.681161760631)+(0.453465128819)*0.5**o  
         ref[3,1,1,0]=(0.128347107042)/(o+1.)+(-0.308977366639)+(-0.371601120889)*0.5**o  
         ref[3,1,1,1]=(0.968707420077)/(o+1.)+(0.505890263125)+(-0.492741845463)*0.5**o  
         ref[3,1,2,0]=(0.825889537824)/(o+1.)+(0.72159042581)+(-0.774958662409)*0.5**o  
         ref[3,1,2,1]=(-0.64322990825)/(o+1.)+(-0.299646999933)+(0.412550829295)*0.5**o  
         ref[3,2,0,0]=(0.65968803389)/(o+1.)+(0.675151995464)+(-0.543691366072)*0.5**o  
         ref[3,2,0,1]=(0.380175178975)/(o+1.)+(-0.303882893994)+(0.428045943755)*0.5**o  
         ref[3,2,1,0]=(0.147155465185)/(o+1.)+(0.350029874819)+(-0.389824098536)*0.5**o  
         ref[3,2,1,1]=(-0.515076806975)/(o+1.)+(0.0855589291935)+(-0.801779406727)*0.5**o  
         ref[3,2,2,0]=(0.386200975176)/(o+1.)+(-0.147866561923)+(0.484267483123)*0.5**o  
         ref[3,2,2,1]=(0.662298902936)/(o+1.)+(-0.75013213224)+(0.508871274459)*0.5**o  
         ref[3,3,0,0]=(-0.0144262822452)/(o+1.)+(0.0821453802379)+(-0.268312881659)*0.5**o  
         ref[3,3,0,1]=(0.253908480901)/(o+1.)+(-0.721126270246)+(-0.790430004852)*0.5**o  
         ref[3,3,1,0]=(-0.217309505922)/(o+1.)+(-0.436727185417)+(0.0137346713747)*0.5**o  
         ref[3,3,1,1]=(0.459487518143)/(o+1.)+(0.322846426627)+(-0.0284395764434)*0.5**o  
         ref[3,3,2,0]=(0.772502162236)/(o+1.)+(0.532611455057)+(-0.162643181454)*0.5**o  
         ref[3,3,2,1]=(-0.161606838558)/(o+1.)+(0.152710606726)+(0.623630922274)*0.5**o  
         ref[3,4,0,0]=(0.620328824713)/(o+1.)+(0.155749797604)+(-0.30946349425)*0.5**o  
         ref[3,4,0,1]=(0.322994919175)/(o+1.)+(-0.222626104153)+(-0.431480440685)*0.5**o  
         ref[3,4,1,0]=(0.676778413386)/(o+1.)+(0.21925686074)+(0.768816881062)*0.5**o  
         ref[3,4,1,1]=(-0.030305847597)/(o+1.)+(-0.349888882614)+(0.642322282841)*0.5**o  
         ref[3,4,2,0]=(0.739317807968)/(o+1.)+(-0.3774551391)+(-0.652491180967)*0.5**o  
         ref[3,4,2,1]=(-0.573554337332)/(o+1.)+(0.507769031524)+(-0.934623810452)*0.5**o  
       else:  
         s[0,0,0,0]=(-0.284157309093)*x[0]**o+(0.849767107542)*x[0]+(-0.384722111658)*x[1]**o+(-0.422005634353)*x[1]+(-0.650336986527)*x[2]**o+(-0.512697943529)*x[2]  
         s[0,0,0,1]=(-0.315769534489)*x[0]**o+(0.535386332325)*x[0]+(0.853804045467)*x[1]**o+(-0.547748632318)*x[1]+(0.346701407152)*x[2]**o+(0.37814849359)*x[2]  
         s[0,0,1,0]=(-0.4535776613)*x[0]**o+(-0.510530838778)*x[0]+(0.276827299966)*x[1]**o+(-0.382689005507)*x[1]+(0.905088915885)*x[2]**o+(0.0949553680219)*x[2]  
         s[0,0,1,1]=(-0.739956684686)*x[0]**o+(0.461075107945)*x[0]+(-0.669109047898)*x[1]**o+(0.894371361493)*x[1]+(-0.67186417627)*x[2]**o+(0.646865110437)*x[2]  
         s[0,0,2,0]=(0.630514031324)*x[0]**o+(-0.200697710807)*x[0]+(-0.425713236098)*x[1]**o+(0.990076474527)*x[1]+(0.799964278476)*x[2]**o+(-0.11090726662)*x[2]  
         s[0,0,2,1]=(-0.763048729267)*x[0]**o+(0.108312132849)*x[0]+(-0.0743278550192)*x[1]**o+(-0.00609761227579)*x[1]+(0.856275832244)*x[2]**o+(-0.271931694818)*x[2]  
         s[0,1,0,0]=(-0.438048883736)*x[0]**o+(0.0995162169923)*x[0]+(0.991935495829)*x[1]**o+(0.10168563116)*x[1]+(0.61021228041)*x[2]**o+(0.935697636412)*x[2]  
         s[0,1,0,1]=(0.169577859304)*x[0]**o+(-0.32382927444)*x[0]+(-0.416050245653)*x[1]**o+(-0.218068414951)*x[1]+(-0.828154819878)*x[2]**o+(0.510133764467)*x[2]  
         s[0,1,1,0]=(-0.136877583438)*x[0]**o+(0.225702373679)*x[0]+(-0.982330481939)*x[1]**o+(-0.76035657944)*x[1]+(-0.75008234946)*x[2]**o+(0.34026332188)*x[2]  
         s[0,1,1,1]=(0.21329287668)*x[0]**o+(-0.583080810655)*x[0]+(0.304728874482)*x[1]**o+(-0.513735666156)*x[1]+(0.678531278973)*x[2]**o+(0.229523450267)*x[2]  
         s[0,1,2,0]=(-0.488721257593)*x[0]**o+(-0.623065480166)*x[0]+(-0.689240830032)*x[1]**o+(0.0487255710714)*x[1]+(-0.345860672549)*x[2]**o+(-0.839070113015)*x[2]  
         s[0,1,2,1]=(0.0407718763863)*x[0]**o+(-0.73486237198)*x[0]+(-0.430375782223)*x[1]**o+(0.937703487997)*x[1]+(0.211905262532)*x[2]**o+(0.436342043473)*x[2]  
         s[0,2,0,0]=(0.587345517354)*x[0]**o+(-0.592886902091)*x[0]+(0.552036449839)*x[1]**o+(0.623893456691)*x[1]+(0.0732753243278)*x[2]**o+(0.0126745042435)*x[2]  
         s[0,2,0,1]=(-0.811084805765)*x[0]**o+(0.535274295321)*x[0]+(0.24492936339)*x[1]**o+(-0.800440152287)*x[1]+(0.631212521526)*x[2]**o+(-0.447237919067)*x[2]  
         s[0,2,1,0]=(-0.222984108172)*x[0]**o+(0.666955781431)*x[0]+(-0.793761886587)*x[1]**o+(0.767105994377)*x[1]+(0.106607736355)*x[2]**o+(0.107909765632)*x[2]  
         s[0,2,1,1]=(-0.351616621125)*x[0]**o+(0.918653285574)*x[0]+(0.374186423556)*x[1]**o+(0.00935909197596)*x[1]+(0.40967652737)*x[2]**o+(0.85098748057)*x[2]  
         s[0,2,2,0]=(0.326986640454)*x[0]**o+(-0.922098818053)*x[0]+(0.180209899234)*x[1]**o+(-0.473771920593)*x[1]+(0.850114791793)*x[2]**o+(-0.0591994178493)*x[2]  
         s[0,2,2,1]=(0.416408828986)*x[0]**o+(-0.802940087419)*x[0]+(-0.15695987973)*x[1]**o+(-0.212571438106)*x[1]+(-0.695411431279)*x[2]**o+(0.652970553889)*x[2]  
         s[0,3,0,0]=(0.165546039968)*x[0]**o+(0.510754381868)*x[0]+(0.922367777435)*x[1]**o+(0.946960595929)*x[1]+(0.488750467594)*x[2]**o+(0.684670926921)*x[2]  
         s[0,3,0,1]=(0.806943353866)*x[0]**o+(-0.0452688268514)*x[0]+(-0.915858505648)*x[1]**o+(-0.930357118958)*x[1]+(-0.915989552667)*x[2]**o+(-0.058763902318)*x[2]  
         s[0,3,1,0]=(-0.0329058672137)*x[0]**o+(-0.347664127646)*x[0]+(-0.642805650766)*x[1]**o+(-0.772181465981)*x[1]+(-0.489006714362)*x[2]**o+(-0.92809698455)*x[2]  
         s[0,3,1,1]=(0.927391314677)*x[0]**o+(-0.00818607467373)*x[0]+(-0.25019363274)*x[1]**o+(-0.944005917142)*x[1]+(0.55451200174)*x[2]**o+(0.97132400122)*x[2]  
         s[0,3,2,0]=(-0.395900087683)*x[0]**o+(-0.373500614568)*x[0]+(-0.292146120482)*x[1]**o+(0.481366513649)*x[1]+(0.793324319035)*x[2]**o+(-0.0829523908121)*x[2]  
         s[0,3,2,1]=(0.167004592732)*x[0]**o+(-0.412448920865)*x[0]+(-0.898556558084)*x[1]**o+(-0.490869248138)*x[1]+(-0.567143223313)*x[2]**o+(-0.732576896378)*x[2]  
         s[0,4,0,0]=(-0.0559473269152)*x[0]**o+(0.927731889097)*x[0]+(-0.650788921118)*x[1]**o+(0.9760762788)*x[1]+(0.115672920967)*x[2]**o+(-0.276468719613)*x[2]  
         s[0,4,0,1]=(-0.126102715426)*x[0]**o+(0.948204367434)*x[0]+(-0.337377224065)*x[1]**o+(-0.66690062976)*x[1]+(-0.0486873976343)*x[2]**o+(0.731627670267)*x[2]  
         s[0,4,1,0]=(-0.465158745622)*x[0]**o+(0.825435774485)*x[0]+(-0.325537513647)*x[1]**o+(-0.514033669128)*x[1]+(0.561307474551)*x[2]**o+(0.703487324789)*x[2]  
         s[0,4,1,1]=(0.433494572203)*x[0]**o+(-0.193734534196)*x[0]+(-0.285490592547)*x[1]**o+(0.7933219877)*x[1]+(-0.968093339339)*x[2]**o+(0.891238901252)*x[2]  
         s[0,4,2,0]=(-0.226388318689)*x[0]**o+(0.354588341815)*x[0]+(-0.592835636922)*x[1]**o+(0.164285456556)*x[1]+(0.969440431522)*x[2]**o+(0.942251489525)*x[2]  
         s[0,4,2,1]=(-0.487005215247)*x[0]**o+(-0.363562477474)*x[0]+(-0.968419416695)*x[1]**o+(0.0746396954211)*x[1]+(0.0996297479628)*x[2]**o+(-0.977105194209)*x[2]  
         s[1,0,0,0]=(-0.599811357812)*x[0]**o+(0.379322984555)*x[0]+(-0.263738481625)*x[1]**o+(0.737645780912)*x[1]+(0.579734520525)*x[2]**o+(0.674309085344)*x[2]  
         s[1,0,0,1]=(-0.849384033331)*x[0]**o+(0.835916113742)*x[0]+(-0.95744797963)*x[1]**o+(-0.140222671452)*x[1]+(-0.885202051612)*x[2]**o+(-0.214627624347)*x[2]  
         s[1,0,1,0]=(0.560384598535)*x[0]**o+(0.521038386588)*x[0]+(0.405346505288)*x[1]**o+(0.325623245692)*x[1]+(-0.499493979476)*x[2]**o+(0.457353575559)*x[2]  
         s[1,0,1,1]=(0.394452679675)*x[0]**o+(-0.335426315796)*x[0]+(0.366492975013)*x[1]**o+(-0.204908992368)*x[1]+(0.72928619323)*x[2]**o+(0.868856537052)*x[2]  
         s[1,0,2,0]=(-0.286588291759)*x[0]**o+(-0.457077770862)*x[0]+(0.48947586799)*x[1]**o+(-0.483134695964)*x[1]+(-0.708198861531)*x[2]**o+(-0.185141468661)*x[2]  
         s[1,0,2,1]=(0.587814763664)*x[0]**o+(0.369493163541)*x[0]+(0.973921527395)*x[1]**o+(0.792281782334)*x[1]+(-0.622350476528)*x[2]**o+(-0.0910812853654)*x[2]  
         s[1,1,0,0]=(-0.0104862086098)*x[0]**o+(0.636242048755)*x[0]+(-0.831278249993)*x[1]**o+(0.789497876069)*x[1]+(-0.14996840164)*x[2]**o+(0.560466658811)*x[2]  
         s[1,1,0,1]=(-0.442153331955)*x[0]**o+(0.259117434312)*x[0]+(0.624678092445)*x[1]**o+(-0.95353370493)*x[1]+(-0.647048223519)*x[2]**o+(-0.264328530894)*x[2]  
         s[1,1,1,0]=(0.143778546111)*x[0]**o+(-0.0162780042157)*x[0]+(0.11561710021)*x[1]**o+(-0.750325462664)*x[1]+(0.0513768047109)*x[2]**o+(0.605731207893)*x[2]  
         s[1,1,1,1]=(0.830078999256)*x[0]**o+(-0.977563707962)*x[0]+(-0.0694815703262)*x[1]**o+(-0.631908693739)*x[1]+(-0.385240583095)*x[2]**o+(-0.325723419389)*x[2]  
         s[1,1,2,0]=(-0.818875997493)*x[0]**o+(0.552071308369)*x[0]+(0.42469064565)*x[1]**o+(-0.939401594531)*x[1]+(-0.704918072568)*x[2]**o+(-0.412588503126)*x[2]  
         s[1,1,2,1]=(0.897735820104)*x[0]**o+(-0.229171182759)*x[0]+(-0.509740516596)*x[1]**o+(-0.182079029613)*x[1]+(-0.935655203228)*x[2]**o+(0.0659300001682)*x[2]  
         s[1,2,0,0]=(-0.225661260024)*x[0]**o+(-0.705274531847)*x[0]+(0.851323519708)*x[1]**o+(0.112877579527)*x[1]+(-0.622263839274)*x[2]**o+(0.0332240292837)*x[2]  
         s[1,2,0,1]=(0.188146461111)*x[0]**o+(-0.401949407666)*x[0]+(0.600435405952)*x[1]**o+(-0.205690272021)*x[1]+(-0.715745492382)*x[2]**o+(-0.842790491589)*x[2]  
         s[1,2,1,0]=(-0.713236970029)*x[0]**o+(-0.261492144857)*x[0]+(-0.154448102633)*x[1]**o+(-0.970544645841)*x[1]+(-0.920289620236)*x[2]**o+(-0.97207996703)*x[2]  
         s[1,2,1,1]=(0.338343830055)*x[0]**o+(0.245579659207)*x[0]+(0.0867267737353)*x[1]**o+(-0.898055915558)*x[1]+(-0.0942524838856)*x[2]**o+(-0.935035704882)*x[2]  
         s[1,2,2,0]=(-0.857754750211)*x[0]**o+(-0.491056643232)*x[0]+(-0.869773943254)*x[1]**o+(-0.4760062246)*x[1]+(-0.684952853861)*x[2]**o+(-0.576097444445)*x[2]  
         s[1,2,2,1]=(0.798299933694)*x[0]**o+(0.0610709183894)*x[0]+(-0.486420716864)*x[1]**o+(0.0416959278242)*x[1]+(-0.928888319279)*x[2]**o+(0.854902913513)*x[2]  
         s[1,3,0,0]=(-0.22936580714)*x[0]**o+(0.708863403011)*x[0]+(0.0460624260266)*x[1]**o+(-0.49429349985)*x[1]+(-0.65165177736)*x[2]**o+(-0.640993879589)*x[2]  
         s[1,3,0,1]=(0.272143747738)*x[0]**o+(-0.786035898193)*x[0]+(-0.907839432563)*x[1]**o+(-0.544282319144)*x[1]+(-0.295284311966)*x[2]**o+(-0.646933800599)*x[2]  
         s[1,3,1,0]=(-0.371813536068)*x[0]**o+(-0.989821491808)*x[0]+(0.87663418945)*x[1]**o+(0.49557916163)*x[1]+(0.432075714902)*x[2]**o+(0.986679642413)*x[2]  
         s[1,3,1,1]=(0.64355520606)*x[0]**o+(0.849290029179)*x[0]+(-0.588615332307)*x[1]**o+(-0.43586534156)*x[1]+(0.440278053071)*x[2]**o+(0.71924945995)*x[2]  
         s[1,3,2,0]=(0.296777344281)*x[0]**o+(0.369261091311)*x[0]+(-0.542374725062)*x[1]**o+(-0.378169086763)*x[1]+(-0.376253518198)*x[2]**o+(-0.0261035492256)*x[2]  
         s[1,3,2,1]=(-0.631360619387)*x[0]**o+(-0.447767234553)*x[0]+(-0.907807578651)*x[1]**o+(0.0949745118593)*x[1]+(-0.467696925918)*x[2]**o+(0.328688763502)*x[2]  
         s[1,4,0,0]=(-0.864162318969)*x[0]**o+(0.0492392548816)*x[0]+(-0.443732835548)*x[1]**o+(0.216532788053)*x[1]+(-0.589754138443)*x[2]**o+(0.225238430912)*x[2]  
         s[1,4,0,1]=(-0.0204110610831)*x[0]**o+(-0.361198283837)*x[0]+(-0.534453313822)*x[1]**o+(0.199660564502)*x[1]+(0.76073237233)*x[2]**o+(-0.397852751275)*x[2]  
         s[1,4,1,0]=(-0.0714182037356)*x[0]**o+(-0.838354030583)*x[0]+(-0.690623231638)*x[1]**o+(0.718400117263)*x[1]+(0.81989629515)*x[2]**o+(-0.99784667739)*x[2]  
         s[1,4,1,1]=(-0.789159638733)*x[0]**o+(0.0550782963202)*x[0]+(0.691693836327)*x[1]**o+(-0.995863220343)*x[1]+(0.489187641363)*x[2]**o+(-0.892540698263)*x[2]  
         s[1,4,2,0]=(-0.545542033256)*x[0]**o+(0.534307451322)*x[0]+(0.164514904761)*x[1]**o+(-0.604639193552)*x[1]+(0.299777195543)*x[2]**o+(0.103353434856)*x[2]  
         s[1,4,2,1]=(0.655205311592)*x[0]**o+(-0.806735930884)*x[0]+(-0.808306407454)*x[1]**o+(-0.842421999068)*x[1]+(0.071496057035)*x[2]**o+(0.327827774456)*x[2]  
         s[2,0,0,0]=(-0.0509015638697)*x[0]**o+(0.122893306456)*x[0]+(-0.495264442266)*x[1]**o+(-0.700582978791)*x[1]+(0.912958594653)*x[2]**o+(0.396603396384)*x[2]  
         s[2,0,0,1]=(-0.834927535726)*x[0]**o+(0.0299018772298)*x[0]+(0.950983785443)*x[1]**o+(-0.467301669211)*x[1]+(0.105169729215)*x[2]**o+(0.776869887731)*x[2]  
         s[2,0,1,0]=(0.695941957197)*x[0]**o+(-0.0827202988544)*x[0]+(0.551038863364)*x[1]**o+(0.768922568953)*x[1]+(0.658453649199)*x[2]**o+(0.0845854555463)*x[2]  
         s[2,0,1,1]=(-0.813515499086)*x[0]**o+(0.37498311883)*x[0]+(0.249460504439)*x[1]**o+(0.57859274713)*x[1]+(0.674876282575)*x[2]**o+(0.358162640602)*x[2]  
         s[2,0,2,0]=(0.264441597574)*x[0]**o+(-0.773282762615)*x[0]+(0.548708830043)*x[1]**o+(-0.365859504864)*x[1]+(-0.971213462476)*x[2]**o+(0.341839165432)*x[2]  
         s[2,0,2,1]=(0.839834410476)*x[0]**o+(0.73258814656)*x[0]+(0.0894113621016)*x[1]**o+(-0.561436557466)*x[1]+(-0.87929169767)*x[2]**o+(-0.673343626233)*x[2]  
         s[2,1,0,0]=(-0.9032683394)*x[0]**o+(0.548037699973)*x[0]+(-0.275249518695)*x[1]**o+(-0.182173933698)*x[1]+(-0.797774902804)*x[2]**o+(-0.541398445737)*x[2]  
         s[2,1,0,1]=(-0.563127063275)*x[0]**o+(0.0246839329162)*x[0]+(0.104775018182)*x[1]**o+(0.887831444063)*x[1]+(-0.21494247853)*x[2]**o+(-0.273454823602)*x[2]  
         s[2,1,1,0]=(-0.0215129450025)*x[0]**o+(-0.388850056041)*x[0]+(0.286605493305)*x[1]**o+(0.0744061944979)*x[1]+(-0.745577158797)*x[2]**o+(0.465555807335)*x[2]  
         s[2,1,1,1]=(0.862938112821)*x[0]**o+(0.440536762323)*x[0]+(0.708402486014)*x[1]**o+(-0.330067981061)*x[1]+(0.212443131768)*x[2]**o+(0.604427083557)*x[2]  
         s[2,1,2,0]=(-0.151555342557)*x[0]**o+(-0.422137938709)*x[0]+(0.725618931526)*x[1]**o+(0.965446678276)*x[1]+(-0.782758787615)*x[2]**o+(-0.913406963513)*x[2]  
         s[2,1,2,1]=(0.485262168703)*x[0]**o+(-0.155309809717)*x[0]+(0.346371477276)*x[1]**o+(-0.25747778813)*x[1]+(0.29003119075)*x[2]**o+(-0.994256278631)*x[2]  
         s[2,2,0,0]=(0.597629111376)*x[0]**o+(-0.675075309746)*x[0]+(-0.276946615105)*x[1]**o+(0.474817826479)*x[1]+(0.384217707699)*x[2]**o+(0.370453233617)*x[2]  
         s[2,2,0,1]=(0.0885418745402)*x[0]**o+(0.723684895162)*x[0]+(0.380828880196)*x[1]**o+(-0.200773722805)*x[1]+(-0.72048497776)*x[2]**o+(0.627781439124)*x[2]  
         s[2,2,1,0]=(-0.7058457718)*x[0]**o+(0.605583709445)*x[0]+(-0.137932623446)*x[1]**o+(-0.355521140013)*x[1]+(-0.100629345222)*x[2]**o+(-0.0196746976828)*x[2]  
         s[2,2,1,1]=(0.431391331275)*x[0]**o+(0.624577796816)*x[0]+(0.517581044445)*x[1]**o+(0.810575610489)*x[1]+(0.151026961294)*x[2]**o+(-0.116575349397)*x[2]  
         s[2,2,2,0]=(-0.172742409612)*x[0]**o+(-0.525478587831)*x[0]+(-0.245244804561)*x[1]**o+(0.466265204552)*x[1]+(-0.42763207872)*x[2]**o+(-0.37841245626)*x[2]  
         s[2,2,2,1]=(0.193762571076)*x[0]**o+(-0.443537851353)*x[0]+(0.703848629926)*x[1]**o+(-0.694597427026)*x[1]+(0.135855093753)*x[2]**o+(-0.845940858008)*x[2]  
         s[2,3,0,0]=(-0.816708755757)*x[0]**o+(-0.181019603056)*x[0]+(-0.743213747688)*x[1]**o+(0.798697343825)*x[1]+(-0.941634970147)*x[2]**o+(0.942560075608)*x[2]  
         s[2,3,0,1]=(0.557205351559)*x[0]**o+(0.573309419549)*x[0]+(0.285649088042)*x[1]**o+(-0.915772596908)*x[1]+(0.894469058714)*x[2]**o+(-0.093076259014)*x[2]  
         s[2,3,1,0]=(-0.330158214652)*x[0]**o+(0.519069568809)*x[0]+(-0.584129234472)*x[1]**o+(0.508779523144)*x[1]+(-0.496105354274)*x[2]**o+(-0.119894247636)*x[2]  
         s[2,3,1,1]=(0.0113498976079)*x[0]**o+(-0.817148495948)*x[0]+(-0.843322049813)*x[1]**o+(0.397509634966)*x[1]+(-0.210167599559)*x[2]**o+(0.452940815863)*x[2]  
         s[2,3,2,0]=(0.548708545741)*x[0]**o+(0.701316458542)*x[0]+(0.541383513552)*x[1]**o+(0.818821487001)*x[1]+(0.0337473469103)*x[2]**o+(0.144942886826)*x[2]  
         s[2,3,2,1]=(0.367699563724)*x[0]**o+(-0.558358600746)*x[0]+(0.02800962366)*x[1]**o+(0.408211655912)*x[1]+(0.808098902096)*x[2]**o+(0.406029406708)*x[2]  
         s[2,4,0,0]=(0.742185577055)*x[0]**o+(0.346992242703)*x[0]+(-0.789510739504)*x[1]**o+(-0.433601148291)*x[1]+(-0.317572193313)*x[2]**o+(-0.0929823026668)*x[2]  
         s[2,4,0,1]=(-0.540606064885)*x[0]**o+(0.959079111439)*x[0]+(-0.477472945875)*x[1]**o+(0.327457999632)*x[1]+(0.640838941005)*x[2]**o+(0.600082339571)*x[2]  
         s[2,4,1,0]=(-0.893508919799)*x[0]**o+(0.277903035098)*x[0]+(-0.10177580179)*x[1]**o+(0.404076458963)*x[1]+(0.497606493909)*x[2]**o+(0.343868899215)*x[2]  
         s[2,4,1,1]=(-0.0277942588293)*x[0]**o+(-0.341120495601)*x[0]+(0.622259478993)*x[1]**o+(0.73519393456)*x[1]+(0.660012187037)*x[2]**o+(0.399368466331)*x[2]  
         s[2,4,2,0]=(0.712530777919)*x[0]**o+(0.0672439307577)*x[0]+(0.124381974602)*x[1]**o+(-0.406347903024)*x[1]+(0.0208315631234)*x[2]**o+(-0.791500976149)*x[2]  
         s[2,4,2,1]=(0.0858696597238)*x[0]**o+(0.629028381896)*x[0]+(0.795442036928)*x[1]**o+(-0.764623844645)*x[1]+(-0.524125153324)*x[2]**o+(0.974625430391)*x[2]  
         s[3,0,0,0]=(-0.124887079943)*x[0]**o+(-0.654604024941)*x[0]+(0.822406023517)*x[1]**o+(-0.429933379615)*x[1]+(-0.693754435109)*x[2]**o+(0.745961675595)*x[2]  
         s[3,0,0,1]=(0.0781604618068)*x[0]**o+(0.481187957149)*x[0]+(0.923097062213)*x[1]**o+(0.732993925667)*x[1]+(0.0504012859604)*x[2]**o+(-0.115131599222)*x[2]  
         s[3,0,1,0]=(0.822494278919)*x[0]**o+(-0.595704755199)*x[0]+(-0.194581886746)*x[1]**o+(-0.943337806993)*x[1]+(0.147117678978)*x[2]**o+(0.728101168665)*x[2]  
         s[3,0,1,1]=(-0.61666199289)*x[0]**o+(-0.311296394607)*x[0]+(0.0936521091279)*x[1]**o+(0.588466331236)*x[1]+(-0.878463665908)*x[2]**o+(-0.675819143473)*x[2]  
         s[3,0,2,0]=(-0.275356624889)*x[0]**o+(0.383489643489)*x[0]+(0.738708963797)*x[1]**o+(0.974422154657)*x[1]+(-0.580144378752)*x[2]**o+(-0.398505112717)*x[2]  
         s[3,0,2,1]=(0.17925744427)*x[0]**o+(-0.681535969307)*x[0]+(0.902860156428)*x[1]**o+(0.871645168608)*x[1]+(-0.500401958703)*x[2]**o+(-0.817977653599)*x[2]  
         s[3,1,0,0]=(0.524297360691)*x[0]**o+(0.984668939309)*x[0]+(-0.929867000718)*x[1]**o+(0.270757914061)*x[1]+(-0.259503975648)*x[2]**o+(-0.780346807445)*x[2]  
         s[3,1,0,1]=(-0.261808400698)*x[0]**o+(0.0194613328439)*x[0]+(-0.113405534134)*x[1]**o+(0.734179483403)*x[1]+(0.802102544514)*x[2]**o+(0.565610343674)*x[2]  
         s[3,1,1,0]=(0.134876119034)*x[0]**o+(0.431559636814)*x[0]+(0.420152427242)*x[1]**o+(-0.882232674232)*x[1]+(0.267000935164)*x[2]**o+(-0.827008708436)*x[2]  
         s[3,1,1,1]=(-0.987212349574)*x[0]**o+(-0.342415633625)*x[0]+(0.639912484673)*x[1]**o+(0.790670494677)*x[1]+(0.15123106124)*x[2]**o+(0.983458455307)*x[2]  
         s[3,1,2,0]=(0.742204537127)*x[0]**o+(0.886895993942)*x[0]+(-0.349125661787)*x[1]**o+(-0.626136843474)*x[1]+(0.847031359985)*x[2]**o+(0.802788970865)*x[2]  
         s[3,1,2,1]=(-0.235349061749)*x[0]**o+(-0.621187306924)*x[0]+(0.552218669219)*x[1]**o+(0.790729433037)*x[1]+(0.444333479788)*x[2]**o+(0.632032201563)*x[2]  
         s[3,2,0,0]=(-0.938490786208)*x[0]**o+(0.869095707989)*x[0]+(0.140982256523)*x[1]**o+(-0.878601697433)*x[1]+(0.184535860313)*x[2]**o+(0.719071828514)*x[2]  
         s[3,2,0,1]=(-0.0180578829991)*x[0]**o+(0.0463975318478)*x[0]+(0.00393591018992)*x[1]**o+(0.950931246975)*x[1]+(0.615063351086)*x[2]**o+(-0.258806804322)*x[2]  
         s[3,2,1,0]=(0.294998689081)*x[0]**o+(-0.625359797867)*x[0]+(-0.403789197497)*x[1]**o+(-0.999420678246)*x[1]+(0.719776724665)*x[2]**o+(0.66899881431)*x[2]  
         s[3,2,1,1]=(-0.722157328967)*x[0]**o+(0.299062154378)*x[0]+(0.598625708687)*x[1]**o+(-0.951467257263)*x[1]+(0.344507050433)*x[2]**o+(0.0139170273087)*x[2]  
         s[3,2,2,0]=(0.621065266638)*x[0]**o+(0.985212075414)*x[0]+(-0.698645841337)*x[1]**o+(0.660676253875)*x[1]+(-0.406319768107)*x[2]**o+(-0.307469107008)*x[2]  
         s[3,2,2,1]=(0.0383194307525)*x[0]**o+(0.979670738016)*x[0]+(-0.928710294194)*x[1]**o+(0.610840841234)*x[1]+(0.707435385876)*x[2]**o+(-0.243157095062)*x[2]  
         s[3,3,0,0]=(0.0357627225956)*x[0]**o+(0.708815172231)*x[0]+(0.065359531343)*x[1]**o+(-0.0182577227471)*x[1]+(-0.0210976208306)*x[2]**o+(0.0761117140757)*x[2]  
         s[3,3,0,1]=(0.748296379412)*x[0]**o+(-0.807953754409)*x[0]+(-0.545605437765)*x[1]**o+(0.23683862911)*x[1]+(0.173607048395)*x[2]**o+(-0.44250075226)*x[2]  
         s[3,3,1,0]=(-0.726945541384)*x[0]**o+(0.426848422718)*x[0]+(-0.92314597997)*x[1]**o+(0.648637342846)*x[1]+(-0.578392786152)*x[2]**o+(0.848674260689)*x[2]  
         s[3,3,1,1]=(-0.644752429929)*x[0]**o+(0.950947546555)*x[0]+(0.0149417119272)*x[1]**o+(0.716391605858)*x[1]+(0.0490453676731)*x[2]**o+(0.0576413425128)*x[2]  
         s[3,3,2,0]=(0.466006820631)*x[0]**o+(0.161941404819)*x[0]+(-0.957641267925)*x[1]**o+(0.0765544212389)*x[1]+(0.701408110369)*x[2]**o+(-0.657156965052)*x[2]  
         s[3,3,2,1]=(-0.867176738598)*x[0]**o+(-0.449219272229)*x[0]+(0.324298582458)*x[1]**o+(-0.998730968715)*x[1]+(0.574803005179)*x[2]**o+(-0.243281577204)*x[2]  
         s[3,4,0,0]=(-0.263021668111)*x[0]**o+(0.802820216492)*x[0]+(0.372317055664)*x[1]**o+(-0.907203003358)*x[1]+(-0.0875142912227)*x[2]**o+(-0.899457536279)*x[2]  
         s[3,4,0,1]=(0.223529185934)*x[0]**o+(-0.112858652745)*x[0]+(0.112751409232)*x[1]**o+(-0.383168214822)*x[1]+(0.0253282930677)*x[2]**o+(-0.0727000650191)*x[2]  
         s[3,4,1,0]=(0.402273303095)*x[0]**o+(0.577572690365)*x[0]+(0.157976741538)*x[1]**o+(-0.374155092812)*x[1]+(-0.899398318425)*x[2]**o+(0.56916282818)*x[2]  
         s[3,4,1,1]=(-0.565673417227)*x[0]**o+(-0.0157754170468)*x[0]+(-0.896925597573)*x[1]**o+(-0.968592388923)*x[1]+(-0.694486144109)*x[2]**o+(-0.795948130804)*x[2]  
         s[3,4,2,0]=(-0.962992173758)*x[0]**o+(-0.299086071473)*x[0]+(0.367929277599)*x[1]**o+(-0.139102532943)*x[1]+(-0.838141685104)*x[2]**o+(0.181200376172)*x[2]  
         s[3,4,2,1]=(0.610198649476)*x[0]**o+(-0.747032724663)*x[0]+(0.546335594194)*x[1]**o+(0.21236923042)*x[1]+(0.028021042999)*x[2]**o+(0.469015322864)*x[2]  
         ref[0,0,0,0]=(-1.03505909819)/(o+1.)+(-0.0424682351702)+(-0.284157309093)*0.5**o  
         ref[0,0,0,1]=(1.20050545262)/(o+1.)+(0.182893096798)+(-0.315769534489)*0.5**o  
         ref[0,0,1,0]=(1.18191621585)/(o+1.)+(-0.399132238132)+(-0.4535776613)*0.5**o  
         ref[0,0,1,1]=(-1.34097322417)/(o+1.)+(1.00115578994)+(-0.739956684686)*0.5**o  
         ref[0,0,2,0]=(0.374251042378)/(o+1.)+(0.33923574855)+(0.630514031324)*0.5**o  
         ref[0,0,2,1]=(0.781947977225)/(o+1.)+(-0.0848585871226)+(-0.763048729267)*0.5**o  
         ref[0,1,0,0]=(1.60214777624)/(o+1.)+(0.568449742282)+(-0.438048883736)*0.5**o  
         ref[0,1,0,1]=(-1.24420506553)/(o+1.)+(-0.0158819624619)+(0.169577859304)*0.5**o  
         ref[0,1,1,0]=(-1.7324128314)/(o+1.)+(-0.0971954419402)+(-0.136877583438)*0.5**o  
         ref[0,1,1,1]=(0.983260153455)/(o+1.)+(-0.433646513272)+(0.21329287668)*0.5**o  
         ref[0,1,2,0]=(-1.03510150258)/(o+1.)+(-0.706705011055)+(-0.488721257593)*0.5**o  
         ref[0,1,2,1]=(-0.218470519691)/(o+1.)+(0.319591579745)+(0.0407718763863)*0.5**o  
         ref[0,2,0,0]=(0.625311774166)/(o+1.)+(0.0218405294219)+(0.587345517354)*0.5**o  
         ref[0,2,0,1]=(0.876141884916)/(o+1.)+(-0.356201888016)+(-0.811084805765)*0.5**o  
         ref[0,2,1,0]=(-0.687154150232)/(o+1.)+(0.77098577072)+(-0.222984108172)*0.5**o  
         ref[0,2,1,1]=(0.783862950926)/(o+1.)+(0.88949992906)+(-0.351616621125)*0.5**o  
         ref[0,2,2,0]=(1.03032469103)/(o+1.)+(-0.727535078248)+(0.326986640454)*0.5**o  
         ref[0,2,2,1]=(-0.852371311009)/(o+1.)+(-0.181270485818)+(0.416408828986)*0.5**o  
         ref[0,3,0,0]=(1.41111824503)/(o+1.)+(1.07119295236)+(0.165546039968)*0.5**o  
         ref[0,3,0,1]=(-1.83184805832)/(o+1.)+(-0.517194924063)+(0.806943353866)*0.5**o  
         ref[0,3,1,0]=(-1.13181236513)/(o+1.)+(-1.02397128909)+(-0.0329058672137)*0.5**o  
         ref[0,3,1,1]=(0.304318369001)/(o+1.)+(0.00956600470204)+(0.927391314677)*0.5**o  
         ref[0,3,2,0]=(0.501178198552)/(o+1.)+(0.0124567541342)+(-0.395900087683)*0.5**o  
         ref[0,3,2,1]=(-1.4656997814)/(o+1.)+(-0.817947532691)+(0.167004592732)*0.5**o  
         ref[0,4,0,0]=(-0.535116000151)/(o+1.)+(0.813669724142)+(-0.0559473269152)*0.5**o  
         ref[0,4,0,1]=(-0.386064621699)/(o+1.)+(0.506465703971)+(-0.126102715426)*0.5**o  
         ref[0,4,1,0]=(0.235769960904)/(o+1.)+(0.507444715073)+(-0.465158745622)*0.5**o  
         ref[0,4,1,1]=(-1.25358393189)/(o+1.)+(0.745413177378)+(0.433494572203)*0.5**o  
         ref[0,4,2,0]=(0.3766047946)/(o+1.)+(0.730562643948)+(-0.226388318689)*0.5**o  
         ref[0,4,2,1]=(-0.868789668733)/(o+1.)+(-0.633013988131)+(-0.487005215247)*0.5**o  
         ref[1,0,0,0]=(0.315996038899)/(o+1.)+(0.895638925406)+(-0.599811357812)*0.5**o  
         ref[1,0,0,1]=(-1.84265003124)/(o+1.)+(0.240532908971)+(-0.849384033331)*0.5**o  
         ref[1,0,1,0]=(-0.0941474741887)/(o+1.)+(0.65200760392)+(0.560384598535)*0.5**o  
         ref[1,0,1,1]=(1.09577916824)/(o+1.)+(0.164260614444)+(0.394452679675)*0.5**o  
         ref[1,0,2,0]=(-0.218722993542)/(o+1.)+(-0.562676967744)+(-0.286588291759)*0.5**o  
         ref[1,0,2,1]=(0.351571050868)/(o+1.)+(0.535346830254)+(0.587814763664)*0.5**o  
         ref[1,1,0,0]=(-0.981246651633)/(o+1.)+(0.993103291818)+(-0.0104862086098)*0.5**o  
         ref[1,1,0,1]=(-0.0223701310738)/(o+1.)+(-0.479372400756)+(-0.442153331955)*0.5**o  
         ref[1,1,1,0]=(0.166993904921)/(o+1.)+(-0.0804361294934)+(0.143778546111)*0.5**o  
         ref[1,1,1,1]=(-0.454722153421)/(o+1.)+(-0.967597910545)+(0.830078999256)*0.5**o  
         ref[1,1,2,0]=(-0.280227426918)/(o+1.)+(-0.399959394644)+(-0.818875997493)*0.5**o  
         ref[1,1,2,1]=(-1.44539571982)/(o+1.)+(-0.172660106102)+(0.897735820104)*0.5**o  
         ref[1,2,0,0]=(0.229059680434)/(o+1.)+(-0.279586461518)+(-0.225661260024)*0.5**o  
         ref[1,2,0,1]=(-0.11531008643)/(o+1.)+(-0.725215085638)+(0.188146461111)*0.5**o  
         ref[1,2,1,0]=(-1.07473772287)/(o+1.)+(-1.10205837886)+(-0.713236970029)*0.5**o  
         ref[1,2,1,1]=(-0.00752571015035)/(o+1.)+(-0.793755980616)+(0.338343830055)*0.5**o  
         ref[1,2,2,0]=(-1.55472679711)/(o+1.)+(-0.771580156139)+(-0.857754750211)*0.5**o  
         ref[1,2,2,1]=(-1.41530903614)/(o+1.)+(0.478834879863)+(0.798299933694)*0.5**o  
         ref[1,3,0,0]=(-0.605589351334)/(o+1.)+(-0.213211988214)+(-0.22936580714)*0.5**o  
         ref[1,3,0,1]=(-1.20312374453)/(o+1.)+(-0.988626008968)+(0.272143747738)*0.5**o  
         ref[1,3,1,0]=(1.30870990435)/(o+1.)+(0.246218656117)+(-0.371813536068)*0.5**o  
         ref[1,3,1,1]=(-0.148337279237)/(o+1.)+(0.566337073785)+(0.64355520606)*0.5**o  
         ref[1,3,2,0]=(-0.91862824326)/(o+1.)+(-0.0175057723384)+(0.296777344281)*0.5**o  
         ref[1,3,2,1]=(-1.37550450457)/(o+1.)+(-0.0120519795955)+(-0.631360619387)*0.5**o  
         ref[1,4,0,0]=(-1.03348697399)/(o+1.)+(0.245505236923)+(-0.864162318969)*0.5**o  
         ref[1,4,0,1]=(0.226279058508)/(o+1.)+(-0.279695235305)+(-0.0204110610831)*0.5**o  
         ref[1,4,1,0]=(0.129273063512)/(o+1.)+(-0.558900295355)+(-0.0714182037356)*0.5**o  
         ref[1,4,1,1]=(1.18088147769)/(o+1.)+(-0.916662811143)+(-0.789159638733)*0.5**o  
         ref[1,4,2,0]=(0.464292100303)/(o+1.)+(0.0165108463129)+(-0.545542033256)*0.5**o  
         ref[1,4,2,1]=(-0.736810350419)/(o+1.)+(-0.660665077748)+(0.655205311592)*0.5**o  
         ref[2,0,0,0]=(0.417694152388)/(o+1.)+(-0.0905431379759)+(-0.0509015638697)*0.5**o  
         ref[2,0,0,1]=(1.05615351466)/(o+1.)+(0.169735047875)+(-0.834927535726)*0.5**o  
         ref[2,0,1,0]=(1.20949251256)/(o+1.)+(0.385393862823)+(0.695941957197)*0.5**o  
         ref[2,0,1,1]=(0.924336787014)/(o+1.)+(0.655869253281)+(-0.813515499086)*0.5**o  
         ref[2,0,2,0]=(-0.422504632433)/(o+1.)+(-0.398651551024)+(0.264441597574)*0.5**o  
         ref[2,0,2,1]=(-0.789880335569)/(o+1.)+(-0.25109601857)+(0.839834410476)*0.5**o  
         ref[2,1,0,0]=(-1.0730244215)/(o+1.)+(-0.0877673397313)+(-0.9032683394)*0.5**o  
         ref[2,1,0,1]=(-0.110167460347)/(o+1.)+(0.319530276689)+(-0.563127063275)*0.5**o  
         ref[2,1,1,0]=(-0.458971665492)/(o+1.)+(0.0755559728958)+(-0.0215129450025)*0.5**o  
         ref[2,1,1,1]=(0.920845617782)/(o+1.)+(0.357447932409)+(0.862938112821)*0.5**o  
         ref[2,1,2,0]=(-0.0571398560888)/(o+1.)+(-0.185049111973)+(-0.151555342557)*0.5**o  
         ref[2,1,2,1]=(0.636402668026)/(o+1.)+(-0.703521938239)+(0.485262168703)*0.5**o  
         ref[2,2,0,0]=(0.107271092594)/(o+1.)+(0.0850978751753)+(0.597629111376)*0.5**o  
         ref[2,2,0,1]=(-0.339656097563)/(o+1.)+(0.57534630574)+(0.0885418745402)*0.5**o  
         ref[2,2,1,0]=(-0.238561968668)/(o+1.)+(0.115193935875)+(-0.7058457718)*0.5**o  
         ref[2,2,1,1]=(0.668608005739)/(o+1.)+(0.659289028954)+(0.431391331275)*0.5**o  
         ref[2,2,2,0]=(-0.672876883281)/(o+1.)+(-0.21881291977)+(-0.172742409612)*0.5**o  
         ref[2,2,2,1]=(0.83970372368)/(o+1.)+(-0.992038068194)+(0.193762571076)*0.5**o  
         ref[2,3,0,0]=(-1.68484871783)/(o+1.)+(0.780118908189)+(-0.816708755757)*0.5**o  
         ref[2,3,0,1]=(1.18011814676)/(o+1.)+(-0.217769718186)+(0.557205351559)*0.5**o  
         ref[2,3,1,0]=(-1.08023458875)/(o+1.)+(0.453977422158)+(-0.330158214652)*0.5**o  
         ref[2,3,1,1]=(-1.05348964937)/(o+1.)+(0.0166509774407)+(0.0113498976079)*0.5**o  
         ref[2,3,2,0]=(0.575130860462)/(o+1.)+(0.832540416184)+(0.548708545741)*0.5**o  
         ref[2,3,2,1]=(0.836108525756)/(o+1.)+(0.127941230937)+(0.367699563724)*0.5**o  
         ref[2,4,0,0]=(-1.10708293282)/(o+1.)+(-0.0897956041276)+(0.742185577055)*0.5**o  
         ref[2,4,0,1]=(0.16336599513)/(o+1.)+(0.943309725321)+(-0.540606064885)*0.5**o  
         ref[2,4,1,0]=(0.395830692119)/(o+1.)+(0.512924196638)+(-0.893508919799)*0.5**o  
         ref[2,4,1,1]=(1.28227166603)/(o+1.)+(0.396720952645)+(-0.0277942588293)*0.5**o  
         ref[2,4,2,0]=(0.145213537726)/(o+1.)+(-0.565302474208)+(0.712530777919)*0.5**o  
         ref[2,4,2,1]=(0.271316883603)/(o+1.)+(0.419514983821)+(0.0858696597238)*0.5**o  
         ref[3,0,0,0]=(0.128651588408)/(o+1.)+(-0.16928786448)+(-0.124887079943)*0.5**o  
         ref[3,0,0,1]=(0.973498348173)/(o+1.)+(0.549525141797)+(0.0781604618068)*0.5**o  
         ref[3,0,1,0]=(-0.0474642077688)/(o+1.)+(-0.405470696764)+(0.822494278919)*0.5**o  
         ref[3,0,1,1]=(-0.78481155678)/(o+1.)+(-0.199324603422)+(-0.61666199289)*0.5**o  
         ref[3,0,2,0]=(0.158564585045)/(o+1.)+(0.479703342715)+(-0.275356624889)*0.5**o  
         ref[3,0,2,1]=(0.402458197725)/(o+1.)+(-0.313934227149)+(0.17925744427)*0.5**o  
         ref[3,1,0,0]=(-1.18937097637)/(o+1.)+(0.237540022962)+(0.524297360691)*0.5**o  
         ref[3,1,0,1]=(0.68869701038)/(o+1.)+(0.65962557996)+(-0.261808400698)*0.5**o  
         ref[3,1,1,0]=(0.687153362406)/(o+1.)+(-0.638840872927)+(0.134876119034)*0.5**o  
         ref[3,1,1,1]=(0.791143545912)/(o+1.)+(0.71585665818)+(-0.987212349574)*0.5**o  
         ref[3,1,2,0]=(0.497905698197)/(o+1.)+(0.531774060666)+(0.742204537127)*0.5**o  
         ref[3,1,2,1]=(0.996552149008)/(o+1.)+(0.400787163838)+(-0.235349061749)*0.5**o  
         ref[3,2,0,0]=(0.325518116836)/(o+1.)+(0.354782919535)+(-0.938490786208)*0.5**o  
         ref[3,2,0,1]=(0.618999261276)/(o+1.)+(0.369260987251)+(-0.0180578829991)*0.5**o  
         ref[3,2,1,0]=(0.315987527168)/(o+1.)+(-0.477890830901)+(0.294998689081)*0.5**o  
         ref[3,2,1,1]=(0.94313275912)/(o+1.)+(-0.319244037788)+(-0.722157328967)*0.5**o  
         ref[3,2,2,0]=(-1.10496560944)/(o+1.)+(0.669209611141)+(0.621065266638)*0.5**o  
         ref[3,2,2,1]=(-0.221274908319)/(o+1.)+(0.673677242094)+(0.0383194307525)*0.5**o  
         ref[3,3,0,0]=(0.0442619105124)/(o+1.)+(0.38333458178)+(0.0357627225956)*0.5**o  
         ref[3,3,0,1]=(-0.371998389371)/(o+1.)+(-0.50680793878)+(0.748296379412)*0.5**o  
         ref[3,3,1,0]=(-1.50153876612)/(o+1.)+(0.962080013126)+(-0.726945541384)*0.5**o  
         ref[3,3,1,1]=(0.0639870796003)/(o+1.)+(0.862490247463)+(-0.644752429929)*0.5**o  
         ref[3,3,2,0]=(-0.256233157556)/(o+1.)+(-0.209330569497)+(0.466006820631)*0.5**o  
         ref[3,3,2,1]=(0.899101587637)/(o+1.)+(-0.845615909074)+(-0.867176738598)*0.5**o  
         ref[3,4,0,0]=(0.284802764441)/(o+1.)+(-0.501920161572)+(-0.263021668111)*0.5**o  
         ref[3,4,0,1]=(0.1380797023)/(o+1.)+(-0.284363466293)+(0.223529185934)*0.5**o  
         ref[3,4,1,0]=(-0.741421576887)/(o+1.)+(0.386290212867)+(0.402273303095)*0.5**o  
         ref[3,4,1,1]=(-1.59141174168)/(o+1.)+(-0.890157968387)+(-0.565673417227)*0.5**o  
         ref[3,4,2,0]=(-0.470212407505)/(o+1.)+(-0.128494114122)+(-0.962992173758)*0.5**o  
         ref[3,4,2,1]=(0.574356637193)/(o+1.)+(-0.0328240856895)+(0.610198649476)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(4, 5, 3, 2),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onFunctionOnContactZero_fromSymbol_ReducedSolution_rank0(self):  
       """  
       tests integral of rank 0 Symbol on the FunctionOnContactZero  
   
       assumptions: ReducedSolution(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=1  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=ReducedSolution(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=())  
       s=Data(0,(),w)  
       if dim==2:  
         s=(1.70255303494)*x[0]+(0.300011314949)*x[1]  
         ref=(0.345983004398)/(o+1.)+(0.363938720886)+(0.928703903719)*0.5**o  
       else:  
         s=(-1.68260770684)*x[0]+(-1.14729600003)*x[1]+(-1.35659279947)*x[2]  
         ref=(-1.3902352024)/(o+1.)+(-1.03788235052)+(-0.720496602901)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onFunctionOnContactZero_fromSymbol_ReducedSolution_rank1(self):  
       """  
       tests integral of rank 1 Symbol on the FunctionOnContactZero  
   
       assumptions: ReducedSolution(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=1  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=ReducedSolution(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(2,))  
       s=Data(0,(2,),w)  
       ref=numpy.zeros((2,),numpy.float_)  
       if dim==2:  
         s[0]=(0.23958799559)*x[0]+(-0.0458757682877)*x[1]  
         s[1]=(0.0897882061379)*x[0]+(-1.54974909413)*x[1]  
         ref[0]=(0.0485704769529)/(o+1.)+(0.210351971249)+(-0.275562192148)*0.5**o  
         ref[1]=(-0.821668980438)/(o+1.)+(-0.712207676061)+(0.786123444573)*0.5**o  
       else:  
         s[0]=(-1.44817804789)*x[0]+(0.670605136525)*x[1]+(-0.593548775192)*x[2]  
         s[1]=(-0.585702105721)*x[0]+(0.0665105334471)*x[1]+(-0.228099551666)*x[2]  
         ref[0]=(0.859021549917)/(o+1.)+(-0.759857813727)+(-0.710427609023)*0.5**o  
         ref[1]=(-1.40806718776)/(o+1.)+(0.267420623854)+(0.125934816108)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(2,),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onFunctionOnContactZero_fromSymbol_ReducedSolution_rank2(self):  
       """  
       tests integral of rank 2 Symbol on the FunctionOnContactZero  
   
       assumptions: ReducedSolution(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=1  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=ReducedSolution(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(4, 5))  
       s=Data(0,(4, 5),w)  
       ref=numpy.zeros((4, 5),numpy.float_)  
       if dim==2:  
         s[0,0]=(0.933177344575)*x[0]+(-0.643793974434)*x[1]  
         s[0,1]=(-0.311019666872)*x[0]+(0.686195407652)*x[1]  
         s[0,2]=(0.470203454822)*x[0]+(1.32374103685)*x[1]  
         s[0,3]=(-0.653103411901)*x[0]+(0.477452857192)*x[1]  
         s[0,4]=(1.12606394408)*x[0]+(0.0898490519564)*x[1]  
         s[1,0]=(1.26644130664)*x[0]+(0.226895598587)*x[1]  
         s[1,1]=(0.0271345466814)*x[0]+(0.435024033603)*x[1]  
         s[1,2]=(-0.227055843926)*x[0]+(-0.144686134637)*x[1]  
         s[1,3]=(0.466198287572)*x[0]+(-0.130830709376)*x[1]  
         s[1,4]=(1.04066080781)*x[0]+(0.546282129071)*x[1]  
         s[2,0]=(0.317469515041)*x[0]+(1.26366516514)*x[1]  
         s[2,1]=(-1.20210768286)*x[0]+(-0.0533328989847)*x[1]  
         s[2,2]=(0.278459393186)*x[0]+(-0.379156129627)*x[1]  
         s[2,3]=(1.03459096792)*x[0]+(-0.610026027371)*x[1]  
         s[2,4]=(1.288131278)*x[0]+(-0.309929698872)*x[1]  
         s[3,0]=(0.32856946183)*x[0]+(0.225709965354)*x[1]  
         s[3,1]=(-1.03183224237)*x[0]+(-0.0153171719792)*x[1]  
         s[3,2]=(0.259516430572)*x[0]+(-0.776082702284)*x[1]  
         s[3,3]=(-0.417978040907)*x[0]+(-0.0941785049007)*x[1]  
         s[3,4]=(1.07527114074)*x[0]+(-0.0198401110946)*x[1]  
         ref[0,0]=(-0.79959835955)/(o+1.)+(0.566758804494)+(-0.0445358792971)*0.5**o  
         ref[0,1]=(0.583455543567)/(o+1.)+(0.0458448886173)+(-0.299969580021)*0.5**o  
         ref[0,2]=(0.471614825642)/(o+1.)+(0.891760595232)+(-0.461191524434)*0.5**o  
         ref[0,3]=(0.672045220068)/(o+1.)+(-0.56343583876)+(0.279175902744)*0.5**o  
         ref[0,4]=(-0.127993678518)/(o+1.)+(0.52668612755)+(0.290534419455)*0.5**o  
         ref[1,0]=(0.822774751438)/(o+1.)+(-0.011855097694)+(0.694272349175)*0.5**o  
         ref[1,1]=(0.552626324952)/(o+1.)+(0.277929562319)+(-0.646326869305)*0.5**o  
         ref[1,2]=(-0.565996176797)/(o+1.)+(-0.128057099164)+(0.450368396562)*0.5**o  
         ref[1,3]=(0.627837338323)/(o+1.)+(-0.555359040353)+(0.818248320579)*0.5**o  
         ref[1,4]=(0.722984603229)/(o+1.)+(0.0957452220354)+(0.672467889583)*0.5**o  
         ref[2,0]=(0.664524759547)/(o+1.)+(0.678277833656)+(-0.439945746675)*0.5**o  
         ref[2,1]=(0.908213473231)/(o+1.)+(-0.805606306623)+(-0.552441441832)*0.5**o  
         ref[2,2]=(0.0908414991316)/(o+1.)+(0.131818510391)+(-0.455175256354)*0.5**o  
         ref[2,3]=(-0.119095663088)/(o+1.)+(-0.223144373358)+(0.989949350348)*0.5**o  
         ref[2,4]=(-0.0540728359185)/(o+1.)+(0.0748680956845)+(0.882538223681)*0.5**o  
         ref[3,0]=(0.98273847633)/(o+1.)+(-0.421621406424)+(0.414783763702)*0.5**o  
         ref[3,1]=(0.29285575515)/(o+1.)+(-0.462798732226)+(-0.41440770505)*0.5**o  
         ref[3,2]=(-0.509767634157)/(o+1.)+(-0.480617720091)+(0.954436802627)*0.5**o  
         ref[3,3]=(-0.762302422898)/(o+1.)+(0.100280539595)+(0.0495847978999)*0.5**o  
         ref[3,4]=(-0.154196647936)/(o+1.)+(0.329602137701)+(0.550423402184)*0.5**o  
       else:  
         s[0,0]=(1.34601675616)*x[0]+(-0.451295005459)*x[1]+(-0.49622174234)*x[2]  
         s[0,1]=(-0.327908015969)*x[0]+(-1.21019079469)*x[1]+(1.09622527656)*x[2]  
         s[0,2]=(-0.0243507161566)*x[0]+(-0.016230100758)*x[1]+(-1.37311484633)*x[2]  
         s[0,3]=(-0.445665346289)*x[0]+(-0.626824621259)*x[1]+(-0.196033254199)*x[2]  
         s[0,4]=(-0.819703680211)*x[0]+(1.30953832902)*x[1]+(0.0778023021203)*x[2]  
         s[1,0]=(0.219519741099)*x[0]+(-1.47335622754)*x[1]+(0.198662145648)*x[2]  
         s[1,1]=(-0.65456993306)*x[0]+(-0.125758153194)*x[1]+(-1.53966098547)*x[2]  
         s[1,2]=(-0.112157349953)*x[0]+(-0.459351490445)*x[1]+(1.6889234353)*x[2]  
         s[1,3]=(0.102642361518)*x[0]+(1.10412193101)*x[1]+(-0.239843060928)*x[2]  
         s[1,4]=(-0.232367456037)*x[0]+(-1.17836662288)*x[1]+(-0.814085860866)*x[2]  
         s[2,0]=(-1.00510966212)*x[0]+(1.23960710585)*x[1]+(0.0848958213029)*x[2]  
         s[2,1]=(-1.93901641139)*x[0]+(-0.0469703867512)*x[1]+(-0.21201338191)*x[2]  
         s[2,2]=(1.42666776379)*x[0]+(1.04000263985)*x[1]+(0.151609334515)*x[2]  
         s[2,3]=(-0.297049329338)*x[0]+(-0.103284668913)*x[1]+(-0.110261476034)*x[2]  
         s[2,4]=(0.964711394219)*x[0]+(1.28218755108)*x[1]+(-1.2382220868)*x[2]  
         s[3,0]=(-0.922061452692)*x[0]+(-1.36593539333)*x[1]+(1.11436583585)*x[2]  
         s[3,1]=(0.284590223973)*x[0]+(1.08442017719)*x[1]+(1.5619949376)*x[2]  
         s[3,2]=(-0.245207105356)*x[0]+(-1.77865635864)*x[1]+(-0.908570594143)*x[2]  
         s[3,3]=(0.426334196419)*x[0]+(-0.501103031142)*x[1]+(0.199762115243)*x[2]  
         s[3,4]=(1.33158896071)*x[0]+(0.44737802367)*x[1]+(-0.76095091762)*x[2]  
         ref[0,0]=(-0.581088472202)/(o+1.)+(0.287163129514)+(0.405262221535)*0.5**o  
         ref[0,1]=(0.695209950176)/(o+1.)+(-0.748195486472)+(0.359307488667)*0.5**o  
         ref[0,2]=(0.313650504565)/(o+1.)+(-1.20553227172)+(0.683718375628)*0.5**o  
         ref[0,3]=(-0.872265925416)/(o+1.)+(-0.216679466249)+(0.0371016361661)*0.5**o  
         ref[0,4]=(1.07552646704)/(o+1.)+(-0.293195846094)+(0.0785021760824)*0.5**o  
         ref[1,0]=(-1.22710752208)/(o+1.)+(0.409726431872)+(-0.647519682458)*0.5**o  
         ref[1,1]=(-0.940490307845)/(o+1.)+(-0.82083756271)+(0.26217636154)*0.5**o  
         ref[1,2]=(1.00054234642)/(o+1.)+(-0.0533842117578)+(0.223640672001)*0.5**o  
         ref[1,3]=(0.0595140200914)/(o+1.)+(0.407850368171)+(0.0917064751695)*0.5**o  
         ref[1,4]=(-0.50735295069)/(o+1.)+(-1.10564117596)+(0.493815362818)*0.5**o  
         ref[2,0]=(0.786394742154)/(o+1.)+(-0.212261329287)+(-0.0424788185539)*0.5**o  
         ref[2,1]=(-0.868240537836)/(o+1.)+(-0.186797194849)+(-0.956165252514)*0.5**o  
         ref[2,2]=(-0.67113838962)/(o+1.)+(1.26208372573)+(0.765250676321)*0.5**o  
         ref[2,3]=(-1.2390712788)/(o+1.)+(0.286327258603)+(0.15582128731)*0.5**o  
         ref[2,4]=(-0.00831435188402)/(o+1.)+(0.305363694299)+(0.406263821787)*0.5**o  
         ref[3,0]=(-0.123205370838)/(o+1.)+(-0.410740153717)+(-0.228945331902)*0.5**o  
         ref[3,1]=(1.39199709306)/(o+1.)+(0.646045427731)+(0.246917390241)*0.5**o  
         ref[3,2]=(-1.10740261108)/(o+1.)+(-0.860231147304)+(-0.104569152453)*0.5**o  
         ref[3,3]=(-0.506214554892)/(o+1.)+(0.53544681941)+(-0.439685803409)*0.5**o  
         ref[3,4]=(0.846470301583)/(o+1.)+(-0.134756583683)+(0.441058932543)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(4, 5),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onFunctionOnContactZero_fromSymbol_ReducedSolution_rank3(self):  
       """  
       tests integral of rank 3 Symbol on the FunctionOnContactZero  
   
       assumptions: ReducedSolution(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=1  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=ReducedSolution(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(6, 2, 2))  
       s=Data(0,(6, 2, 2),w)  
       ref=numpy.zeros((6, 2, 2),numpy.float_)  
       if dim==2:  
         s[0,0,0]=(-0.907789262757)*x[0]+(1.43778352913)*x[1]  
         s[0,0,1]=(-0.441541130755)*x[0]+(1.75922038312)*x[1]  
         s[0,1,0]=(-0.387854312613)*x[0]+(1.22523701409)*x[1]  
         s[0,1,1]=(-1.15521894576)*x[0]+(0.0289558035739)*x[1]  
         s[1,0,0]=(-0.640400813271)*x[0]+(-1.69766965873)*x[1]  
         s[1,0,1]=(-0.641296842318)*x[0]+(-1.35895483901)*x[1]  
         s[1,1,0]=(-0.14735518066)*x[0]+(0.520543405774)*x[1]  
         s[1,1,1]=(0.369918186173)*x[0]+(0.209781392053)*x[1]  
         s[2,0,0]=(0.677808706359)*x[0]+(0.481042907356)*x[1]  
         s[2,0,1]=(-0.661702781276)*x[0]+(1.86193178646)*x[1]  
         s[2,1,0]=(0.323230036331)*x[0]+(-1.45705288353)*x[1]  
         s[2,1,1]=(1.8644362516)*x[0]+(0.764691070666)*x[1]  
         s[3,0,0]=(-1.33103240086)*x[0]+(1.29035953404)*x[1]  
         s[3,0,1]=(-0.161074703654)*x[0]+(-0.127322745584)*x[1]  
         s[3,1,0]=(-0.359913251027)*x[0]+(-0.0952192793759)*x[1]  
         s[3,1,1]=(-0.34519536765)*x[0]+(0.483950473232)*x[1]  
         s[4,0,0]=(0.981563058768)*x[0]+(-0.0744642367992)*x[1]  
         s[4,0,1]=(-0.45912279344)*x[0]+(0.0011253607226)*x[1]  
         s[4,1,0]=(-0.618322333127)*x[0]+(0.199638289627)*x[1]  
         s[4,1,1]=(-0.371110449749)*x[0]+(-0.382992800899)*x[1]  
         s[5,0,0]=(0.840829543072)*x[0]+(-0.925833368141)*x[1]  
         s[5,0,1]=(-0.0348263534937)*x[0]+(0.267324292682)*x[1]  
         s[5,1,0]=(0.0785260612832)*x[0]+(1.59479548515)*x[1]  
         s[5,1,1]=(-0.203914067868)*x[0]+(1.28202597585)*x[1]  
         ref[0,0,0]=(0.898417888273)/(o+1.)+(0.171058001117)+(-0.710539624134)*0.5**o  
         ref[0,0,1]=(0.949672663046)/(o+1.)+(0.186488421776)+(-0.00497025423347)*0.5**o  
         ref[0,1,0]=(0.434571276181)/(o+1.)+(0.106095788846)+(0.190619847602)*0.5**o  
         ref[0,1,1]=(0.337711977059)/(o+1.)+(-0.313335995076)+(-0.837303129097)*0.5**o  
         ref[1,0,0]=(-0.757199193222)/(o+1.)+(-0.36300260101)+(-0.854866076761)*0.5**o  
         ref[1,0,1]=(-0.767144980208)/(o+1.)+(-0.215422826519)+(-0.802261048082)*0.5**o  
         ref[1,1,0]=(-0.13190981045)/(o+1.)+(-0.0320289199048)+(0.569155875375)*0.5**o  
         ref[1,1,1]=(0.0466405054813)/(o+1.)+(0.565229924314)+(-0.597400775882)*0.5**o  
         ref[2,0,0]=(0.760951384359)/(o+1.)+(0.0600961970572)+(0.277707835242)*0.5**o  
         ref[2,0,1]=(0.869894715615)/(o+1.)+(0.631323963868)+(-0.932313638168)*0.5**o  
         ref[2,1,0]=(-0.666302256751)/(o+1.)+(-0.510864963778)+(0.554209337103)*0.5**o  
         ref[2,1,1]=(0.934304180676)/(o+1.)+(0.350887235523)+(0.993048670542)*0.5**o  
         ref[3,0,0]=(0.930749923608)/(o+1.)+(-0.283299908306)+(-0.404822973819)*0.5**o  
         ref[3,0,1]=(-0.572270969539)/(o+1.)+(0.583432503768)+(-0.882991487235)*0.5**o  
         ref[3,1,0]=(0.642892258995)/(o+1.)+(-0.0826293437351)+(-0.932766101927)*0.5**o  
         ref[3,1,1]=(0.679591980627)/(o+1.)+(-0.379930907942)+(0.219024940838)*0.5**o  
         ref[4,0,0]=(-0.0326170324069)/(o+1.)+(0.0903259186859)+(0.759064017004)*0.5**o  
         ref[4,0,1]=(-0.129142887308)/(o+1.)+(0.279560607285)+(-0.887975759979)*0.5**o  
         ref[4,1,0]=(0.752463858901)/(o+1.)+(-0.256945595979)+(-0.657256710443)*0.5**o  
         ref[4,1,1]=(0.565307319705)/(o+1.)+(-0.898218881636)+(0.477027192919)*0.5**o  
         ref[5,0,0]=(-0.28969980947)/(o+1.)+(0.0341656280661)+(0.136364728269)*0.5**o  
         ref[5,0,1]=(-0.362525553087)/(o+1.)+(0.17876968499)+(0.237484122295)*0.5**o  
         ref[5,1,0]=(0.856225350097)/(o+1.)+(0.375747136218)+(0.0656019238951)*0.5**o  
         ref[5,1,1]=(0.358764765052)/(o+1.)+(0.783470816704)+(-0.847594490479)*0.5**o  
       else:  
         s[0,0,0]=(-0.18318998999)*x[0]+(-1.71372306128)*x[1]+(1.13788709107)*x[2]  
         s[0,0,1]=(0.95308908228)*x[0]+(0.123844162735)*x[1]+(0.0868410957691)*x[2]  
         s[0,1,0]=(-0.712762731169)*x[0]+(-1.86018372873)*x[1]+(-0.0783828227128)*x[2]  
         s[0,1,1]=(-1.72172214895)*x[0]+(-1.25477573826)*x[1]+(1.28096692374)*x[2]  
         s[1,0,0]=(0.86250397119)*x[0]+(1.44314824122)*x[1]+(0.763303582012)*x[2]  
         s[1,0,1]=(1.05520701337)*x[0]+(1.04926637639)*x[1]+(-0.378977987156)*x[2]  
         s[1,1,0]=(0.753550528625)*x[0]+(-1.63882951308)*x[1]+(0.259583964201)*x[2]  
         s[1,1,1]=(0.778941098246)*x[0]+(-1.10564597288)*x[1]+(-1.42906071049)*x[2]  
         s[2,0,0]=(-0.842438687373)*x[0]+(-0.202024764935)*x[1]+(0.289144880342)*x[2]  
         s[2,0,1]=(-1.02319531994)*x[0]+(0.155875285165)*x[1]+(0.310920357117)*x[2]  
         s[2,1,0]=(-1.45156693584)*x[0]+(0.12231441645)*x[1]+(0.722232222435)*x[2]  
         s[2,1,1]=(-1.08553719113)*x[0]+(0.316521434206)*x[1]+(0.720555059931)*x[2]  
         s[3,0,0]=(1.91846595467)*x[0]+(0.199356393766)*x[1]+(-0.438144879601)*x[2]  
         s[3,0,1]=(-0.341123312011)*x[0]+(0.325154462361)*x[1]+(0.691743856063)*x[2]  
         s[3,1,0]=(1.72547153856)*x[0]+(-0.822030080649)*x[1]+(-1.15169896539)*x[2]  
         s[3,1,1]=(0.243194545088)*x[0]+(-0.718504738836)*x[1]+(0.560536413366)*x[2]  
         s[4,0,0]=(0.248455459192)*x[0]+(0.415661600687)*x[1]+(0.21712561395)*x[2]  
         s[4,0,1]=(-1.23171610721)*x[0]+(-0.443121697053)*x[1]+(0.724481514081)*x[2]  
         s[4,1,0]=(-0.0327531013679)*x[0]+(0.385175130963)*x[1]+(-0.0484020348058)*x[2]  
         s[4,1,1]=(-0.199960439132)*x[0]+(-0.751568103399)*x[1]+(-1.20119343449)*x[2]  
         s[5,0,0]=(0.853262644583)*x[0]+(1.47653986554)*x[1]+(-0.0642737845052)*x[2]  
         s[5,0,1]=(1.1703484139)*x[0]+(-0.848977140408)*x[1]+(-0.303628307573)*x[2]  
         s[5,1,0]=(-0.719950626922)*x[0]+(0.192452589234)*x[1]+(0.315963976897)*x[2]  
         s[5,1,1]=(0.331604591856)*x[0]+(0.428822102766)*x[1]+(-1.35258251093)*x[2]  
         ref[0,0,0]=(-0.452131788567)/(o+1.)+(-0.313943872628)+(0.320993573616)*0.5**o  
         ref[0,0,1]=(-1.4121302884)/(o+1.)+(0.934332411096)+(0.707239806995)*0.5**o  
         ref[0,1,0]=(-0.371701930519)/(o+1.)+(-1.22914563984)+(0.178663927586)*0.5**o  
         ref[0,1,1]=(-0.569427715149)/(o+1.)+(-0.102129307368)+(-0.921844633589)*0.5**o  
         ref[1,0,0]=(1.07041067382)/(o+1.)+(1.04773121415)+(-0.0969173076836)*0.5**o  
         ref[1,0,1]=(0.344908055221)/(o+1.)+(0.253322966116)+(0.873941415143)*0.5**o  
         ref[1,1,0]=(-0.568409920368)/(o+1.)+(-0.376074272994)+(0.694863446104)*0.5**o  
         ref[1,1,1]=(-1.26296359103)/(o+1.)+(-0.285972966041)+(0.0791439379881)*0.5**o  
         ref[2,0,0]=(0.261580662311)/(o+1.)+(-0.0693472624675)+(-0.878204709343)*0.5**o  
         ref[2,0,1]=(-0.0659237231253)/(o+1.)+(-0.101871484642)+(-0.286732985248)*0.5**o  
         ref[2,1,0]=(-0.609626668188)/(o+1.)+(0.438552975912)+(-0.874499580587)*0.5**o  
         ref[2,1,1]=(1.21427389191)/(o+1.)+(-0.396304653588)+(-0.470125281731)*0.5**o  
         ref[3,0,0]=(0.466268456837)/(o+1.)+(0.109894182607)+(0.993620646782)*0.5**o  
         ref[3,0,1]=(0.798648502977)/(o+1.)+(0.30293631931)+(-0.728746135183)*0.5**o  
         ref[3,1,0]=(-0.443525593788)/(o+1.)+(-0.32762855249)+(0.85052519129)*0.5**o  
         ref[3,1,1]=(0.520520221786)/(o+1.)+(-0.21037503556)+(-0.0145439310481)*0.5**o  
         ref[4,0,0]=(1.51637897594)/(o+1.)+(0.0251054216628)+(-0.685347145435)*0.5**o  
         ref[4,0,1]=(-0.0126278181421)/(o+1.)+(-0.255524438913)+(-0.426679594213)*0.5**o  
         ref[4,1,0]=(-0.110252848596)/(o+1.)+(-0.270402535847)+(0.95507791508)*0.5**o  
         ref[4,1,1]=(-0.965558516877)/(o+1.)+(-0.777022669388)+(0.366881878633)*0.5**o  
         ref[5,0,0]=(1.47489510124)/(o+1.)+(0.344964232978)+(0.100705158424)*0.5**o  
         ref[5,0,1]=(0.272180101244)/(o+1.)+(-0.219694112974)+(0.184951090624)*0.5**o  
         ref[5,1,0]=(0.868944944511)/(o+1.)+(-0.492651110402)+(-0.0951767844975)*0.5**o  
         ref[5,1,1]=(-0.112001801469)/(o+1.)+(-0.0274812221923)+(-0.425191570457)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(6, 2, 2),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onFunctionOnContactZero_fromSymbol_ReducedSolution_rank4(self):  
       """  
       tests integral of rank 4 Symbol on the FunctionOnContactZero  
   
       assumptions: ReducedSolution(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=1  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=ReducedSolution(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(4, 5, 3, 2))  
       s=Data(0,(4, 5, 3, 2),w)  
       ref=numpy.zeros((4, 5, 3, 2),numpy.float_)  
       if dim==2:  
         s[0,0,0,0]=(0.492266509376)*x[0]+(-0.374307474367)*x[1]  
         s[0,0,0,1]=(0.379610803929)*x[0]+(1.26877290052)*x[1]  
         s[0,0,1,0]=(0.489836401727)*x[0]+(0.0568437409848)*x[1]  
         s[0,0,1,1]=(-0.0962394811856)*x[0]+(1.08297193296)*x[1]  
         s[0,0,2,0]=(0.0083854747638)*x[0]+(1.12783902851)*x[1]  
         s[0,0,2,1]=(-1.60969353709)*x[0]+(-1.15342435141)*x[1]  
         s[0,1,0,0]=(0.718333685586)*x[0]+(-0.580409068311)*x[1]  
         s[0,1,0,1]=(-0.471412983112)*x[0]+(-1.21523638921)*x[1]  
         s[0,1,1,0]=(0.436952252413)*x[0]+(0.817968269393)*x[1]  
         s[0,1,1,1]=(0.904303325207)*x[0]+(1.27944662005)*x[1]  
         s[0,1,2,0]=(-0.646670575219)*x[0]+(-0.268471138891)*x[1]  
         s[0,1,2,1]=(0.216944526796)*x[0]+(-1.44656748298)*x[1]  
         s[0,2,0,0]=(-1.45710792844)*x[0]+(-1.37549168202)*x[1]  
         s[0,2,0,1]=(-0.0209124548614)*x[0]+(-0.405359828227)*x[1]  
         s[0,2,1,0]=(0.713696154808)*x[0]+(-0.283663569311)*x[1]  
         s[0,2,1,1]=(0.0879024421072)*x[0]+(-1.74270037297)*x[1]  
         s[0,2,2,0]=(-0.263019221744)*x[0]+(0.587637432145)*x[1]  
         s[0,2,2,1]=(0.291949019915)*x[0]+(1.21942896685)*x[1]  
         s[0,3,0,0]=(0.711503988663)*x[0]+(-0.0889987684621)*x[1]  
         s[0,3,0,1]=(-0.473200478311)*x[0]+(-0.731689338365)*x[1]  
         s[0,3,1,0]=(0.0347877428229)*x[0]+(0.436342776392)*x[1]  
         s[0,3,1,1]=(1.33181675729)*x[0]+(0.796826790935)*x[1]  
         s[0,3,2,0]=(0.975860401214)*x[0]+(-0.0388876329765)*x[1]  
         s[0,3,2,1]=(0.336224987742)*x[0]+(1.40851963434)*x[1]  
         s[0,4,0,0]=(-0.430668122172)*x[0]+(-0.210883679811)*x[1]  
         s[0,4,0,1]=(-0.0947644917837)*x[0]+(-0.145045406149)*x[1]  
         s[0,4,1,0]=(-0.975155718684)*x[0]+(0.370091078964)*x[1]  
         s[0,4,1,1]=(1.59897077782)*x[0]+(-0.716757934974)*x[1]  
         s[0,4,2,0]=(0.0995595315716)*x[0]+(-0.654667529963)*x[1]  
         s[0,4,2,1]=(0.621429995817)*x[0]+(-0.830020781954)*x[1]  
         s[1,0,0,0]=(0.460799425849)*x[0]+(1.37039134597)*x[1]  
         s[1,0,0,1]=(0.484677718571)*x[0]+(-1.06817334128)*x[1]  
         s[1,0,1,0]=(0.157323780788)*x[0]+(-0.816294918051)*x[1]  
         s[1,0,1,1]=(0.275640307711)*x[0]+(-1.13585749962)*x[1]  
         s[1,0,2,0]=(1.16452950894)*x[0]+(-1.17355094567)*x[1]  
         s[1,0,2,1]=(-0.567786612292)*x[0]+(-0.78722481996)*x[1]  
         s[1,1,0,0]=(-0.106381006132)*x[0]+(1.35734811758)*x[1]  
         s[1,1,0,1]=(0.870362310422)*x[0]+(-0.701894980494)*x[1]  
         s[1,1,1,0]=(0.463101808026)*x[0]+(-0.106531628533)*x[1]  
         s[1,1,1,1]=(0.34927073998)*x[0]+(0.597282241285)*x[1]  
         s[1,1,2,0]=(-1.08705596894)*x[0]+(-0.476312920631)*x[1]  
         s[1,1,2,1]=(0.461228158094)*x[0]+(0.553430989166)*x[1]  
         s[1,2,0,0]=(-0.565889081597)*x[0]+(0.847674515062)*x[1]  
         s[1,2,0,1]=(1.22774040742)*x[0]+(0.532076088807)*x[1]  
         s[1,2,1,0]=(-1.35738184718)*x[0]+(-0.010480885754)*x[1]  
         s[1,2,1,1]=(0.0609383835609)*x[0]+(0.539183578894)*x[1]  
         s[1,2,2,0]=(0.765013210057)*x[0]+(-0.0658319206215)*x[1]  
         s[1,2,2,1]=(0.720241379555)*x[0]+(-1.29084845886)*x[1]  
         s[1,3,0,0]=(1.37641602996)*x[0]+(-0.713391122816)*x[1]  
         s[1,3,0,1]=(0.475350779553)*x[0]+(-0.0146303427199)*x[1]  
         s[1,3,1,0]=(-0.498436122956)*x[0]+(0.446982991213)*x[1]  
         s[1,3,1,1]=(-0.0198417666776)*x[0]+(-0.0330880581816)*x[1]  
         s[1,3,2,0]=(-0.968203407981)*x[0]+(-1.43766997027)*x[1]  
         s[1,3,2,1]=(-1.516108898)*x[0]+(0.154669696369)*x[1]  
         s[1,4,0,0]=(0.107239334472)*x[0]+(-1.01814801515)*x[1]  
         s[1,4,0,1]=(0.490733729058)*x[0]+(1.0617427681)*x[1]  
         s[1,4,1,0]=(-0.579990484487)*x[0]+(-0.681146890855)*x[1]  
         s[1,4,1,1]=(-0.539291982427)*x[0]+(1.40646560401)*x[1]  
         s[1,4,2,0]=(-0.804686819612)*x[0]+(0.617047118706)*x[1]  
         s[1,4,2,1]=(-0.913106387219)*x[0]+(-0.35453310971)*x[1]  
         s[2,0,0,0]=(1.07945504868)*x[0]+(0.147695653661)*x[1]  
         s[2,0,0,1]=(0.0321229519775)*x[0]+(-0.80726917422)*x[1]  
         s[2,0,1,0]=(-0.276983245168)*x[0]+(-1.8208105745)*x[1]  
         s[2,0,1,1]=(-0.390466636115)*x[0]+(-0.753787382303)*x[1]  
         s[2,0,2,0]=(-0.0551239488574)*x[0]+(-0.691793238598)*x[1]  
         s[2,0,2,1]=(0.455414076199)*x[0]+(1.19885245354)*x[1]  
         s[2,1,0,0]=(-0.774122061304)*x[0]+(1.10934639101)*x[1]  
         s[2,1,0,1]=(-1.60749547114)*x[0]+(0.305715741213)*x[1]  
         s[2,1,1,0]=(0.0697234437299)*x[0]+(0.542820812428)*x[1]  
         s[2,1,1,1]=(1.29397510328)*x[0]+(-0.804845682022)*x[1]  
         s[2,1,2,0]=(0.478973101459)*x[0]+(1.07219480882)*x[1]  
         s[2,1,2,1]=(-0.897309279985)*x[0]+(1.75363512874)*x[1]  
         s[2,2,0,0]=(1.61737724977)*x[0]+(0.161191822716)*x[1]  
         s[2,2,0,1]=(0.808798403137)*x[0]+(-0.00926345040032)*x[1]  
         s[2,2,1,0]=(-0.903485178097)*x[0]+(-0.36599523945)*x[1]  
         s[2,2,1,1]=(0.30686972857)*x[0]+(-1.62803935845)*x[1]  
         s[2,2,2,0]=(1.48915760228)*x[0]+(0.579057819566)*x[1]  
         s[2,2,2,1]=(-0.540786588929)*x[0]+(-0.402843340661)*x[1]  
         s[2,3,0,0]=(0.964227135928)*x[0]+(0.0210110310059)*x[1]  
         s[2,3,0,1]=(0.0266958261678)*x[0]+(0.830215139026)*x[1]  
         s[2,3,1,0]=(0.930518946289)*x[0]+(0.66745827854)*x[1]  
         s[2,3,1,1]=(0.0363390243751)*x[0]+(0.591657283448)*x[1]  
         s[2,3,2,0]=(-0.433934955699)*x[0]+(-1.57946754208)*x[1]  
         s[2,3,2,1]=(-0.890298505624)*x[0]+(0.623825002267)*x[1]  
         s[2,4,0,0]=(0.838929180901)*x[0]+(0.699121739125)*x[1]  
         s[2,4,0,1]=(1.3886192544)*x[0]+(-0.232981076843)*x[1]  
         s[2,4,1,0]=(-0.566792750082)*x[0]+(-0.631000271451)*x[1]  
         s[2,4,1,1]=(-0.989529672577)*x[0]+(0.0943919436553)*x[1]  
         s[2,4,2,0]=(-1.85858526639)*x[0]+(0.257423736684)*x[1]  
         s[2,4,2,1]=(-1.01848069496)*x[0]+(-1.08574972329)*x[1]  
         s[3,0,0,0]=(0.135022656073)*x[0]+(-0.641428277939)*x[1]  
         s[3,0,0,1]=(-0.613029646479)*x[0]+(0.158334902417)*x[1]  
         s[3,0,1,0]=(-1.01838576339)*x[0]+(-0.788404867889)*x[1]  
         s[3,0,1,1]=(0.133395871444)*x[0]+(-0.540018893528)*x[1]  
         s[3,0,2,0]=(0.359599806799)*x[0]+(-0.163549980956)*x[1]  
         s[3,0,2,1]=(0.537279834479)*x[0]+(1.43219657076)*x[1]  
         s[3,1,0,0]=(0.699221501837)*x[0]+(0.58098090756)*x[1]  
         s[3,1,0,1]=(-0.264653821282)*x[0]+(-0.297670973468)*x[1]  
         s[3,1,1,0]=(-1.14805006965)*x[0]+(0.173713527619)*x[1]  
         s[3,1,1,1]=(0.582167066862)*x[0]+(0.224704535757)*x[1]  
         s[3,1,2,0]=(-0.013329661508)*x[0]+(0.439567816478)*x[1]  
         s[3,1,2,1]=(-0.206657167829)*x[0]+(-0.900945403197)*x[1]  
         s[3,2,0,0]=(-1.34123093943)*x[0]+(-0.905024065154)*x[1]  
         s[3,2,0,1]=(-0.0677797983484)*x[0]+(0.863260908229)*x[1]  
         s[3,2,1,0]=(0.0651406495709)*x[0]+(1.35122911589)*x[1]  
         s[3,2,1,1]=(-0.00598531484168)*x[0]+(0.690487120132)*x[1]  
         s[3,2,2,0]=(0.748701424535)*x[0]+(-1.0273152862)*x[1]  
         s[3,2,2,1]=(-0.239064296585)*x[0]+(-0.213292951531)*x[1]  
         s[3,3,0,0]=(-0.620272397992)*x[0]+(1.00106031112)*x[1]  
         s[3,3,0,1]=(-0.803133841712)*x[0]+(0.873569080382)*x[1]  
         s[3,3,1,0]=(-1.187617412)*x[0]+(0.422664418077)*x[1]  
         s[3,3,1,1]=(-1.51637824714)*x[0]+(-1.5177161306)*x[1]  
         s[3,3,2,0]=(1.41348390435)*x[0]+(1.2134182272)*x[1]  
         s[3,3,2,1]=(0.99094246846)*x[0]+(0.34796551642)*x[1]  
         s[3,4,0,0]=(0.580352675436)*x[0]+(-1.21782952097)*x[1]  
         s[3,4,0,1]=(0.060030794007)*x[0]+(0.711473074059)*x[1]  
         s[3,4,1,0]=(0.966745511848)*x[0]+(-0.550401614505)*x[1]  
         s[3,4,1,1]=(-0.791329990237)*x[0]+(-0.205150506961)*x[1]  
         s[3,4,2,0]=(0.482041855799)*x[0]+(-1.09392636319)*x[1]  
         s[3,4,2,1]=(-0.698074703295)*x[0]+(0.510339675206)*x[1]  
         ref[0,0,0,0]=(-0.953900694954)/(o+1.)+(0.442044844728)+(0.187770040507)*0.5**o  
         ref[0,0,0,1]=(0.580869130103)/(o+1.)+(0.516362992147)+(0.03478859005)*0.5**o  
         ref[0,0,1,0]=(-0.411645490601)/(o+1.)+(0.406943479905)+(0.144438673502)*0.5**o  
         ref[0,0,1,1]=(0.204312991686)/(o+1.)+(0.383971959467)+(0.0144755411578)*0.5**o  
         ref[0,0,2,0]=(0.743369450952)/(o+1.)+(0.0895404122051)+(0.213774227914)*0.5**o  
         ref[0,0,2,1]=(-0.239858711457)/(o+1.)+(-0.809763839108)+(-0.903731498821)*0.5**o  
         ref[0,1,0,0]=(-0.484413922256)/(o+1.)+(0.0508933433825)+(0.520551852766)*0.5**o  
         ref[0,1,0,1]=(-0.590736935429)/(o+1.)+(-0.344843181585)+(-0.406226073725)*0.5**o  
         ref[0,1,1,0]=(-0.125338697971)/(o+1.)+(0.369801286198)+(0.640656647382)*0.5**o  
         ref[0,1,1,1]=(0.552504077477)/(o+1.)+(0.788979766736)+(0.0532863343083)*0.5**o  
         ref[0,1,2,0]=(0.306194481363)/(o+1.)+(-0.445453307231)+(-0.33042958101)*0.5**o  
         ref[0,1,2,1]=(-0.818898129415)/(o+1.)+(-0.0332482175532)+(-0.34422839166)*0.5**o  
         ref[0,2,0,0]=(-0.878218012751)/(o+1.)+(-0.612244128212)+(-0.729893341289)*0.5**o  
         ref[0,2,0,1]=(-0.105155854997)/(o+1.)+(0.281922249648)+(-0.884960927387)*0.5**o  
         ref[0,2,1,0]=(0.565149481722)/(o+1.)+(0.0625165001878)+(-0.2601498966)*0.5**o  
         ref[0,2,1,1]=(-0.983424704841)/(o+1.)+(0.0730690344226)+(-0.817511294863)*0.5**o  
         ref[0,2,2,0]=(-0.258286255412)/(o+1.)+(0.308348049886)+(-0.0337916339596)*0.5**o  
         ref[0,2,2,1]=(0.915004878119)/(o+1.)+(-0.166545843752)+(0.929464796149)*0.5**o  
         ref[0,3,0,0]=(-0.433529018481)/(o+1.)+(0.627958762155)+(-0.199883285628)*0.5**o  
         ref[0,3,0,1]=(-0.945419963966)/(o+1.)+(-0.336318858392)+(0.413167864075)*0.5**o  
         ref[0,3,1,0]=(0.502119767083)/(o+1.)+(0.334993773063)+(-0.700976793994)*0.5**o  
         ref[0,3,1,1]=(-0.186129206617)/(o+1.)+(0.891324041438)+(0.532124671966)*0.5**o  
         ref[0,3,2,0]=(0.504051134603)/(o+1.)+(-0.200874672613)+(0.834670978862)*0.5**o  
         ref[0,3,2,1]=(0.436498536789)/(o+1.)+(0.545640525497)+(0.216965034296)*0.5**o  
         ref[0,4,0,0]=(-0.756349034292)/(o+1.)+(0.140738322652)+(-0.166679412995)*0.5**o  
         ref[0,4,0,1]=(0.780437446749)/(o+1.)+(-0.599105577138)+(0.177963809594)*0.5**o  
         ref[0,4,1,0]=(0.943566244729)/(o+1.)+(-0.441716458606)+(-0.665197967238)*0.5**o  
         ref[0,4,1,1]=(-0.734101358227)/(o+1.)+(0.356355202125)+(0.903603796827)*0.5**o  
         ref[0,4,2,0]=(-0.43430093723)/(o+1.)+(0.383496742595)+(-0.887800546351)*0.5**o  
         ref[0,4,2,1]=(-0.227167732111)/(o+1.)+(-0.274598730532)+(0.567774407038)*0.5**o  
         ref[1,0,0,0]=(0.391393429129)/(o+1.)+(0.353444577314)+(0.732908188056)*0.5**o  
         ref[1,0,0,1]=(-0.171565730455)/(o+1.)+(-0.259205209862)+(0.106480527466)*0.5**o  
         ref[1,0,1,0]=(-0.774601901321)/(o+1.)+(0.259483708314)+(-0.403336652569)*0.5**o  
         ref[1,0,1,1]=(-0.726406904963)/(o+1.)+(-0.129278181762)+(0.124746076574)*0.5**o  
         ref[1,0,2,0]=(-0.617577515377)/(o+1.)+(-0.152390726783)+(0.91333753221)*0.5**o  
         ref[1,0,2,1]=(0.138202581628)/(o+1.)+(-0.396089249037)+(-0.701035515806)*0.5**o  
         ref[1,1,0,0]=(0.729934336346)/(o+1.)+(-0.00268233232676)+(0.52639743976)*0.5**o  
         ref[1,1,0,1]=(-0.158306695958)/(o+1.)+(-0.0162211686892)+(0.359216363265)*0.5**o  
         ref[1,1,1,0]=(-0.978599129855)/(o+1.)+(0.71609215355)+(-0.0970149977525)*0.5**o  
         ref[1,1,1,1]=(-0.349041967673)/(o+1.)+(0.780124912357)+(-0.264654875775)*0.5**o  
         ref[1,1,2,0]=(-0.809194404709)/(o+1.)+(-0.268116096378)+(-0.217942292102)*0.5**o  
         ref[1,1,2,1]=(0.455578593899)/(o+1.)+(0.428430852179)+(-0.297781150997)*0.5**o  
         ref[1,2,0,0]=(0.116383337262)/(o+1.)+(0.228068268367)+(-0.290734440531)*0.5**o  
         ref[1,2,0,1]=(0.977031820054)/(o+1.)+(0.137033678728)+(0.508717318715)*0.5**o  
         ref[1,2,1,0]=(0.282937416713)/(o+1.)+(-0.615158071804)+(-0.420484006037)*0.5**o  
         ref[1,2,1,1]=(0.904627062081)/(o+1.)+(0.018901292084)+(-0.342307683794)*0.5**o  
         ref[1,2,2,0]=(0.755780696034)/(o+1.)+(-0.0362605587438)+(0.0159217108891)*0.5**o  
         ref[1,2,2,1]=(-0.699866517547)/(o+1.)+(0.171062073116)+(-0.212864707989)*0.5**o  
         ref[1,3,0,0]=(0.228867465112)/(o+1.)+(-0.0322172708178)+(0.498591983668)*0.5**o  
         ref[1,3,0,1]=(-0.289542634768)/(o+1.)+(0.110436622855)+(0.529389825891)*0.5**o  
         ref[1,3,1,0]=(0.358054041082)/(o+1.)+(0.165615637362)+(-0.74073844755)*0.5**o  
         ref[1,3,1,1]=(-0.60359826352)/(o+1.)+(0.517588005735)+(-0.48450757281)*0.5**o  
         ref[1,3,2,0]=(-0.545672858809)/(o+1.)+(-0.618462721543)+(-0.623275076358)*0.5**o  
         ref[1,3,2,1]=(-0.73428128984)/(o+1.)+(-0.0497647291554)+(-0.527628453484)*0.5**o  
         ref[1,4,0,0]=(-0.04306414004)/(o+1.)+(-0.298207200434)+(-0.271430139773)*0.5**o  
         ref[1,4,0,1]=(0.971916388567)/(o+1.)+(-0.0691551012311)+(0.718870311054)*0.5**o  
         ref[1,4,1,0]=(-0.445510592605)/(o+1.)+(-0.088724728164)+(-0.638177326409)*0.5**o  
         ref[1,4,1,1]=(0.753412648385)/(o+1.)+(-0.0777097810015)+(0.269180535197)*0.5**o  
         ref[1,4,2,0]=(-0.305234413894)/(o+1.)+(0.169600008291)+(-0.221605303593)*0.5**o  
         ref[1,4,2,1]=(-0.286993085073)/(o+1.)+(-0.0493395569951)+(-0.881967297866)*0.5**o  
         ref[2,0,0,0]=(-0.719751624491)/(o+1.)+(0.677226475278)+(0.59244937628)*0.5**o  
         ref[2,0,0,1]=(-0.670829954915)/(o+1.)+(-0.139434936863)+(0.174553606398)*0.5**o  
         ref[2,0,1,0]=(-0.916962595573)/(o+1.)+(-0.372659474123)+(-0.435512275853)*0.5**o  
         ref[2,0,1,1]=(-0.893849803211)/(o+1.)+(-0.341833589876)+(0.433262964544)*0.5**o  
         ref[2,0,2,0]=(-0.773257190107)/(o+1.)+(0.0495078796887)+(-0.0726757567263)*0.5**o  
         ref[2,0,2,1]=(0.632070005323)/(o+1.)+(0.697198313452)+(-0.372200102483)*0.5**o  
         ref[2,1,0,0]=(0.459329022417)/(o+1.)+(0.249194755087)+(-0.622494202881)*0.5**o  
         ref[2,1,0,1]=(0.0269909119644)/(o+1.)+(-0.210708025265)+(-0.907354591365)*0.5**o  
         ref[2,1,1,0]=(0.183761641828)/(o+1.)+(-0.207261190919)+(0.843304996169)*0.5**o  
         ref[2,1,1,1]=(-0.49062931094)/(o+1.)+(0.2742786733)+(0.431201385598)*0.5**o  
         ref[2,1,2,0]=(0.798332846753)/(o+1.)+(0.187074177535)+(0.378686708458)*0.5**o  
         ref[2,1,2,1]=(0.942487410042)/(o+1.)+(0.0268513037692)+(-0.139864168826)*0.5**o  
         ref[2,2,0,0]=(-0.306480663139)/(o+1.)+(0.706708669675)+(0.671632396277)*0.5**o  
         ref[2,2,0,1]=(-0.68426521806)/(o+1.)+(0.658766824582)+(0.166266521632)*0.5**o  
         ref[2,2,1,0]=(-0.0872551950734)/(o+1.)+(-0.212578991849)+(-0.757067238775)*0.5**o  
         ref[2,2,1,1]=(-0.779515023363)/(o+1.)+(-0.165651803902)+(-0.210350998718)*0.5**o  
         ref[2,2,2,0]=(0.420662034868)/(o+1.)+(0.456572874952)+(0.734407637073)*0.5**o  
         ref[2,2,2,1]=(-0.0347308970891)/(o+1.)+(-0.550927478137)+(0.192955923773)*0.5**o  
         ref[2,3,0,0]=(0.279479543192)/(o+1.)+(0.340981994922)+(0.0237946338994)*0.5**o  
         ref[2,3,0,1]=(0.885111721906)/(o+1.)+(0.0386593998513)+(-0.105519556415)*0.5**o  
         ref[2,3,1,0]=(-0.142745975965)/(o+1.)+(0.571228905184)+(0.598265390426)*0.5**o  
         ref[2,3,1,1]=(0.676813945202)/(o+1.)+(0.301993597369)+(-0.652804832118)*0.5**o  
         ref[2,3,2,0]=(-0.834072218834)/(o+1.)+(-0.836092513405)+(0.492854747868)*0.5**o  
         ref[2,3,2,1]=(0.451195972296)/(o+1.)+(-0.330911551268)+(-0.0558463731179)*0.5**o  
         ref[2,4,0,0]=(0.604480974758)/(o+1.)+(-0.0272834841321)+(0.988136913533)*0.5**o  
         ref[2,4,0,1]=(-0.672293493189)/(o+1.)+(0.436472725256)+(0.954986220232)*0.5**o  
         ref[2,4,1,0]=(-0.945983571254)/(o+1.)+(0.362615161801)+(-0.97703977388)*0.5**o  
         ref[2,4,1,1]=(-0.778028939318)/(o+1.)+(0.423610287746)+(-0.964329365094)*0.5**o  
         ref[2,4,2,0]=(-0.138477487464)/(o+1.)+(-0.290097108281)+(-0.882489825678)*0.5**o  
         ref[2,4,2,1]=(-0.953853492601)/(o+1.)+(-0.179508678068)+(-0.791359569512)*0.5**o  
         ref[3,0,0,0]=(-0.199022712971)/(o+1.)+(0.253562515321)+(-0.814507939536)*0.5**o  
         ref[3,0,0,1]=(0.112777444671)/(o+1.)+(-0.304438182199)+(0.0414041756638)*0.5**o  
         ref[3,0,1,0]=(-0.880947344135)/(o+1.)+(-0.194192553178)+(-0.537458180783)*0.5**o  
         ref[3,0,1,1]=(0.39314163058)/(o+1.)+(-0.775542968704)+(0.751321284745)*0.5**o  
         ref[3,0,2,0]=(-0.482557545787)/(o+1.)+(-0.0683141681573)+(0.815235707945)*0.5**o  
         ref[3,0,2,1]=(0.689498951848)/(o+1.)+(0.278187448835)+(0.723602555722)*0.5**o  
         ref[3,1,0,0]=(0.293238350118)/(o+1.)+(0.126767755198)+(0.733428548881)*0.5**o  
         ref[3,1,0,1]=(-0.26577191789)/(o+1.)+(0.201156903364)+(-0.698866683588)*0.5**o  
         ref[3,1,1,0]=(0.439591690299)/(o+1.)+(-0.288902429619)+(-0.836123373092)*0.5**o  
         ref[3,1,1,1]=(0.8910765985)/(o+1.)+(0.0553222730519)+(-0.194849541985)*0.5**o  
         ref[3,1,2,0]=(-0.0320019026134)/(o+1.)+(0.477772657371)+(-0.497305257159)*0.5**o  
         ref[3,1,2,1]=(-0.0499399267727)/(o+1.)+(-0.47037968496)+(-0.116903274335)*0.5**o  
         ref[3,2,0,0]=(-0.276422491301)/(o+1.)+(-0.812540687574)+(-0.344751138134)*0.5**o  
         ref[3,2,0,1]=(-0.00141392846802)/(o+1.)+(0.102797761295)+(0.591299515759)*0.5**o  
         ref[3,2,1,0]=(0.630823139203)/(o+1.)+(0.743132641412)+(-0.700718656569)*0.5**o  
         ref[3,2,1,1]=(0.490401876791)/(o+1.)+(-0.0461798489229)+(0.286459626346)*0.5**o  
         ref[3,2,2,0]=(-0.787385728473)/(o+1.)+(0.0658852261331)+(0.377001414541)*0.5**o  
         ref[3,2,2,1]=(-0.158857143023)/(o+1.)+(-0.421186525234)+(0.548872945376)*0.5**o  
         ref[3,3,0,0]=(0.029229133788)/(o+1.)+(0.069575027013)+(0.212408725319)*0.5**o  
         ref[3,3,0,1]=(0.757333397205)/(o+1.)+(0.029368913907)+(-0.74563598635)*0.5**o  
         ref[3,3,1,0]=(0.0943476349516)/(o+1.)+(0.0337288993927)+(-0.926758427661)*0.5**o  
         ref[3,3,1,1]=(-0.769051069188)/(o+1.)+(-0.844682211294)+(-0.575678885962)*0.5**o  
         ref[3,3,2,0]=(0.246931939289)/(o+1.)+(0.756380254609)+(0.867209683046)*0.5**o  
         ref[3,3,2,1]=(0.535429280541)/(o+1.)+(-0.0329131735419)+(0.869305051424)*0.5**o  
         ref[3,4,0,0]=(-0.405156907998)/(o+1.)+(-0.244492906569)+(0.256665875603)*0.5**o  
         ref[3,4,0,1]=(-0.140892979474)/(o+1.)+(0.516304250401)+(-0.120211653262)*0.5**o  
         ref[3,4,1,0]=(0.168500977091)/(o+1.)+(0.089683045067)+(0.0684768301186)*0.5**o  
         ref[3,4,1,1]=(0.479212374255)/(o+1.)+(-0.626588026593)+(-0.222516818267)*0.5**o  
         ref[3,4,2,0]=(-0.563625996633)/(o+1.)+(-0.120136908079)+(0.192015305399)*0.5**o  
         ref[3,4,2,1]=(-0.031361929046)/(o+1.)+(0.332029567053)+(-0.820432233148)*0.5**o  
       else:  
         s[0,0,0,0]=(0.186907875567)*x[0]+(0.323825050263)*x[1]+(1.15648314531)*x[2]  
         s[0,0,0,1]=(1.12367405158)*x[0]+(1.13427439957)*x[1]+(0.189106618663)*x[2]  
         s[0,0,1,0]=(1.76772912309)*x[0]+(0.0616670242122)*x[1]+(-1.23257311969)*x[2]  
         s[0,0,1,1]=(0.0497251821243)*x[0]+(-1.47406701801)*x[1]+(0.164922402015)*x[2]  
         s[0,0,2,0]=(-1.40783401802)*x[0]+(0.684901383857)*x[1]+(0.283077416398)*x[2]  
         s[0,0,2,1]=(-0.283194016281)*x[0]+(-1.60164790888)*x[1]+(0.412908024034)*x[2]  
         s[0,1,0,0]=(0.957812695611)*x[0]+(-0.863209638895)*x[1]+(-0.609946161661)*x[2]  
         s[0,1,0,1]=(-0.410080093222)*x[0]+(0.703061988282)*x[1]+(0.0546952979936)*x[2]  
         s[0,1,1,0]=(-1.43265292137)*x[0]+(-1.28132882624)*x[1]+(-0.103305431528)*x[2]  
         s[0,1,1,1]=(-0.973042964661)*x[0]+(0.118946651326)*x[1]+(0.0121414797284)*x[2]  
         s[0,1,2,0]=(-1.31257233483)*x[0]+(-1.90572394465)*x[1]+(-0.426472675848)*x[2]  
         s[0,1,2,1]=(1.25719983663)*x[0]+(-0.68807451729)*x[1]+(0.329745219822)*x[2]  
         s[0,2,0,0]=(-0.317555693596)*x[0]+(0.464722269829)*x[1]+(-0.0253415732374)*x[2]  
         s[0,2,0,1]=(-0.802071257989)*x[0]+(-1.07682010382)*x[1]+(-1.52372537155)*x[2]  
         s[0,2,1,0]=(-0.697501763365)*x[0]+(-1.5918814652)*x[1]+(-1.03755334358)*x[2]  
         s[0,2,1,1]=(0.292457959822)*x[0]+(-0.446371848663)*x[1]+(1.32282628125)*x[2]  
         s[0,2,2,0]=(1.44590220139)*x[0]+(-0.556542973367)*x[1]+(0.999665797669)*x[2]  
         s[0,2,2,1]=(-0.376272847083)*x[0]+(-0.0251287305789)*x[1]+(0.364915231203)*x[2]  
         s[0,3,0,0]=(0.88046028761)*x[0]+(0.372647019255)*x[1]+(-1.52356563515)*x[2]  
         s[0,3,0,1]=(0.0765111785452)*x[0]+(-0.947059538185)*x[1]+(0.332098361392)*x[2]  
         s[0,3,1,0]=(-1.37435064568)*x[0]+(1.04159418667)*x[1]+(0.314113199294)*x[2]  
         s[0,3,1,1]=(1.03796425672)*x[0]+(-0.139508518244)*x[1]+(-0.46214547857)*x[2]  
         s[0,3,2,0]=(0.285674556261)*x[0]+(-0.915609582509)*x[1]+(0.683131361973)*x[2]  
         s[0,3,2,1]=(0.703275850512)*x[0]+(-0.894071596437)*x[1]+(0.118084971572)*x[2]  
         s[0,4,0,0]=(-1.29507182493)*x[0]+(-0.275563564467)*x[1]+(-1.29101960297)*x[2]  
         s[0,4,0,1]=(0.726127419233)*x[0]+(-0.163731035409)*x[1]+(1.45773190781)*x[2]  
         s[0,4,1,0]=(-0.321962778987)*x[0]+(-0.434741013545)*x[1]+(0.348257210746)*x[2]  
         s[0,4,1,1]=(0.892154653814)*x[0]+(1.12188965959)*x[1]+(-1.42589350879)*x[2]  
         s[0,4,2,0]=(-1.06019594336)*x[0]+(-1.5907947093)*x[1]+(-1.64125703099)*x[2]  
         s[0,4,2,1]=(0.820572048651)*x[0]+(-0.528087471135)*x[1]+(-0.0823830365488)*x[2]  
         s[1,0,0,0]=(0.823455925698)*x[0]+(0.456056899485)*x[1]+(0.708907347857)*x[2]  
         s[1,0,0,1]=(0.013059728892)*x[0]+(-0.772283592797)*x[1]+(0.363920439078)*x[2]  
         s[1,0,1,0]=(-0.569161155945)*x[0]+(-1.60837471571)*x[1]+(-1.12748440619)*x[2]  
         s[1,0,1,1]=(-1.06458634572)*x[0]+(-1.10787449393)*x[1]+(1.43157821547)*x[2]  
         s[1,0,2,0]=(1.42955732758)*x[0]+(-0.769967391917)*x[1]+(0.461386087764)*x[2]  
         s[1,0,2,1]=(-1.12922605294)*x[0]+(-0.256069161837)*x[1]+(0.934117328474)*x[2]  
         s[1,1,0,0]=(-0.296512978109)*x[0]+(0.0247034910192)*x[1]+(-0.0918640286973)*x[2]  
         s[1,1,0,1]=(0.262151201281)*x[0]+(-0.556624983637)*x[1]+(-0.82641291041)*x[2]  
         s[1,1,1,0]=(-0.909049007906)*x[0]+(0.578952420411)*x[1]+(0.0963761548489)*x[2]  
         s[1,1,1,1]=(0.789884036316)*x[0]+(0.714044849036)*x[1]+(-0.348148665956)*x[2]  
         s[1,1,2,0]=(-0.306802924795)*x[0]+(0.166007262622)*x[1]+(0.812933157357)*x[2]  
         s[1,1,2,1]=(-0.23666871482)*x[0]+(0.0180126754613)*x[1]+(0.465074288631)*x[2]  
         s[1,2,0,0]=(-1.14910199315)*x[0]+(0.930765031574)*x[1]+(1.63176081675)*x[2]  
         s[1,2,0,1]=(-0.220753578398)*x[0]+(0.153024000962)*x[1]+(0.29171013278)*x[2]  
         s[1,2,1,0]=(-0.571208521033)*x[0]+(1.18218013588)*x[1]+(-0.0281527591651)*x[2]  
         s[1,2,1,1]=(-0.0212229342253)*x[0]+(0.577228434778)*x[1]+(-0.0934776488559)*x[2]  
         s[1,2,2,0]=(-0.592424182282)*x[0]+(-0.0403519194823)*x[1]+(0.150970946422)*x[2]  
         s[1,2,2,1]=(-1.33143395635)*x[0]+(-1.3121470647)*x[1]+(-0.78895334942)*x[2]  
         s[1,3,0,0]=(0.626711601793)*x[0]+(0.0187262812242)*x[1]+(-0.392743911033)*x[2]  
         s[1,3,0,1]=(0.0360431567199)*x[0]+(-0.921408398245)*x[1]+(-0.172097608208)*x[2]  
         s[1,3,1,0]=(0.0223088597951)*x[0]+(0.139631235358)*x[1]+(-0.529170239405)*x[2]  
         s[1,3,1,1]=(0.11834184642)*x[0]+(-0.754799078426)*x[1]+(0.136555856977)*x[2]  
         s[1,3,2,0]=(-0.288966482257)*x[0]+(-0.227333376328)*x[1]+(-0.583704417546)*x[2]  
         s[1,3,2,1]=(0.263525293937)*x[0]+(0.842984179305)*x[1]+(0.592096192935)*x[2]  
         s[1,4,0,0]=(-0.0145931697196)*x[0]+(-0.839359041248)*x[1]+(-0.635230965652)*x[2]  
         s[1,4,0,1]=(-0.452080234732)*x[0]+(-0.500376989587)*x[1]+(-0.27541187994)*x[2]  
         s[1,4,1,0]=(-0.028441856276)*x[0]+(0.99292041207)*x[1]+(-0.555205406529)*x[2]  
         s[1,4,1,1]=(0.670664493076)*x[0]+(0.562911949702)*x[1]+(-0.767721105918)*x[2]  
         s[1,4,2,0]=(0.960781399312)*x[0]+(0.0966843021482)*x[1]+(-0.448822164554)*x[2]  
         s[1,4,2,1]=(1.19002654689)*x[0]+(0.0423440255032)*x[1]+(-0.566501161163)*x[2]  
         s[2,0,0,0]=(-1.21404047236)*x[0]+(0.246576983095)*x[1]+(-1.35965095619)*x[2]  
         s[2,0,0,1]=(-0.183423338333)*x[0]+(0.490089064451)*x[1]+(-0.578583461456)*x[2]  
         s[2,0,1,0]=(1.12402576003)*x[0]+(-0.175494364486)*x[1]+(-0.303488944097)*x[2]  
         s[2,0,1,1]=(-1.65572015787)*x[0]+(-1.0020836407)*x[1]+(0.480903327702)*x[2]  
         s[2,0,2,0]=(0.145764271661)*x[0]+(-0.263090439788)*x[1]+(-1.17377189982)*x[2]  
         s[2,0,2,1]=(-0.837574918907)*x[0]+(1.48561229389)*x[1]+(0.967914367565)*x[2]  
         s[2,1,0,0]=(0.509756439273)*x[0]+(-0.111493103227)*x[1]+(0.748245818033)*x[2]  
         s[2,1,0,1]=(0.131007923179)*x[0]+(-0.128179547101)*x[1]+(-0.755140067557)*x[2]  
         s[2,1,1,0]=(-0.635852982675)*x[0]+(-0.475693144737)*x[1]+(-0.331519420739)*x[2]  
         s[2,1,1,1]=(-1.29780426286)*x[0]+(0.774138127446)*x[1]+(-1.74756722025)*x[2]  
         s[2,1,2,0]=(-0.14015158014)*x[0]+(-0.875354388859)*x[1]+(0.791253726662)*x[2]  
         s[2,1,2,1]=(-0.0772968366884)*x[0]+(-0.937984863796)*x[1]+(-0.0602294365875)*x[2]  
         s[2,2,0,0]=(0.955209462705)*x[0]+(0.849659517825)*x[1]+(0.0983431115722)*x[2]  
         s[2,2,0,1]=(1.72389105142)*x[0]+(-0.412358364777)*x[1]+(-1.3083297441)*x[2]  
         s[2,2,1,0]=(-0.895927963754)*x[0]+(1.65404011945)*x[1]+(0.297503560372)*x[2]  
         s[2,2,1,1]=(1.34506983158)*x[0]+(-0.552690724942)*x[1]+(0.0882447776246)*x[2]  
         s[2,2,2,0]=(-0.603470575964)*x[0]+(1.77788342742)*x[1]+(-0.960079624369)*x[2]  
         s[2,2,2,1]=(-0.547711891427)*x[0]+(-0.562393805421)*x[1]+(-0.183240255616)*x[2]  
         s[2,3,0,0]=(1.01018738642)*x[0]+(1.4085839719)*x[1]+(-0.619343450789)*x[2]  
         s[2,3,0,1]=(0.525036070827)*x[0]+(-0.760210492125)*x[1]+(0.621245864477)*x[2]  
         s[2,3,1,0]=(-0.786180468736)*x[0]+(0.784642311709)*x[1]+(-0.377020976891)*x[2]  
         s[2,3,1,1]=(-0.333203982307)*x[0]+(-0.044265604048)*x[1]+(-1.6196925017)*x[2]  
         s[2,3,2,0]=(-0.885601870306)*x[0]+(0.650248271309)*x[1]+(-1.7206378066)*x[2]  
         s[2,3,2,1]=(0.0941920781315)*x[0]+(-1.24650013731)*x[1]+(0.67065624977)*x[2]  
         s[2,4,0,0]=(0.0693008855416)*x[0]+(-1.33764045153)*x[1]+(0.277137873936)*x[2]  
         s[2,4,0,1]=(0.887968960137)*x[0]+(1.57875979002)*x[1]+(-0.103648235191)*x[2]  
         s[2,4,1,0]=(-0.547070384787)*x[0]+(-0.376770947917)*x[1]+(-1.81372790514)*x[2]  
         s[2,4,1,1]=(0.375805210805)*x[0]+(0.660242065798)*x[1]+(1.69413225283)*x[2]  
         s[2,4,2,0]=(-0.914715181893)*x[0]+(1.27301677765)*x[1]+(0.974031227808)*x[2]  
         s[2,4,2,1]=(-0.503816280288)*x[0]+(0.552217633496)*x[1]+(-0.90127280688)*x[2]  
         s[3,0,0,0]=(0.768275498738)*x[0]+(-0.811563543342)*x[1]+(-0.69998185891)*x[2]  
         s[3,0,0,1]=(-0.629451202094)*x[0]+(1.02346787018)*x[1]+(0.780161524988)*x[2]  
         s[3,0,1,0]=(0.584052565724)*x[0]+(-0.069634462512)*x[1]+(-1.00341091459)*x[2]  
         s[3,0,1,1]=(1.03073176869)*x[0]+(1.53263439484)*x[1]+(1.03753255807)*x[2]  
         s[3,0,2,0]=(0.0522744193577)*x[0]+(0.308512837882)*x[1]+(-0.315970675533)*x[2]  
         s[3,0,2,1]=(0.0747430001964)*x[0]+(0.863711676177)*x[1]+(1.07705766445)*x[2]  
         s[3,1,0,0]=(0.114255376522)*x[0]+(1.47818231679)*x[1]+(0.0222267873076)*x[2]  
         s[3,1,0,1]=(0.613783843499)*x[0]+(0.369289287936)*x[1]+(1.08226313005)*x[2]  
         s[3,1,1,0]=(0.474121107413)*x[0]+(-0.284169623677)*x[1]+(1.26739419136)*x[2]  
         s[3,1,1,1]=(0.703235040854)*x[0]+(0.340511678132)*x[1]+(0.314037803901)*x[2]  
         s[3,1,2,0]=(-0.754512705698)*x[0]+(0.957288483514)*x[1]+(1.38853172146)*x[2]  
         s[3,1,2,1]=(0.338933480448)*x[0]+(1.30797425088)*x[1]+(-0.492819385452)*x[2]  
         s[3,2,0,0]=(0.477902330587)*x[0]+(0.658604196318)*x[1]+(-0.669039618554)*x[2]  
         s[3,2,0,1]=(0.584833130533)*x[0]+(0.205626741315)*x[1]+(-0.449267859148)*x[2]  
         s[3,2,1,0]=(0.392564971475)*x[0]+(-0.867191184183)*x[1]+(0.508221616556)*x[2]  
         s[3,2,1,1]=(0.199023224346)*x[0]+(0.210018232234)*x[1]+(0.17332311179)*x[2]  
         s[3,2,2,0]=(-0.530182002398)*x[0]+(-0.70410123336)*x[1]+(0.454418407328)*x[2]  
         s[3,2,2,1]=(-1.00165228123)*x[0]+(0.253353462588)*x[1]+(1.07981964164)*x[2]  
         s[3,3,0,0]=(-0.00388223127856)*x[0]+(-0.256156832173)*x[1]+(-1.22618259947)*x[2]  
         s[3,3,0,1]=(1.04947612909)*x[0]+(-0.590938924785)*x[1]+(-0.80453902875)*x[2]  
         s[3,3,1,0]=(0.395025775135)*x[0]+(-1.30382091375)*x[1]+(1.00251618393)*x[2]  
         s[3,3,1,1]=(-0.601315067206)*x[0]+(-0.226958312276)*x[1]+(-0.69720544326)*x[2]  
         s[3,3,2,0]=(0.748907154335)*x[0]+(-0.694932273918)*x[1]+(0.143655252827)*x[2]  
         s[3,3,2,1]=(-0.228346281761)*x[0]+(0.0818793892413)*x[1]+(0.376376078012)*x[2]  
         s[3,4,0,0]=(0.675502208069)*x[0]+(0.498131679631)*x[1]+(-0.606527858224)*x[2]  
         s[3,4,0,1]=(0.230994211989)*x[0]+(-1.81768645462)*x[1]+(1.59488392513)*x[2]  
         s[3,4,1,0]=(-1.35866095694)*x[0]+(-0.122601842831)*x[1]+(1.73437014104)*x[2]  
         s[3,4,1,1]=(0.63210638436)*x[0]+(1.50387972886)*x[1]+(0.655743288533)*x[2]  
         s[3,4,2,0]=(1.42156357373)*x[0]+(-0.701544596166)*x[1]+(0.88931540397)*x[2]  
         s[3,4,2,1]=(-0.405515262733)*x[0]+(0.872922189212)*x[1]+(-1.13847750709)*x[2]  
         ref[0,0,0,0]=(0.415231330279)/(o+1.)+(0.982601202296)+(-0.713217663735)*0.5**o  
         ref[0,0,0,1]=(0.650505784971)/(o+1.)+(0.406482330235)+(0.983584624374)*0.5**o  
         ref[0,0,1,0]=(-0.615926989595)/(o+1.)+(0.113540305186)+(0.98566940684)*0.5**o  
         ref[0,0,1,1]=(-1.36210768774)/(o+1.)+(0.330430698616)+(-0.558173143358)*0.5**o  
         ref[0,0,2,0]=(0.589319954581)/(o+1.)+(-0.146725890489)+(-0.735723391368)*0.5**o  
         ref[0,0,2,1]=(-0.819641973816)/(o+1.)+(0.0696728799133)+(-0.791637687141)*0.5**o  
         ref[0,1,0,0]=(-0.984505810214)/(o+1.)+(0.0623424750886)+(0.344477755092)*0.5**o  
         ref[0,1,0,1]=(0.0372238318297)/(o+1.)+(0.201167151246)+(-0.0918809412683)*0.5**o  
         ref[0,1,1,0]=(-0.988162693644)/(o+1.)+(-0.658809560166)+(-0.51150536516)*0.5**o  
         ref[0,1,1,1]=(0.191409590473)/(o+1.)+(-0.426836466412)+(-0.179691491256)*0.5**o  
         ref[0,1,2,0]=(-1.50151479209)/(o+1.)+(-0.648874443157)+(-0.84550527693)*0.5**o  
         ref[0,1,2,1]=(-1.3172677321)/(o+1.)+(0.885092333538)+(0.445953604186)*0.5**o  
         ref[0,2,0,0]=(0.1269682286)/(o+1.)+(-0.175772039094)+(0.346400852583)*0.5**o  
         ref[0,2,0,1]=(-1.46726533796)/(o+1.)+(-1.05015066374)+(0.164949932075)*0.5**o  
         ref[0,2,1,0]=(-1.23701559967)/(o+1.)+(-0.825973196415)+(-0.437974579642)*0.5**o  
         ref[0,2,1,1]=(0.132084480709)/(o+1.)+(0.0364121752536)+(0.964003561191)*0.5**o  
         ref[0,2,2,0]=(-0.0575514788048)/(o+1.)+(0.574131321284)+(0.798313861933)*0.5**o  
         ref[0,2,2,1]=(-0.854422215721)/(o+1.)+(0.454172855359)+(-0.0904098414555)*0.5**o  
         ref[0,3,0,0]=(-1.04634289994)/(o+1.)+(0.354533324899)+(0.0668179218583)*0.5**o  
         ref[0,3,0,1]=(-0.415702586981)/(o+1.)+(0.126519101056)+(-0.375785613379)*0.5**o  
         ref[0,3,1,0]=(-0.268120824236)/(o+1.)+(0.500467336081)+(-0.751457107646)*0.5**o  
         ref[0,3,1,1]=(0.827791290739)/(o+1.)+(-0.347418978526)+(0.303356926219)*0.5**o  
         ref[0,3,2,0]=(-0.1387759961)/(o+1.)+(-0.350616137823)+(0.893204607472)*0.5**o  
         ref[0,3,2,1]=(0.129310667468)/(o+1.)+(-0.252264005651)+(0.302506569481)*0.5**o  
         ref[0,4,0,0]=(-0.021050677621)/(o+1.)+(-0.980639199085)+(-0.879325916576)*0.5**o  
         ref[0,4,0,1]=(-0.262715302419)/(o+1.)+(1.20073556064)+(-0.118627527238)*0.5**o  
         ref[0,4,1,0]=(0.261035782917)/(o+1.)+(-0.449979981215)+(0.230477597727)*0.5**o  
         ref[0,4,1,1]=(-0.47960276307)/(o+1.)+(0.219069456491)+(0.629614654702)*0.5**o  
         ref[0,4,2,0]=(-1.27925873031)/(o+1.)+(-1.32602054802)+(-0.360947857308)*0.5**o  
         ref[0,4,2,1]=(-1.34486930774)/(o+1.)+(0.546553886393)+(0.46186307592)*0.5**o  
         ref[1,0,0,0]=(0.430196940607)/(o+1.)+(0.311302638938)+(0.935617954556)*0.5**o  
         ref[1,0,0,1]=(0.0865234935036)/(o+1.)+(-0.268442519337)+(0.055058120343)*0.5**o  
         ref[1,0,1,0]=(-1.48387607046)/(o+1.)+(-0.786378289878)+(-0.248387627621)*0.5**o  
         ref[1,0,1,1]=(0.758534313728)/(o+1.)+(-0.265213280892)+(-0.968990376127)*0.5**o  
         ref[1,0,2,0]=(-0.713142570031)/(o+1.)+(0.462618013893)+(0.908882565677)*0.5**o  
         ref[1,0,2,1]=(-0.482219090892)/(o+1.)+(0.307689127346)+(-0.584337050105)*0.5**o  
         ref[1,1,0,0]=(-1.17250881543)/(o+1.)+(0.113442845094)+(0.581949609453)*0.5**o  
         ref[1,1,0,1]=(-1.3468375595)/(o+1.)+(0.395669021834)+(-0.565387176936)*0.5**o  
         ref[1,1,1,0]=(0.2018351732)/(o+1.)+(-0.157830690125)+(-0.119894225596)*0.5**o  
         ref[1,1,1,1]=(1.21543817764)/(o+1.)+(-0.0497756593583)+(0.0398933604741)*0.5**o  
         ref[1,1,2,0]=(-0.162294483944)/(o+1.)+(0.85994581496)+(-0.885459650791)*0.5**o  
         ref[1,1,2,1]=(1.24422084677)/(o+1.)+(-0.379646444866)+(-0.238509707766)*0.5**o  
         ref[1,2,0,0]=(1.5435438681)/(o+1.)+(0.08540126524)+(-0.300922543405)*0.5**o  
         ref[1,2,0,1]=(-0.112210840363)/(o+1.)+(0.480051249506)+(-0.623911103306)*0.5**o  
         ref[1,2,1,0]=(0.285721711645)/(o+1.)+(0.0100191655774)+(0.27705881288)*0.5**o  
         ref[1,2,1,1]=(0.66930209958)/(o+1.)+(-0.542529578578)+(0.878284909271)*0.5**o  
         ref[1,2,2,0]=(1.12100699995)/(o+1.)+(-0.678457673316)+(-0.245896808662)*0.5**o  
         ref[1,2,2,1]=(-0.88612973059)/(o+1.)+(-1.00088764314)+(-0.544629353594)*0.5**o  
         ref[1,3,0,0]=(0.387350166894)/(o+1.)+(-0.499575950447)+(0.864495705983)*0.5**o  
         ref[1,3,0,1]=(-0.942393535847)/(o+1.)+(0.0303050564575)+(-0.175679426801)*0.5**o  
         ref[1,3,1,0]=(-0.798050539357)/(o+1.)+(0.126548837387)+(0.177722720331)*0.5**o  
         ref[1,3,1,1]=(-1.50957773465)/(o+1.)+(0.172938183698)+(0.663799992229)*0.5**o  
         ref[1,3,2,0]=(0.469444503978)/(o+1.)+(-0.647836043317)+(-0.273776693474)*0.5**o  
         ref[1,3,2,1]=(0.310061780349)/(o+1.)+(1.05452404891)+(-0.720504211989)*0.5**o  
         ref[1,4,0,0]=(-0.820548632752)/(o+1.)+(0.105943005381)+(-0.88052055463)*0.5**o  
         ref[1,4,0,1]=(-0.158467564266)/(o+1.)+(-0.709811754591)+(0.35022196919)*0.5**o  
         ref[1,4,1,0]=(0.00990374166591)/(o+1.)+(0.51839921597)+(-0.637429024341)*0.5**o  
         ref[1,4,1,1]=(-0.246106620377)/(o+1.)+(0.33455634807)+(0.0428492610972)*0.5**o  
         ref[1,4,2,0]=(0.472702988578)/(o+1.)+(0.0688149777117)+(-0.00168940709497)*0.5**o  
         ref[1,4,2,1]=(0.284541065049)/(o+1.)+(-0.0548349320689)+(0.490998210318)*0.5**o  
         ref[2,0,0,0]=(-0.733338280715)/(o+1.)+(-0.47189177308)+(-0.649992618571)*0.5**o  
         ref[2,0,0,1]=(-0.948815264173)/(o+1.)+(0.837962467604)+(-0.999027406375)*0.5**o  
         ref[2,0,1,0]=(-0.0944539750337)/(o+1.)+(0.0746201219713)+(0.590256182541)*0.5**o  
         ref[2,0,1,1]=(0.044594970161)/(o+1.)+(-0.717673746264)+(-0.786147948501)*0.5**o  
         ref[2,0,2,0]=(-0.387429911457)/(o+1.)+(-0.0765750118601)+(-0.750518132769)*0.5**o  
         ref[2,0,2,1]=(1.28025192232)/(o+1.)+(0.425010917096)+(-0.514322013965)*0.5**o  
         ref[2,1,0,0]=(0.85161480185)/(o+1.)+(-0.117153136076)+(0.52920062438)*0.5**o  
         ref[2,1,0,1]=(-0.558914411305)/(o+1.)+(-0.229298513746)+(0.265199747318)*0.5**o  
         ref[2,1,1,0]=(-0.33769433116)/(o+1.)+(-0.678382612728)+(0.251394008465)*0.5**o  
         ref[2,1,1,1]=(-0.990803230186)/(o+1.)+(-0.413400680719)+(-0.453628764049)*0.5**o  
         ref[2,1,2,0]=(-0.377834292093)/(o+1.)+(0.521893888533)+(-0.890205727309)*0.5**o  
         ref[2,1,2,1]=(-1.33150035489)/(o+1.)+(-0.0586549531766)+(0.373299124171)*0.5**o  
         ref[2,2,0,0]=(-0.166255483746)/(o+1.)+(0.816713521389)+(0.436040533071)*0.5**o  
         ref[2,2,0,1]=(-1.39682071748)/(o+1.)+(0.21770833884)+(0.964606982344)*0.5**o  
         ref[2,2,1,0]=(1.3247136685)/(o+1.)+(-0.0466914213895)+(-0.175715109647)*0.5**o  
         ref[2,2,1,1]=(-0.522454725229)/(o+1.)+(0.291262422208)+(0.820553765077)*0.5**o  
         ref[2,2,2,0]=(0.136169385992)/(o+1.)+(0.253426637378)+(-0.42868943366)*0.5**o  
         ref[2,2,2,1]=(-0.131390793028)/(o+1.)+(-0.715512276073)+(0.269069392711)*0.5**o  
         ref[2,3,0,0]=(0.1679740824)/(o+1.)+(0.653952560954)+(0.323548703221)*0.5**o  
         ref[2,3,0,1]=(-0.0511907658967)/(o+1.)+(-0.236699539579)+(0.910661288233)*0.5**o  
         ref[2,3,1,0]=(0.451520708483)/(o+1.)+(-0.065786465884)+(-0.698506910633)*0.5**o  
         ref[2,3,1,1]=(-0.542162878453)/(o+1.)+(-0.237944135968)+(-0.979110937669)*0.5**o  
         ref[2,3,2,0]=(-0.489308922223)/(o+1.)+(-0.563117809253)+(-0.34044686487)*0.5**o  
         ref[2,3,2,1]=(0.382652422829)/(o+1.)+(-0.328188452455)+(-0.207927327325)*0.5**o  
         ref[2,4,0,0]=(0.0347966753187)/(o+1.)+(-0.629864354262)+(0.233730341151)*0.5**o  
         ref[2,4,0,1]=(0.123939573502)/(o+1.)+(1.03666652808)+(0.165807885309)*0.5**o  
         ref[2,4,1,0]=(-0.829855747878)/(o+1.)+(-0.507284312041)+(-0.89314486588)*0.5**o  
         ref[2,4,1,1]=(1.80556499882)/(o+1.)+(0.554771100606)+(-0.1849276706)*0.5**o  
         ref[2,4,2,0]=(0.829439412646)/(o+1.)+(0.342620313927)+(-0.182347216931)*0.5**o  
         ref[2,4,2,1]=(-0.824674529166)/(o+1.)+(-0.172483000807)+(0.316769077106)*0.5**o  
         ref[3,0,0,0]=(-1.81534289679)/(o+1.)+(0.235921261477)+(0.600230470324)*0.5**o  
         ref[3,0,0,1]=(0.758824131522)/(o+1.)+(0.540267308765)+(-0.665180555978)*0.5**o  
         ref[3,0,1,0]=(-0.61930013537)/(o+1.)+(-0.0863636993976)+(0.303034722786)*0.5**o  
         ref[3,0,1,1]=(1.09849962509)/(o+1.)+(0.780381688481)+(0.941635719543)*0.5**o  
         ref[3,0,2,0]=(0.984167465846)/(o+1.)+(-0.471651730612)+(0.00395257708327)*0.5**o  
         ref[3,0,2,1]=(-0.0216502142754)/(o+1.)+(1.25274987136)+(-0.468337187615)*0.5**o  
         ref[3,1,0,0]=(1.21762392246)/(o+1.)+(0.0235896546035)+(0.349861248945)*0.5**o  
         ref[3,1,0,1]=(0.681142299068)/(o+1.)+(0.586170195383)+(0.211853571648)*0.5**o  
         ref[3,1,1,0]=(1.22842568638)/(o+1.)+(0.308050279545)+(-0.387180570377)*0.5**o  
         ref[3,1,1,1]=(-0.708900188728)/(o+1.)+(1.04208633918)+(-0.0174879667472)*0.5**o  
         ref[3,1,2,0]=(1.79188214766)/(o+1.)+(0.301719505956)+(-0.804013660301)*0.5**o  
         ref[3,1,2,1]=(0.669297533033)/(o+1.)+(0.119247079862)+(0.246296653123)*0.5**o  
         ref[3,2,0,0]=(-0.791486989477)/(o+1.)+(0.204677775698)+(0.849598346434)*0.5**o  
         ref[3,2,0,1]=(-0.505948254664)/(o+1.)+(0.0688840300017)+(0.70937220736)*0.5**o  
         ref[3,2,1,0]=(-0.691348115315)/(o+1.)+(0.437490279091)+(-0.150037039019)*0.5**o  
         ref[3,2,1,1]=(0.708369627369)/(o+1.)+(0.176205102648)+(-0.478415264295)*0.5**o  
         ref[3,2,2,0]=(0.297093119787)/(o+1.)+(-0.248132872678)+(-0.580692202861)*0.5**o  
         ref[3,2,2,1]=(-0.476148841282)/(o+1.)+(0.443525381364)+(-0.0793810984529)*0.5**o  
         ref[3,3,0,0]=(-0.901387033571)/(o+1.)+(-0.628090499737)+(0.671346370124)*0.5**o  
         ref[3,3,0,1]=(-0.123005978892)/(o+1.)+(-0.59694482259)+(0.970893799626)*0.5**o  
         ref[3,3,1,0]=(-0.784454504087)/(o+1.)+(0.436648462004)+(0.00487862539679)*0.5**o  
         ref[3,3,1,1]=(-1.73297919322)/(o+1.)+(-0.09410977014)+(0.395719910762)*0.5**o  
         ref[3,3,2,0]=(0.0989755292654)/(o+1.)+(0.062352403584)+(-0.0260502031901)*0.5**o  
         ref[3,3,2,1]=(-0.690845491742)/(o+1.)+(0.678904082779)+(-0.437053488325)*0.5**o  
         ref[3,4,0,0]=(-0.801695028055)/(o+1.)+(0.731880266747)+(-0.0949594759642)*0.5**o  
         ref[3,4,0,1]=(-0.263446786535)/(o+1.)+(0.0496642554438)+(0.172309958154)*0.5**o  
         ref[3,4,1,0]=(0.542595531974)/(o+1.)+(0.308327980561)+(-0.906144151831)*0.5**o  
         ref[3,4,1,1]=(0.637885608826)/(o+1.)+(1.16403227519)+(-0.174220757444)*0.5**o  
         ref[3,4,2,0]=(0.946926166426)/(o+1.)+(0.0242541266649)+(0.613899961774)*0.5**o  
         ref[3,4,2,1]=(-0.0303035732231)/(o+1.)+(0.0375314231208)+(-0.715829853629)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(4, 5, 3, 2),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onFunctionOnContactZero_fromSymbol_ReducedContinuousFunction_rank0(self):  
       """  
       tests integral of rank 0 Symbol on the FunctionOnContactZero  
   
       assumptions: ReducedContinuousFunction(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=1  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=ReducedContinuousFunction(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=())  
       s=Data(0,(),w)  
       if dim==2:  
         s=(1.70255303494)*x[0]+(0.300011314949)*x[1]  
         ref=(0.345983004398)/(o+1.)+(0.363938720886)+(0.928703903719)*0.5**o  
       else:  
         s=(-1.68260770684)*x[0]+(-1.14729600003)*x[1]+(-1.35659279947)*x[2]  
         ref=(-1.3902352024)/(o+1.)+(-1.03788235052)+(-0.720496602901)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onFunctionOnContactZero_fromSymbol_ReducedContinuousFunction_rank1(self):  
       """  
       tests integral of rank 1 Symbol on the FunctionOnContactZero  
   
       assumptions: ReducedContinuousFunction(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=1  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=ReducedContinuousFunction(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(2,))  
       s=Data(0,(2,),w)  
       ref=numpy.zeros((2,),numpy.float_)  
       if dim==2:  
         s[0]=(0.23958799559)*x[0]+(-0.0458757682877)*x[1]  
         s[1]=(0.0897882061379)*x[0]+(-1.54974909413)*x[1]  
         ref[0]=(0.0485704769529)/(o+1.)+(0.210351971249)+(-0.275562192148)*0.5**o  
         ref[1]=(-0.821668980438)/(o+1.)+(-0.712207676061)+(0.786123444573)*0.5**o  
       else:  
         s[0]=(-1.44817804789)*x[0]+(0.670605136525)*x[1]+(-0.593548775192)*x[2]  
         s[1]=(-0.585702105721)*x[0]+(0.0665105334471)*x[1]+(-0.228099551666)*x[2]  
         ref[0]=(0.859021549917)/(o+1.)+(-0.759857813727)+(-0.710427609023)*0.5**o  
         ref[1]=(-1.40806718776)/(o+1.)+(0.267420623854)+(0.125934816108)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(2,),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onFunctionOnContactZero_fromSymbol_ReducedContinuousFunction_rank2(self):  
       """  
       tests integral of rank 2 Symbol on the FunctionOnContactZero  
   
       assumptions: ReducedContinuousFunction(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=1  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=ReducedContinuousFunction(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(4, 5))  
       s=Data(0,(4, 5),w)  
       ref=numpy.zeros((4, 5),numpy.float_)  
       if dim==2:  
         s[0,0]=(0.933177344575)*x[0]+(-0.643793974434)*x[1]  
         s[0,1]=(-0.311019666872)*x[0]+(0.686195407652)*x[1]  
         s[0,2]=(0.470203454822)*x[0]+(1.32374103685)*x[1]  
         s[0,3]=(-0.653103411901)*x[0]+(0.477452857192)*x[1]  
         s[0,4]=(1.12606394408)*x[0]+(0.0898490519564)*x[1]  
         s[1,0]=(1.26644130664)*x[0]+(0.226895598587)*x[1]  
         s[1,1]=(0.0271345466814)*x[0]+(0.435024033603)*x[1]  
         s[1,2]=(-0.227055843926)*x[0]+(-0.144686134637)*x[1]  
         s[1,3]=(0.466198287572)*x[0]+(-0.130830709376)*x[1]  
         s[1,4]=(1.04066080781)*x[0]+(0.546282129071)*x[1]  
         s[2,0]=(0.317469515041)*x[0]+(1.26366516514)*x[1]  
         s[2,1]=(-1.20210768286)*x[0]+(-0.0533328989847)*x[1]  
         s[2,2]=(0.278459393186)*x[0]+(-0.379156129627)*x[1]  
         s[2,3]=(1.03459096792)*x[0]+(-0.610026027371)*x[1]  
         s[2,4]=(1.288131278)*x[0]+(-0.309929698872)*x[1]  
         s[3,0]=(0.32856946183)*x[0]+(0.225709965354)*x[1]  
         s[3,1]=(-1.03183224237)*x[0]+(-0.0153171719792)*x[1]  
         s[3,2]=(0.259516430572)*x[0]+(-0.776082702284)*x[1]  
         s[3,3]=(-0.417978040907)*x[0]+(-0.0941785049007)*x[1]  
         s[3,4]=(1.07527114074)*x[0]+(-0.0198401110946)*x[1]  
         ref[0,0]=(-0.79959835955)/(o+1.)+(0.566758804494)+(-0.0445358792971)*0.5**o  
         ref[0,1]=(0.583455543567)/(o+1.)+(0.0458448886173)+(-0.299969580021)*0.5**o  
         ref[0,2]=(0.471614825642)/(o+1.)+(0.891760595232)+(-0.461191524434)*0.5**o  
         ref[0,3]=(0.672045220068)/(o+1.)+(-0.56343583876)+(0.279175902744)*0.5**o  
         ref[0,4]=(-0.127993678518)/(o+1.)+(0.52668612755)+(0.290534419455)*0.5**o  
         ref[1,0]=(0.822774751438)/(o+1.)+(-0.011855097694)+(0.694272349175)*0.5**o  
         ref[1,1]=(0.552626324952)/(o+1.)+(0.277929562319)+(-0.646326869305)*0.5**o  
         ref[1,2]=(-0.565996176797)/(o+1.)+(-0.128057099164)+(0.450368396562)*0.5**o  
         ref[1,3]=(0.627837338323)/(o+1.)+(-0.555359040353)+(0.818248320579)*0.5**o  
         ref[1,4]=(0.722984603229)/(o+1.)+(0.0957452220354)+(0.672467889583)*0.5**o  
         ref[2,0]=(0.664524759547)/(o+1.)+(0.678277833656)+(-0.439945746675)*0.5**o  
         ref[2,1]=(0.908213473231)/(o+1.)+(-0.805606306623)+(-0.552441441832)*0.5**o  
         ref[2,2]=(0.0908414991316)/(o+1.)+(0.131818510391)+(-0.455175256354)*0.5**o  
         ref[2,3]=(-0.119095663088)/(o+1.)+(-0.223144373358)+(0.989949350348)*0.5**o  
         ref[2,4]=(-0.0540728359185)/(o+1.)+(0.0748680956845)+(0.882538223681)*0.5**o  
         ref[3,0]=(0.98273847633)/(o+1.)+(-0.421621406424)+(0.414783763702)*0.5**o  
         ref[3,1]=(0.29285575515)/(o+1.)+(-0.462798732226)+(-0.41440770505)*0.5**o  
         ref[3,2]=(-0.509767634157)/(o+1.)+(-0.480617720091)+(0.954436802627)*0.5**o  
         ref[3,3]=(-0.762302422898)/(o+1.)+(0.100280539595)+(0.0495847978999)*0.5**o  
         ref[3,4]=(-0.154196647936)/(o+1.)+(0.329602137701)+(0.550423402184)*0.5**o  
       else:  
         s[0,0]=(1.34601675616)*x[0]+(-0.451295005459)*x[1]+(-0.49622174234)*x[2]  
         s[0,1]=(-0.327908015969)*x[0]+(-1.21019079469)*x[1]+(1.09622527656)*x[2]  
         s[0,2]=(-0.0243507161566)*x[0]+(-0.016230100758)*x[1]+(-1.37311484633)*x[2]  
         s[0,3]=(-0.445665346289)*x[0]+(-0.626824621259)*x[1]+(-0.196033254199)*x[2]  
         s[0,4]=(-0.819703680211)*x[0]+(1.30953832902)*x[1]+(0.0778023021203)*x[2]  
         s[1,0]=(0.219519741099)*x[0]+(-1.47335622754)*x[1]+(0.198662145648)*x[2]  
         s[1,1]=(-0.65456993306)*x[0]+(-0.125758153194)*x[1]+(-1.53966098547)*x[2]  
         s[1,2]=(-0.112157349953)*x[0]+(-0.459351490445)*x[1]+(1.6889234353)*x[2]  
         s[1,3]=(0.102642361518)*x[0]+(1.10412193101)*x[1]+(-0.239843060928)*x[2]  
         s[1,4]=(-0.232367456037)*x[0]+(-1.17836662288)*x[1]+(-0.814085860866)*x[2]  
         s[2,0]=(-1.00510966212)*x[0]+(1.23960710585)*x[1]+(0.0848958213029)*x[2]  
         s[2,1]=(-1.93901641139)*x[0]+(-0.0469703867512)*x[1]+(-0.21201338191)*x[2]  
         s[2,2]=(1.42666776379)*x[0]+(1.04000263985)*x[1]+(0.151609334515)*x[2]  
         s[2,3]=(-0.297049329338)*x[0]+(-0.103284668913)*x[1]+(-0.110261476034)*x[2]  
         s[2,4]=(0.964711394219)*x[0]+(1.28218755108)*x[1]+(-1.2382220868)*x[2]  
         s[3,0]=(-0.922061452692)*x[0]+(-1.36593539333)*x[1]+(1.11436583585)*x[2]  
         s[3,1]=(0.284590223973)*x[0]+(1.08442017719)*x[1]+(1.5619949376)*x[2]  
         s[3,2]=(-0.245207105356)*x[0]+(-1.77865635864)*x[1]+(-0.908570594143)*x[2]  
         s[3,3]=(0.426334196419)*x[0]+(-0.501103031142)*x[1]+(0.199762115243)*x[2]  
         s[3,4]=(1.33158896071)*x[0]+(0.44737802367)*x[1]+(-0.76095091762)*x[2]  
         ref[0,0]=(-0.581088472202)/(o+1.)+(0.287163129514)+(0.405262221535)*0.5**o  
         ref[0,1]=(0.695209950176)/(o+1.)+(-0.748195486472)+(0.359307488667)*0.5**o  
         ref[0,2]=(0.313650504565)/(o+1.)+(-1.20553227172)+(0.683718375628)*0.5**o  
         ref[0,3]=(-0.872265925416)/(o+1.)+(-0.216679466249)+(0.0371016361661)*0.5**o  
         ref[0,4]=(1.07552646704)/(o+1.)+(-0.293195846094)+(0.0785021760824)*0.5**o  
         ref[1,0]=(-1.22710752208)/(o+1.)+(0.409726431872)+(-0.647519682458)*0.5**o  
         ref[1,1]=(-0.940490307845)/(o+1.)+(-0.82083756271)+(0.26217636154)*0.5**o  
         ref[1,2]=(1.00054234642)/(o+1.)+(-0.0533842117578)+(0.223640672001)*0.5**o  
         ref[1,3]=(0.0595140200914)/(o+1.)+(0.407850368171)+(0.0917064751695)*0.5**o  
         ref[1,4]=(-0.50735295069)/(o+1.)+(-1.10564117596)+(0.493815362818)*0.5**o  
         ref[2,0]=(0.786394742154)/(o+1.)+(-0.212261329287)+(-0.0424788185539)*0.5**o  
         ref[2,1]=(-0.868240537836)/(o+1.)+(-0.186797194849)+(-0.956165252514)*0.5**o  
         ref[2,2]=(-0.67113838962)/(o+1.)+(1.26208372573)+(0.765250676321)*0.5**o  
         ref[2,3]=(-1.2390712788)/(o+1.)+(0.286327258603)+(0.15582128731)*0.5**o  
         ref[2,4]=(-0.00831435188402)/(o+1.)+(0.305363694299)+(0.406263821787)*0.5**o  
         ref[3,0]=(-0.123205370838)/(o+1.)+(-0.410740153717)+(-0.228945331902)*0.5**o  
         ref[3,1]=(1.39199709306)/(o+1.)+(0.646045427731)+(0.246917390241)*0.5**o  
         ref[3,2]=(-1.10740261108)/(o+1.)+(-0.860231147304)+(-0.104569152453)*0.5**o  
         ref[3,3]=(-0.506214554892)/(o+1.)+(0.53544681941)+(-0.439685803409)*0.5**o  
         ref[3,4]=(0.846470301583)/(o+1.)+(-0.134756583683)+(0.441058932543)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(4, 5),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onFunctionOnContactZero_fromSymbol_ReducedContinuousFunction_rank3(self):  
       """  
       tests integral of rank 3 Symbol on the FunctionOnContactZero  
   
       assumptions: ReducedContinuousFunction(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=1  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=ReducedContinuousFunction(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(6, 2, 2))  
       s=Data(0,(6, 2, 2),w)  
       ref=numpy.zeros((6, 2, 2),numpy.float_)  
       if dim==2:  
         s[0,0,0]=(-0.907789262757)*x[0]+(1.43778352913)*x[1]  
         s[0,0,1]=(-0.441541130755)*x[0]+(1.75922038312)*x[1]  
         s[0,1,0]=(-0.387854312613)*x[0]+(1.22523701409)*x[1]  
         s[0,1,1]=(-1.15521894576)*x[0]+(0.0289558035739)*x[1]  
         s[1,0,0]=(-0.640400813271)*x[0]+(-1.69766965873)*x[1]  
         s[1,0,1]=(-0.641296842318)*x[0]+(-1.35895483901)*x[1]  
         s[1,1,0]=(-0.14735518066)*x[0]+(0.520543405774)*x[1]  
         s[1,1,1]=(0.369918186173)*x[0]+(0.209781392053)*x[1]  
         s[2,0,0]=(0.677808706359)*x[0]+(0.481042907356)*x[1]  
         s[2,0,1]=(-0.661702781276)*x[0]+(1.86193178646)*x[1]  
         s[2,1,0]=(0.323230036331)*x[0]+(-1.45705288353)*x[1]  
         s[2,1,1]=(1.8644362516)*x[0]+(0.764691070666)*x[1]  
         s[3,0,0]=(-1.33103240086)*x[0]+(1.29035953404)*x[1]  
         s[3,0,1]=(-0.161074703654)*x[0]+(-0.127322745584)*x[1]  
         s[3,1,0]=(-0.359913251027)*x[0]+(-0.0952192793759)*x[1]  
         s[3,1,1]=(-0.34519536765)*x[0]+(0.483950473232)*x[1]  
         s[4,0,0]=(0.981563058768)*x[0]+(-0.0744642367992)*x[1]  
         s[4,0,1]=(-0.45912279344)*x[0]+(0.0011253607226)*x[1]  
         s[4,1,0]=(-0.618322333127)*x[0]+(0.199638289627)*x[1]  
         s[4,1,1]=(-0.371110449749)*x[0]+(-0.382992800899)*x[1]  
         s[5,0,0]=(0.840829543072)*x[0]+(-0.925833368141)*x[1]  
         s[5,0,1]=(-0.0348263534937)*x[0]+(0.267324292682)*x[1]  
         s[5,1,0]=(0.0785260612832)*x[0]+(1.59479548515)*x[1]  
         s[5,1,1]=(-0.203914067868)*x[0]+(1.28202597585)*x[1]  
         ref[0,0,0]=(0.898417888273)/(o+1.)+(0.171058001117)+(-0.710539624134)*0.5**o  
         ref[0,0,1]=(0.949672663046)/(o+1.)+(0.186488421776)+(-0.00497025423347)*0.5**o  
         ref[0,1,0]=(0.434571276181)/(o+1.)+(0.106095788846)+(0.190619847602)*0.5**o  
         ref[0,1,1]=(0.337711977059)/(o+1.)+(-0.313335995076)+(-0.837303129097)*0.5**o  
         ref[1,0,0]=(-0.757199193222)/(o+1.)+(-0.36300260101)+(-0.854866076761)*0.5**o  
         ref[1,0,1]=(-0.767144980208)/(o+1.)+(-0.215422826519)+(-0.802261048082)*0.5**o  
         ref[1,1,0]=(-0.13190981045)/(o+1.)+(-0.0320289199048)+(0.569155875375)*0.5**o  
         ref[1,1,1]=(0.0466405054813)/(o+1.)+(0.565229924314)+(-0.597400775882)*0.5**o  
         ref[2,0,0]=(0.760951384359)/(o+1.)+(0.0600961970572)+(0.277707835242)*0.5**o  
         ref[2,0,1]=(0.869894715615)/(o+1.)+(0.631323963868)+(-0.932313638168)*0.5**o  
         ref[2,1,0]=(-0.666302256751)/(o+1.)+(-0.510864963778)+(0.554209337103)*0.5**o  
         ref[2,1,1]=(0.934304180676)/(o+1.)+(0.350887235523)+(0.993048670542)*0.5**o  
         ref[3,0,0]=(0.930749923608)/(o+1.)+(-0.283299908306)+(-0.404822973819)*0.5**o  
         ref[3,0,1]=(-0.572270969539)/(o+1.)+(0.583432503768)+(-0.882991487235)*0.5**o  
         ref[3,1,0]=(0.642892258995)/(o+1.)+(-0.0826293437351)+(-0.932766101927)*0.5**o  
         ref[3,1,1]=(0.679591980627)/(o+1.)+(-0.379930907942)+(0.219024940838)*0.5**o  
         ref[4,0,0]=(-0.0326170324069)/(o+1.)+(0.0903259186859)+(0.759064017004)*0.5**o  
         ref[4,0,1]=(-0.129142887308)/(o+1.)+(0.279560607285)+(-0.887975759979)*0.5**o  
         ref[4,1,0]=(0.752463858901)/(o+1.)+(-0.256945595979)+(-0.657256710443)*0.5**o  
         ref[4,1,1]=(0.565307319705)/(o+1.)+(-0.898218881636)+(0.477027192919)*0.5**o  
         ref[5,0,0]=(-0.28969980947)/(o+1.)+(0.0341656280661)+(0.136364728269)*0.5**o  
         ref[5,0,1]=(-0.362525553087)/(o+1.)+(0.17876968499)+(0.237484122295)*0.5**o  
         ref[5,1,0]=(0.856225350097)/(o+1.)+(0.375747136218)+(0.0656019238951)*0.5**o  
         ref[5,1,1]=(0.358764765052)/(o+1.)+(0.783470816704)+(-0.847594490479)*0.5**o  
       else:  
         s[0,0,0]=(-0.18318998999)*x[0]+(-1.71372306128)*x[1]+(1.13788709107)*x[2]  
         s[0,0,1]=(0.95308908228)*x[0]+(0.123844162735)*x[1]+(0.0868410957691)*x[2]  
         s[0,1,0]=(-0.712762731169)*x[0]+(-1.86018372873)*x[1]+(-0.0783828227128)*x[2]  
         s[0,1,1]=(-1.72172214895)*x[0]+(-1.25477573826)*x[1]+(1.28096692374)*x[2]  
         s[1,0,0]=(0.86250397119)*x[0]+(1.44314824122)*x[1]+(0.763303582012)*x[2]  
         s[1,0,1]=(1.05520701337)*x[0]+(1.04926637639)*x[1]+(-0.378977987156)*x[2]  
         s[1,1,0]=(0.753550528625)*x[0]+(-1.63882951308)*x[1]+(0.259583964201)*x[2]  
         s[1,1,1]=(0.778941098246)*x[0]+(-1.10564597288)*x[1]+(-1.42906071049)*x[2]  
         s[2,0,0]=(-0.842438687373)*x[0]+(-0.202024764935)*x[1]+(0.289144880342)*x[2]  
         s[2,0,1]=(-1.02319531994)*x[0]+(0.155875285165)*x[1]+(0.310920357117)*x[2]  
         s[2,1,0]=(-1.45156693584)*x[0]+(0.12231441645)*x[1]+(0.722232222435)*x[2]  
         s[2,1,1]=(-1.08553719113)*x[0]+(0.316521434206)*x[1]+(0.720555059931)*x[2]  
         s[3,0,0]=(1.91846595467)*x[0]+(0.199356393766)*x[1]+(-0.438144879601)*x[2]  
         s[3,0,1]=(-0.341123312011)*x[0]+(0.325154462361)*x[1]+(0.691743856063)*x[2]  
         s[3,1,0]=(1.72547153856)*x[0]+(-0.822030080649)*x[1]+(-1.15169896539)*x[2]  
         s[3,1,1]=(0.243194545088)*x[0]+(-0.718504738836)*x[1]+(0.560536413366)*x[2]  
         s[4,0,0]=(0.248455459192)*x[0]+(0.415661600687)*x[1]+(0.21712561395)*x[2]  
         s[4,0,1]=(-1.23171610721)*x[0]+(-0.443121697053)*x[1]+(0.724481514081)*x[2]  
         s[4,1,0]=(-0.0327531013679)*x[0]+(0.385175130963)*x[1]+(-0.0484020348058)*x[2]  
         s[4,1,1]=(-0.199960439132)*x[0]+(-0.751568103399)*x[1]+(-1.20119343449)*x[2]  
         s[5,0,0]=(0.853262644583)*x[0]+(1.47653986554)*x[1]+(-0.0642737845052)*x[2]  
         s[5,0,1]=(1.1703484139)*x[0]+(-0.848977140408)*x[1]+(-0.303628307573)*x[2]  
         s[5,1,0]=(-0.719950626922)*x[0]+(0.192452589234)*x[1]+(0.315963976897)*x[2]  
         s[5,1,1]=(0.331604591856)*x[0]+(0.428822102766)*x[1]+(-1.35258251093)*x[2]  
         ref[0,0,0]=(-0.452131788567)/(o+1.)+(-0.313943872628)+(0.320993573616)*0.5**o  
         ref[0,0,1]=(-1.4121302884)/(o+1.)+(0.934332411096)+(0.707239806995)*0.5**o  
         ref[0,1,0]=(-0.371701930519)/(o+1.)+(-1.22914563984)+(0.178663927586)*0.5**o  
         ref[0,1,1]=(-0.569427715149)/(o+1.)+(-0.102129307368)+(-0.921844633589)*0.5**o  
         ref[1,0,0]=(1.07041067382)/(o+1.)+(1.04773121415)+(-0.0969173076836)*0.5**o  
         ref[1,0,1]=(0.344908055221)/(o+1.)+(0.253322966116)+(0.873941415143)*0.5**o  
         ref[1,1,0]=(-0.568409920368)/(o+1.)+(-0.376074272994)+(0.694863446104)*0.5**o  
         ref[1,1,1]=(-1.26296359103)/(o+1.)+(-0.285972966041)+(0.0791439379881)*0.5**o  
         ref[2,0,0]=(0.261580662311)/(o+1.)+(-0.0693472624675)+(-0.878204709343)*0.5**o  
         ref[2,0,1]=(-0.0659237231253)/(o+1.)+(-0.101871484642)+(-0.286732985248)*0.5**o  
         ref[2,1,0]=(-0.609626668188)/(o+1.)+(0.438552975912)+(-0.874499580587)*0.5**o  
         ref[2,1,1]=(1.21427389191)/(o+1.)+(-0.396304653588)+(-0.470125281731)*0.5**o  
         ref[3,0,0]=(0.466268456837)/(o+1.)+(0.109894182607)+(0.993620646782)*0.5**o  
         ref[3,0,1]=(0.798648502977)/(o+1.)+(0.30293631931)+(-0.728746135183)*0.5**o  
         ref[3,1,0]=(-0.443525593788)/(o+1.)+(-0.32762855249)+(0.85052519129)*0.5**o  
         ref[3,1,1]=(0.520520221786)/(o+1.)+(-0.21037503556)+(-0.0145439310481)*0.5**o  
         ref[4,0,0]=(1.51637897594)/(o+1.)+(0.0251054216628)+(-0.685347145435)*0.5**o  
         ref[4,0,1]=(-0.0126278181421)/(o+1.)+(-0.255524438913)+(-0.426679594213)*0.5**o  
         ref[4,1,0]=(-0.110252848596)/(o+1.)+(-0.270402535847)+(0.95507791508)*0.5**o  
         ref[4,1,1]=(-0.965558516877)/(o+1.)+(-0.777022669388)+(0.366881878633)*0.5**o  
         ref[5,0,0]=(1.47489510124)/(o+1.)+(0.344964232978)+(0.100705158424)*0.5**o  
         ref[5,0,1]=(0.272180101244)/(o+1.)+(-0.219694112974)+(0.184951090624)*0.5**o  
         ref[5,1,0]=(0.868944944511)/(o+1.)+(-0.492651110402)+(-0.0951767844975)*0.5**o  
         ref[5,1,1]=(-0.112001801469)/(o+1.)+(-0.0274812221923)+(-0.425191570457)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(6, 2, 2),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onFunctionOnContactZero_fromSymbol_ReducedContinuousFunction_rank4(self):  
       """  
       tests integral of rank 4 Symbol on the FunctionOnContactZero  
   
       assumptions: ReducedContinuousFunction(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=1  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=ReducedContinuousFunction(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(4, 5, 3, 2))  
       s=Data(0,(4, 5, 3, 2),w)  
       ref=numpy.zeros((4, 5, 3, 2),numpy.float_)  
       if dim==2:  
         s[0,0,0,0]=(0.492266509376)*x[0]+(-0.374307474367)*x[1]  
         s[0,0,0,1]=(0.379610803929)*x[0]+(1.26877290052)*x[1]  
         s[0,0,1,0]=(0.489836401727)*x[0]+(0.0568437409848)*x[1]  
         s[0,0,1,1]=(-0.0962394811856)*x[0]+(1.08297193296)*x[1]  
         s[0,0,2,0]=(0.0083854747638)*x[0]+(1.12783902851)*x[1]  
         s[0,0,2,1]=(-1.60969353709)*x[0]+(-1.15342435141)*x[1]  
         s[0,1,0,0]=(0.718333685586)*x[0]+(-0.580409068311)*x[1]  
         s[0,1,0,1]=(-0.471412983112)*x[0]+(-1.21523638921)*x[1]  
         s[0,1,1,0]=(0.436952252413)*x[0]+(0.817968269393)*x[1]  
         s[0,1,1,1]=(0.904303325207)*x[0]+(1.27944662005)*x[1]  
         s[0,1,2,0]=(-0.646670575219)*x[0]+(-0.268471138891)*x[1]  
         s[0,1,2,1]=(0.216944526796)*x[0]+(-1.44656748298)*x[1]  
         s[0,2,0,0]=(-1.45710792844)*x[0]+(-1.37549168202)*x[1]  
         s[0,2,0,1]=(-0.0209124548614)*x[0]+(-0.405359828227)*x[1]  
         s[0,2,1,0]=(0.713696154808)*x[0]+(-0.283663569311)*x[1]  
         s[0,2,1,1]=(0.0879024421072)*x[0]+(-1.74270037297)*x[1]  
         s[0,2,2,0]=(-0.263019221744)*x[0]+(0.587637432145)*x[1]  
         s[0,2,2,1]=(0.291949019915)*x[0]+(1.21942896685)*x[1]  
         s[0,3,0,0]=(0.711503988663)*x[0]+(-0.0889987684621)*x[1]  
         s[0,3,0,1]=(-0.473200478311)*x[0]+(-0.731689338365)*x[1]  
         s[0,3,1,0]=(0.0347877428229)*x[0]+(0.436342776392)*x[1]  
         s[0,3,1,1]=(1.33181675729)*x[0]+(0.796826790935)*x[1]  
         s[0,3,2,0]=(0.975860401214)*x[0]+(-0.0388876329765)*x[1]  
         s[0,3,2,1]=(0.336224987742)*x[0]+(1.40851963434)*x[1]  
         s[0,4,0,0]=(-0.430668122172)*x[0]+(-0.210883679811)*x[1]  
         s[0,4,0,1]=(-0.0947644917837)*x[0]+(-0.145045406149)*x[1]  
         s[0,4,1,0]=(-0.975155718684)*x[0]+(0.370091078964)*x[1]  
         s[0,4,1,1]=(1.59897077782)*x[0]+(-0.716757934974)*x[1]  
         s[0,4,2,0]=(0.0995595315716)*x[0]+(-0.654667529963)*x[1]  
         s[0,4,2,1]=(0.621429995817)*x[0]+(-0.830020781954)*x[1]  
         s[1,0,0,0]=(0.460799425849)*x[0]+(1.37039134597)*x[1]  
         s[1,0,0,1]=(0.484677718571)*x[0]+(-1.06817334128)*x[1]  
         s[1,0,1,0]=(0.157323780788)*x[0]+(-0.816294918051)*x[1]  
         s[1,0,1,1]=(0.275640307711)*x[0]+(-1.13585749962)*x[1]  
         s[1,0,2,0]=(1.16452950894)*x[0]+(-1.17355094567)*x[1]  
         s[1,0,2,1]=(-0.567786612292)*x[0]+(-0.78722481996)*x[1]  
         s[1,1,0,0]=(-0.106381006132)*x[0]+(1.35734811758)*x[1]  
         s[1,1,0,1]=(0.870362310422)*x[0]+(-0.701894980494)*x[1]  
         s[1,1,1,0]=(0.463101808026)*x[0]+(-0.106531628533)*x[1]  
         s[1,1,1,1]=(0.34927073998)*x[0]+(0.597282241285)*x[1]  
         s[1,1,2,0]=(-1.08705596894)*x[0]+(-0.476312920631)*x[1]  
         s[1,1,2,1]=(0.461228158094)*x[0]+(0.553430989166)*x[1]  
         s[1,2,0,0]=(-0.565889081597)*x[0]+(0.847674515062)*x[1]  
         s[1,2,0,1]=(1.22774040742)*x[0]+(0.532076088807)*x[1]  
         s[1,2,1,0]=(-1.35738184718)*x[0]+(-0.010480885754)*x[1]  
         s[1,2,1,1]=(0.0609383835609)*x[0]+(0.539183578894)*x[1]  
         s[1,2,2,0]=(0.765013210057)*x[0]+(-0.0658319206215)*x[1]  
         s[1,2,2,1]=(0.720241379555)*x[0]+(-1.29084845886)*x[1]  
         s[1,3,0,0]=(1.37641602996)*x[0]+(-0.713391122816)*x[1]  
         s[1,3,0,1]=(0.475350779553)*x[0]+(-0.0146303427199)*x[1]  
         s[1,3,1,0]=(-0.498436122956)*x[0]+(0.446982991213)*x[1]  
         s[1,3,1,1]=(-0.0198417666776)*x[0]+(-0.0330880581816)*x[1]  
         s[1,3,2,0]=(-0.968203407981)*x[0]+(-1.43766997027)*x[1]  
         s[1,3,2,1]=(-1.516108898)*x[0]+(0.154669696369)*x[1]  
         s[1,4,0,0]=(0.107239334472)*x[0]+(-1.01814801515)*x[1]  
         s[1,4,0,1]=(0.490733729058)*x[0]+(1.0617427681)*x[1]  
         s[1,4,1,0]=(-0.579990484487)*x[0]+(-0.681146890855)*x[1]  
         s[1,4,1,1]=(-0.539291982427)*x[0]+(1.40646560401)*x[1]  
         s[1,4,2,0]=(-0.804686819612)*x[0]+(0.617047118706)*x[1]  
         s[1,4,2,1]=(-0.913106387219)*x[0]+(-0.35453310971)*x[1]  
         s[2,0,0,0]=(1.07945504868)*x[0]+(0.147695653661)*x[1]  
         s[2,0,0,1]=(0.0321229519775)*x[0]+(-0.80726917422)*x[1]  
         s[2,0,1,0]=(-0.276983245168)*x[0]+(-1.8208105745)*x[1]  
         s[2,0,1,1]=(-0.390466636115)*x[0]+(-0.753787382303)*x[1]  
         s[2,0,2,0]=(-0.0551239488574)*x[0]+(-0.691793238598)*x[1]  
         s[2,0,2,1]=(0.455414076199)*x[0]+(1.19885245354)*x[1]  
         s[2,1,0,0]=(-0.774122061304)*x[0]+(1.10934639101)*x[1]  
         s[2,1,0,1]=(-1.60749547114)*x[0]+(0.305715741213)*x[1]  
         s[2,1,1,0]=(0.0697234437299)*x[0]+(0.542820812428)*x[1]  
         s[2,1,1,1]=(1.29397510328)*x[0]+(-0.804845682022)*x[1]  
         s[2,1,2,0]=(0.478973101459)*x[0]+(1.07219480882)*x[1]  
         s[2,1,2,1]=(-0.897309279985)*x[0]+(1.75363512874)*x[1]  
         s[2,2,0,0]=(1.61737724977)*x[0]+(0.161191822716)*x[1]  
         s[2,2,0,1]=(0.808798403137)*x[0]+(-0.00926345040032)*x[1]  
         s[2,2,1,0]=(-0.903485178097)*x[0]+(-0.36599523945)*x[1]  
         s[2,2,1,1]=(0.30686972857)*x[0]+(-1.62803935845)*x[1]  
         s[2,2,2,0]=(1.48915760228)*x[0]+(0.579057819566)*x[1]  
         s[2,2,2,1]=(-0.540786588929)*x[0]+(-0.402843340661)*x[1]  
         s[2,3,0,0]=(0.964227135928)*x[0]+(0.0210110310059)*x[1]  
         s[2,3,0,1]=(0.0266958261678)*x[0]+(0.830215139026)*x[1]  
         s[2,3,1,0]=(0.930518946289)*x[0]+(0.66745827854)*x[1]  
         s[2,3,1,1]=(0.0363390243751)*x[0]+(0.591657283448)*x[1]  
         s[2,3,2,0]=(-0.433934955699)*x[0]+(-1.57946754208)*x[1]  
         s[2,3,2,1]=(-0.890298505624)*x[0]+(0.623825002267)*x[1]  
         s[2,4,0,0]=(0.838929180901)*x[0]+(0.699121739125)*x[1]  
         s[2,4,0,1]=(1.3886192544)*x[0]+(-0.232981076843)*x[1]  
         s[2,4,1,0]=(-0.566792750082)*x[0]+(-0.631000271451)*x[1]  
         s[2,4,1,1]=(-0.989529672577)*x[0]+(0.0943919436553)*x[1]  
         s[2,4,2,0]=(-1.85858526639)*x[0]+(0.257423736684)*x[1]  
         s[2,4,2,1]=(-1.01848069496)*x[0]+(-1.08574972329)*x[1]  
         s[3,0,0,0]=(0.135022656073)*x[0]+(-0.641428277939)*x[1]  
         s[3,0,0,1]=(-0.613029646479)*x[0]+(0.158334902417)*x[1]  
         s[3,0,1,0]=(-1.01838576339)*x[0]+(-0.788404867889)*x[1]  
         s[3,0,1,1]=(0.133395871444)*x[0]+(-0.540018893528)*x[1]  
         s[3,0,2,0]=(0.359599806799)*x[0]+(-0.163549980956)*x[1]  
         s[3,0,2,1]=(0.537279834479)*x[0]+(1.43219657076)*x[1]  
         s[3,1,0,0]=(0.699221501837)*x[0]+(0.58098090756)*x[1]  
         s[3,1,0,1]=(-0.264653821282)*x[0]+(-0.297670973468)*x[1]  
         s[3,1,1,0]=(-1.14805006965)*x[0]+(0.173713527619)*x[1]  
         s[3,1,1,1]=(0.582167066862)*x[0]+(0.224704535757)*x[1]  
         s[3,1,2,0]=(-0.013329661508)*x[0]+(0.439567816478)*x[1]  
         s[3,1,2,1]=(-0.206657167829)*x[0]+(-0.900945403197)*x[1]  
         s[3,2,0,0]=(-1.34123093943)*x[0]+(-0.905024065154)*x[1]  
         s[3,2,0,1]=(-0.0677797983484)*x[0]+(0.863260908229)*x[1]  
         s[3,2,1,0]=(0.0651406495709)*x[0]+(1.35122911589)*x[1]  
         s[3,2,1,1]=(-0.00598531484168)*x[0]+(0.690487120132)*x[1]  
         s[3,2,2,0]=(0.748701424535)*x[0]+(-1.0273152862)*x[1]  
         s[3,2,2,1]=(-0.239064296585)*x[0]+(-0.213292951531)*x[1]  
         s[3,3,0,0]=(-0.620272397992)*x[0]+(1.00106031112)*x[1]  
         s[3,3,0,1]=(-0.803133841712)*x[0]+(0.873569080382)*x[1]  
         s[3,3,1,0]=(-1.187617412)*x[0]+(0.422664418077)*x[1]  
         s[3,3,1,1]=(-1.51637824714)*x[0]+(-1.5177161306)*x[1]  
         s[3,3,2,0]=(1.41348390435)*x[0]+(1.2134182272)*x[1]  
         s[3,3,2,1]=(0.99094246846)*x[0]+(0.34796551642)*x[1]  
         s[3,4,0,0]=(0.580352675436)*x[0]+(-1.21782952097)*x[1]  
         s[3,4,0,1]=(0.060030794007)*x[0]+(0.711473074059)*x[1]  
         s[3,4,1,0]=(0.966745511848)*x[0]+(-0.550401614505)*x[1]  
         s[3,4,1,1]=(-0.791329990237)*x[0]+(-0.205150506961)*x[1]  
         s[3,4,2,0]=(0.482041855799)*x[0]+(-1.09392636319)*x[1]  
         s[3,4,2,1]=(-0.698074703295)*x[0]+(0.510339675206)*x[1]  
         ref[0,0,0,0]=(-0.953900694954)/(o+1.)+(0.442044844728)+(0.187770040507)*0.5**o  
         ref[0,0,0,1]=(0.580869130103)/(o+1.)+(0.516362992147)+(0.03478859005)*0.5**o  
         ref[0,0,1,0]=(-0.411645490601)/(o+1.)+(0.406943479905)+(0.144438673502)*0.5**o  
         ref[0,0,1,1]=(0.204312991686)/(o+1.)+(0.383971959467)+(0.0144755411578)*0.5**o  
         ref[0,0,2,0]=(0.743369450952)/(o+1.)+(0.0895404122051)+(0.213774227914)*0.5**o  
         ref[0,0,2,1]=(-0.239858711457)/(o+1.)+(-0.809763839108)+(-0.903731498821)*0.5**o  
         ref[0,1,0,0]=(-0.484413922256)/(o+1.)+(0.0508933433825)+(0.520551852766)*0.5**o  
         ref[0,1,0,1]=(-0.590736935429)/(o+1.)+(-0.344843181585)+(-0.406226073725)*0.5**o  
         ref[0,1,1,0]=(-0.125338697971)/(o+1.)+(0.369801286198)+(0.640656647382)*0.5**o  
         ref[0,1,1,1]=(0.552504077477)/(o+1.)+(0.788979766736)+(0.0532863343083)*0.5**o  
         ref[0,1,2,0]=(0.306194481363)/(o+1.)+(-0.445453307231)+(-0.33042958101)*0.5**o  
         ref[0,1,2,1]=(-0.818898129415)/(o+1.)+(-0.0332482175532)+(-0.34422839166)*0.5**o  
         ref[0,2,0,0]=(-0.878218012751)/(o+1.)+(-0.612244128212)+(-0.729893341289)*0.5**o  
         ref[0,2,0,1]=(-0.105155854997)/(o+1.)+(0.281922249648)+(-0.884960927387)*0.5**o  
         ref[0,2,1,0]=(0.565149481722)/(o+1.)+(0.0625165001878)+(-0.2601498966)*0.5**o  
         ref[0,2,1,1]=(-0.983424704841)/(o+1.)+(0.0730690344226)+(-0.817511294863)*0.5**o  
         ref[0,2,2,0]=(-0.258286255412)/(o+1.)+(0.308348049886)+(-0.0337916339596)*0.5**o  
         ref[0,2,2,1]=(0.915004878119)/(o+1.)+(-0.166545843752)+(0.929464796149)*0.5**o  
         ref[0,3,0,0]=(-0.433529018481)/(o+1.)+(0.627958762155)+(-0.199883285628)*0.5**o  
         ref[0,3,0,1]=(-0.945419963966)/(o+1.)+(-0.336318858392)+(0.413167864075)*0.5**o  
         ref[0,3,1,0]=(0.502119767083)/(o+1.)+(0.334993773063)+(-0.700976793994)*0.5**o  
         ref[0,3,1,1]=(-0.186129206617)/(o+1.)+(0.891324041438)+(0.532124671966)*0.5**o  
         ref[0,3,2,0]=(0.504051134603)/(o+1.)+(-0.200874672613)+(0.834670978862)*0.5**o  
         ref[0,3,2,1]=(0.436498536789)/(o+1.)+(0.545640525497)+(0.216965034296)*0.5**o  
         ref[0,4,0,0]=(-0.756349034292)/(o+1.)+(0.140738322652)+(-0.166679412995)*0.5**o  
         ref[0,4,0,1]=(0.780437446749)/(o+1.)+(-0.599105577138)+(0.177963809594)*0.5**o  
         ref[0,4,1,0]=(0.943566244729)/(o+1.)+(-0.441716458606)+(-0.665197967238)*0.5**o  
         ref[0,4,1,1]=(-0.734101358227)/(o+1.)+(0.356355202125)+(0.903603796827)*0.5**o  
         ref[0,4,2,0]=(-0.43430093723)/(o+1.)+(0.383496742595)+(-0.887800546351)*0.5**o  
         ref[0,4,2,1]=(-0.227167732111)/(o+1.)+(-0.274598730532)+(0.567774407038)*0.5**o  
         ref[1,0,0,0]=(0.391393429129)/(o+1.)+(0.353444577314)+(0.732908188056)*0.5**o  
         ref[1,0,0,1]=(-0.171565730455)/(o+1.)+(-0.259205209862)+(0.106480527466)*0.5**o  
         ref[1,0,1,0]=(-0.774601901321)/(o+1.)+(0.259483708314)+(-0.403336652569)*0.5**o  
         ref[1,0,1,1]=(-0.726406904963)/(o+1.)+(-0.129278181762)+(0.124746076574)*0.5**o  
         ref[1,0,2,0]=(-0.617577515377)/(o+1.)+(-0.152390726783)+(0.91333753221)*0.5**o  
         ref[1,0,2,1]=(0.138202581628)/(o+1.)+(-0.396089249037)+(-0.701035515806)*0.5**o  
         ref[1,1,0,0]=(0.729934336346)/(o+1.)+(-0.00268233232676)+(0.52639743976)*0.5**o  
         ref[1,1,0,1]=(-0.158306695958)/(o+1.)+(-0.0162211686892)+(0.359216363265)*0.5**o  
         ref[1,1,1,0]=(-0.978599129855)/(o+1.)+(0.71609215355)+(-0.0970149977525)*0.5**o  
         ref[1,1,1,1]=(-0.349041967673)/(o+1.)+(0.780124912357)+(-0.264654875775)*0.5**o  
         ref[1,1,2,0]=(-0.809194404709)/(o+1.)+(-0.268116096378)+(-0.217942292102)*0.5**o  
         ref[1,1,2,1]=(0.455578593899)/(o+1.)+(0.428430852179)+(-0.297781150997)*0.5**o  
         ref[1,2,0,0]=(0.116383337262)/(o+1.)+(0.228068268367)+(-0.290734440531)*0.5**o  
         ref[1,2,0,1]=(0.977031820054)/(o+1.)+(0.137033678728)+(0.508717318715)*0.5**o  
         ref[1,2,1,0]=(0.282937416713)/(o+1.)+(-0.615158071804)+(-0.420484006037)*0.5**o  
         ref[1,2,1,1]=(0.904627062081)/(o+1.)+(0.018901292084)+(-0.342307683794)*0.5**o  
         ref[1,2,2,0]=(0.755780696034)/(o+1.)+(-0.0362605587438)+(0.0159217108891)*0.5**o  
         ref[1,2,2,1]=(-0.699866517547)/(o+1.)+(0.171062073116)+(-0.212864707989)*0.5**o  
         ref[1,3,0,0]=(0.228867465112)/(o+1.)+(-0.0322172708178)+(0.498591983668)*0.5**o  
         ref[1,3,0,1]=(-0.289542634768)/(o+1.)+(0.110436622855)+(0.529389825891)*0.5**o  
         ref[1,3,1,0]=(0.358054041082)/(o+1.)+(0.165615637362)+(-0.74073844755)*0.5**o  
         ref[1,3,1,1]=(-0.60359826352)/(o+1.)+(0.517588005735)+(-0.48450757281)*0.5**o  
         ref[1,3,2,0]=(-0.545672858809)/(o+1.)+(-0.618462721543)+(-0.623275076358)*0.5**o  
         ref[1,3,2,1]=(-0.73428128984)/(o+1.)+(-0.0497647291554)+(-0.527628453484)*0.5**o  
         ref[1,4,0,0]=(-0.04306414004)/(o+1.)+(-0.298207200434)+(-0.271430139773)*0.5**o  
         ref[1,4,0,1]=(0.971916388567)/(o+1.)+(-0.0691551012311)+(0.718870311054)*0.5**o  
         ref[1,4,1,0]=(-0.445510592605)/(o+1.)+(-0.088724728164)+(-0.638177326409)*0.5**o  
         ref[1,4,1,1]=(0.753412648385)/(o+1.)+(-0.0777097810015)+(0.269180535197)*0.5**o  
         ref[1,4,2,0]=(-0.305234413894)/(o+1.)+(0.169600008291)+(-0.221605303593)*0.5**o  
         ref[1,4,2,1]=(-0.286993085073)/(o+1.)+(-0.0493395569951)+(-0.881967297866)*0.5**o  
         ref[2,0,0,0]=(-0.719751624491)/(o+1.)+(0.677226475278)+(0.59244937628)*0.5**o  
         ref[2,0,0,1]=(-0.670829954915)/(o+1.)+(-0.139434936863)+(0.174553606398)*0.5**o  
         ref[2,0,1,0]=(-0.916962595573)/(o+1.)+(-0.372659474123)+(-0.435512275853)*0.5**o  
         ref[2,0,1,1]=(-0.893849803211)/(o+1.)+(-0.341833589876)+(0.433262964544)*0.5**o  
         ref[2,0,2,0]=(-0.773257190107)/(o+1.)+(0.0495078796887)+(-0.0726757567263)*0.5**o  
         ref[2,0,2,1]=(0.632070005323)/(o+1.)+(0.697198313452)+(-0.372200102483)*0.5**o  
         ref[2,1,0,0]=(0.459329022417)/(o+1.)+(0.249194755087)+(-0.622494202881)*0.5**o  
         ref[2,1,0,1]=(0.0269909119644)/(o+1.)+(-0.210708025265)+(-0.907354591365)*0.5**o  
         ref[2,1,1,0]=(0.183761641828)/(o+1.)+(-0.207261190919)+(0.843304996169)*0.5**o  
         ref[2,1,1,1]=(-0.49062931094)/(o+1.)+(0.2742786733)+(0.431201385598)*0.5**o  
         ref[2,1,2,0]=(0.798332846753)/(o+1.)+(0.187074177535)+(0.378686708458)*0.5**o  
         ref[2,1,2,1]=(0.942487410042)/(o+1.)+(0.0268513037692)+(-0.139864168826)*0.5**o  
         ref[2,2,0,0]=(-0.306480663139)/(o+1.)+(0.706708669675)+(0.671632396277)*0.5**o  
         ref[2,2,0,1]=(-0.68426521806)/(o+1.)+(0.658766824582)+(0.166266521632)*0.5**o  
         ref[2,2,1,0]=(-0.0872551950734)/(o+1.)+(-0.212578991849)+(-0.757067238775)*0.5**o  
         ref[2,2,1,1]=(-0.779515023363)/(o+1.)+(-0.165651803902)+(-0.210350998718)*0.5**o  
         ref[2,2,2,0]=(0.420662034868)/(o+1.)+(0.456572874952)+(0.734407637073)*0.5**o  
         ref[2,2,2,1]=(-0.0347308970891)/(o+1.)+(-0.550927478137)+(0.192955923773)*0.5**o  
         ref[2,3,0,0]=(0.279479543192)/(o+1.)+(0.340981994922)+(0.0237946338994)*0.5**o  
         ref[2,3,0,1]=(0.885111721906)/(o+1.)+(0.0386593998513)+(-0.105519556415)*0.5**o  
         ref[2,3,1,0]=(-0.142745975965)/(o+1.)+(0.571228905184)+(0.598265390426)*0.5**o  
         ref[2,3,1,1]=(0.676813945202)/(o+1.)+(0.301993597369)+(-0.652804832118)*0.5**o  
         ref[2,3,2,0]=(-0.834072218834)/(o+1.)+(-0.836092513405)+(0.492854747868)*0.5**o  
         ref[2,3,2,1]=(0.451195972296)/(o+1.)+(-0.330911551268)+(-0.0558463731179)*0.5**o  
         ref[2,4,0,0]=(0.604480974758)/(o+1.)+(-0.0272834841321)+(0.988136913533)*0.5**o  
         ref[2,4,0,1]=(-0.672293493189)/(o+1.)+(0.436472725256)+(0.954986220232)*0.5**o  
         ref[2,4,1,0]=(-0.945983571254)/(o+1.)+(0.362615161801)+(-0.97703977388)*0.5**o  
         ref[2,4,1,1]=(-0.778028939318)/(o+1.)+(0.423610287746)+(-0.964329365094)*0.5**o  
         ref[2,4,2,0]=(-0.138477487464)/(o+1.)+(-0.290097108281)+(-0.882489825678)*0.5**o  
         ref[2,4,2,1]=(-0.953853492601)/(o+1.)+(-0.179508678068)+(-0.791359569512)*0.5**o  
         ref[3,0,0,0]=(-0.199022712971)/(o+1.)+(0.253562515321)+(-0.814507939536)*0.5**o  
         ref[3,0,0,1]=(0.112777444671)/(o+1.)+(-0.304438182199)+(0.0414041756638)*0.5**o  
         ref[3,0,1,0]=(-0.880947344135)/(o+1.)+(-0.194192553178)+(-0.537458180783)*0.5**o  
         ref[3,0,1,1]=(0.39314163058)/(o+1.)+(-0.775542968704)+(0.751321284745)*0.5**o  
         ref[3,0,2,0]=(-0.482557545787)/(o+1.)+(-0.0683141681573)+(0.815235707945)*0.5**o  
         ref[3,0,2,1]=(0.689498951848)/(o+1.)+(0.278187448835)+(0.723602555722)*0.5**o  
         ref[3,1,0,0]=(0.293238350118)/(o+1.)+(0.126767755198)+(0.733428548881)*0.5**o  
         ref[3,1,0,1]=(-0.26577191789)/(o+1.)+(0.201156903364)+(-0.698866683588)*0.5**o  
         ref[3,1,1,0]=(0.439591690299)/(o+1.)+(-0.288902429619)+(-0.836123373092)*0.5**o  
         ref[3,1,1,1]=(0.8910765985)/(o+1.)+(0.0553222730519)+(-0.194849541985)*0.5**o  
         ref[3,1,2,0]=(-0.0320019026134)/(o+1.)+(0.477772657371)+(-0.497305257159)*0.5**o  
         ref[3,1,2,1]=(-0.0499399267727)/(o+1.)+(-0.47037968496)+(-0.116903274335)*0.5**o  
         ref[3,2,0,0]=(-0.276422491301)/(o+1.)+(-0.812540687574)+(-0.344751138134)*0.5**o  
         ref[3,2,0,1]=(-0.00141392846802)/(o+1.)+(0.102797761295)+(0.591299515759)*0.5**o  
         ref[3,2,1,0]=(0.630823139203)/(o+1.)+(0.743132641412)+(-0.700718656569)*0.5**o  
         ref[3,2,1,1]=(0.490401876791)/(o+1.)+(-0.0461798489229)+(0.286459626346)*0.5**o  
         ref[3,2,2,0]=(-0.787385728473)/(o+1.)+(0.0658852261331)+(0.377001414541)*0.5**o  
         ref[3,2,2,1]=(-0.158857143023)/(o+1.)+(-0.421186525234)+(0.548872945376)*0.5**o  
         ref[3,3,0,0]=(0.029229133788)/(o+1.)+(0.069575027013)+(0.212408725319)*0.5**o  
         ref[3,3,0,1]=(0.757333397205)/(o+1.)+(0.029368913907)+(-0.74563598635)*0.5**o  
         ref[3,3,1,0]=(0.0943476349516)/(o+1.)+(0.0337288993927)+(-0.926758427661)*0.5**o  
         ref[3,3,1,1]=(-0.769051069188)/(o+1.)+(-0.844682211294)+(-0.575678885962)*0.5**o  
         ref[3,3,2,0]=(0.246931939289)/(o+1.)+(0.756380254609)+(0.867209683046)*0.5**o  
         ref[3,3,2,1]=(0.535429280541)/(o+1.)+(-0.0329131735419)+(0.869305051424)*0.5**o  
         ref[3,4,0,0]=(-0.405156907998)/(o+1.)+(-0.244492906569)+(0.256665875603)*0.5**o  
         ref[3,4,0,1]=(-0.140892979474)/(o+1.)+(0.516304250401)+(-0.120211653262)*0.5**o  
         ref[3,4,1,0]=(0.168500977091)/(o+1.)+(0.089683045067)+(0.0684768301186)*0.5**o  
         ref[3,4,1,1]=(0.479212374255)/(o+1.)+(-0.626588026593)+(-0.222516818267)*0.5**o  
         ref[3,4,2,0]=(-0.563625996633)/(o+1.)+(-0.120136908079)+(0.192015305399)*0.5**o  
         ref[3,4,2,1]=(-0.031361929046)/(o+1.)+(0.332029567053)+(-0.820432233148)*0.5**o  
       else:  
         s[0,0,0,0]=(0.186907875567)*x[0]+(0.323825050263)*x[1]+(1.15648314531)*x[2]  
         s[0,0,0,1]=(1.12367405158)*x[0]+(1.13427439957)*x[1]+(0.189106618663)*x[2]  
         s[0,0,1,0]=(1.76772912309)*x[0]+(0.0616670242122)*x[1]+(-1.23257311969)*x[2]  
         s[0,0,1,1]=(0.0497251821243)*x[0]+(-1.47406701801)*x[1]+(0.164922402015)*x[2]  
         s[0,0,2,0]=(-1.40783401802)*x[0]+(0.684901383857)*x[1]+(0.283077416398)*x[2]  
         s[0,0,2,1]=(-0.283194016281)*x[0]+(-1.60164790888)*x[1]+(0.412908024034)*x[2]  
         s[0,1,0,0]=(0.957812695611)*x[0]+(-0.863209638895)*x[1]+(-0.609946161661)*x[2]  
         s[0,1,0,1]=(-0.410080093222)*x[0]+(0.703061988282)*x[1]+(0.0546952979936)*x[2]  
         s[0,1,1,0]=(-1.43265292137)*x[0]+(-1.28132882624)*x[1]+(-0.103305431528)*x[2]  
         s[0,1,1,1]=(-0.973042964661)*x[0]+(0.118946651326)*x[1]+(0.0121414797284)*x[2]  
         s[0,1,2,0]=(-1.31257233483)*x[0]+(-1.90572394465)*x[1]+(-0.426472675848)*x[2]  
         s[0,1,2,1]=(1.25719983663)*x[0]+(-0.68807451729)*x[1]+(0.329745219822)*x[2]  
         s[0,2,0,0]=(-0.317555693596)*x[0]+(0.464722269829)*x[1]+(-0.0253415732374)*x[2]  
         s[0,2,0,1]=(-0.802071257989)*x[0]+(-1.07682010382)*x[1]+(-1.52372537155)*x[2]  
         s[0,2,1,0]=(-0.697501763365)*x[0]+(-1.5918814652)*x[1]+(-1.03755334358)*x[2]  
         s[0,2,1,1]=(0.292457959822)*x[0]+(-0.446371848663)*x[1]+(1.32282628125)*x[2]  
         s[0,2,2,0]=(1.44590220139)*x[0]+(-0.556542973367)*x[1]+(0.999665797669)*x[2]  
         s[0,2,2,1]=(-0.376272847083)*x[0]+(-0.0251287305789)*x[1]+(0.364915231203)*x[2]  
         s[0,3,0,0]=(0.88046028761)*x[0]+(0.372647019255)*x[1]+(-1.52356563515)*x[2]  
         s[0,3,0,1]=(0.0765111785452)*x[0]+(-0.947059538185)*x[1]+(0.332098361392)*x[2]  
         s[0,3,1,0]=(-1.37435064568)*x[0]+(1.04159418667)*x[1]+(0.314113199294)*x[2]  
         s[0,3,1,1]=(1.03796425672)*x[0]+(-0.139508518244)*x[1]+(-0.46214547857)*x[2]  
         s[0,3,2,0]=(0.285674556261)*x[0]+(-0.915609582509)*x[1]+(0.683131361973)*x[2]  
         s[0,3,2,1]=(0.703275850512)*x[0]+(-0.894071596437)*x[1]+(0.118084971572)*x[2]  
         s[0,4,0,0]=(-1.29507182493)*x[0]+(-0.275563564467)*x[1]+(-1.29101960297)*x[2]  
         s[0,4,0,1]=(0.726127419233)*x[0]+(-0.163731035409)*x[1]+(1.45773190781)*x[2]  
         s[0,4,1,0]=(-0.321962778987)*x[0]+(-0.434741013545)*x[1]+(0.348257210746)*x[2]  
         s[0,4,1,1]=(0.892154653814)*x[0]+(1.12188965959)*x[1]+(-1.42589350879)*x[2]  
         s[0,4,2,0]=(-1.06019594336)*x[0]+(-1.5907947093)*x[1]+(-1.64125703099)*x[2]  
         s[0,4,2,1]=(0.820572048651)*x[0]+(-0.528087471135)*x[1]+(-0.0823830365488)*x[2]  
         s[1,0,0,0]=(0.823455925698)*x[0]+(0.456056899485)*x[1]+(0.708907347857)*x[2]  
         s[1,0,0,1]=(0.013059728892)*x[0]+(-0.772283592797)*x[1]+(0.363920439078)*x[2]  
         s[1,0,1,0]=(-0.569161155945)*x[0]+(-1.60837471571)*x[1]+(-1.12748440619)*x[2]  
         s[1,0,1,1]=(-1.06458634572)*x[0]+(-1.10787449393)*x[1]+(1.43157821547)*x[2]  
         s[1,0,2,0]=(1.42955732758)*x[0]+(-0.769967391917)*x[1]+(0.461386087764)*x[2]  
         s[1,0,2,1]=(-1.12922605294)*x[0]+(-0.256069161837)*x[1]+(0.934117328474)*x[2]  
         s[1,1,0,0]=(-0.296512978109)*x[0]+(0.0247034910192)*x[1]+(-0.0918640286973)*x[2]  
         s[1,1,0,1]=(0.262151201281)*x[0]+(-0.556624983637)*x[1]+(-0.82641291041)*x[2]  
         s[1,1,1,0]=(-0.909049007906)*x[0]+(0.578952420411)*x[1]+(0.0963761548489)*x[2]  
         s[1,1,1,1]=(0.789884036316)*x[0]+(0.714044849036)*x[1]+(-0.348148665956)*x[2]  
         s[1,1,2,0]=(-0.306802924795)*x[0]+(0.166007262622)*x[1]+(0.812933157357)*x[2]  
         s[1,1,2,1]=(-0.23666871482)*x[0]+(0.0180126754613)*x[1]+(0.465074288631)*x[2]  
         s[1,2,0,0]=(-1.14910199315)*x[0]+(0.930765031574)*x[1]+(1.63176081675)*x[2]  
         s[1,2,0,1]=(-0.220753578398)*x[0]+(0.153024000962)*x[1]+(0.29171013278)*x[2]  
         s[1,2,1,0]=(-0.571208521033)*x[0]+(1.18218013588)*x[1]+(-0.0281527591651)*x[2]  
         s[1,2,1,1]=(-0.0212229342253)*x[0]+(0.577228434778)*x[1]+(-0.0934776488559)*x[2]  
         s[1,2,2,0]=(-0.592424182282)*x[0]+(-0.0403519194823)*x[1]+(0.150970946422)*x[2]  
         s[1,2,2,1]=(-1.33143395635)*x[0]+(-1.3121470647)*x[1]+(-0.78895334942)*x[2]  
         s[1,3,0,0]=(0.626711601793)*x[0]+(0.0187262812242)*x[1]+(-0.392743911033)*x[2]  
         s[1,3,0,1]=(0.0360431567199)*x[0]+(-0.921408398245)*x[1]+(-0.172097608208)*x[2]  
         s[1,3,1,0]=(0.0223088597951)*x[0]+(0.139631235358)*x[1]+(-0.529170239405)*x[2]  
         s[1,3,1,1]=(0.11834184642)*x[0]+(-0.754799078426)*x[1]+(0.136555856977)*x[2]  
         s[1,3,2,0]=(-0.288966482257)*x[0]+(-0.227333376328)*x[1]+(-0.583704417546)*x[2]  
         s[1,3,2,1]=(0.263525293937)*x[0]+(0.842984179305)*x[1]+(0.592096192935)*x[2]  
         s[1,4,0,0]=(-0.0145931697196)*x[0]+(-0.839359041248)*x[1]+(-0.635230965652)*x[2]  
         s[1,4,0,1]=(-0.452080234732)*x[0]+(-0.500376989587)*x[1]+(-0.27541187994)*x[2]  
         s[1,4,1,0]=(-0.028441856276)*x[0]+(0.99292041207)*x[1]+(-0.555205406529)*x[2]  
         s[1,4,1,1]=(0.670664493076)*x[0]+(0.562911949702)*x[1]+(-0.767721105918)*x[2]  
         s[1,4,2,0]=(0.960781399312)*x[0]+(0.0966843021482)*x[1]+(-0.448822164554)*x[2]  
         s[1,4,2,1]=(1.19002654689)*x[0]+(0.0423440255032)*x[1]+(-0.566501161163)*x[2]  
         s[2,0,0,0]=(-1.21404047236)*x[0]+(0.246576983095)*x[1]+(-1.35965095619)*x[2]  
         s[2,0,0,1]=(-0.183423338333)*x[0]+(0.490089064451)*x[1]+(-0.578583461456)*x[2]  
         s[2,0,1,0]=(1.12402576003)*x[0]+(-0.175494364486)*x[1]+(-0.303488944097)*x[2]  
         s[2,0,1,1]=(-1.65572015787)*x[0]+(-1.0020836407)*x[1]+(0.480903327702)*x[2]  
         s[2,0,2,0]=(0.145764271661)*x[0]+(-0.263090439788)*x[1]+(-1.17377189982)*x[2]  
         s[2,0,2,1]=(-0.837574918907)*x[0]+(1.48561229389)*x[1]+(0.967914367565)*x[2]  
         s[2,1,0,0]=(0.509756439273)*x[0]+(-0.111493103227)*x[1]+(0.748245818033)*x[2]  
         s[2,1,0,1]=(0.131007923179)*x[0]+(-0.128179547101)*x[1]+(-0.755140067557)*x[2]  
         s[2,1,1,0]=(-0.635852982675)*x[0]+(-0.475693144737)*x[1]+(-0.331519420739)*x[2]  
         s[2,1,1,1]=(-1.29780426286)*x[0]+(0.774138127446)*x[1]+(-1.74756722025)*x[2]  
         s[2,1,2,0]=(-0.14015158014)*x[0]+(-0.875354388859)*x[1]+(0.791253726662)*x[2]  
         s[2,1,2,1]=(-0.0772968366884)*x[0]+(-0.937984863796)*x[1]+(-0.0602294365875)*x[2]  
         s[2,2,0,0]=(0.955209462705)*x[0]+(0.849659517825)*x[1]+(0.0983431115722)*x[2]  
         s[2,2,0,1]=(1.72389105142)*x[0]+(-0.412358364777)*x[1]+(-1.3083297441)*x[2]  
         s[2,2,1,0]=(-0.895927963754)*x[0]+(1.65404011945)*x[1]+(0.297503560372)*x[2]  
         s[2,2,1,1]=(1.34506983158)*x[0]+(-0.552690724942)*x[1]+(0.0882447776246)*x[2]  
         s[2,2,2,0]=(-0.603470575964)*x[0]+(1.77788342742)*x[1]+(-0.960079624369)*x[2]  
         s[2,2,2,1]=(-0.547711891427)*x[0]+(-0.562393805421)*x[1]+(-0.183240255616)*x[2]  
         s[2,3,0,0]=(1.01018738642)*x[0]+(1.4085839719)*x[1]+(-0.619343450789)*x[2]  
         s[2,3,0,1]=(0.525036070827)*x[0]+(-0.760210492125)*x[1]+(0.621245864477)*x[2]  
         s[2,3,1,0]=(-0.786180468736)*x[0]+(0.784642311709)*x[1]+(-0.377020976891)*x[2]  
         s[2,3,1,1]=(-0.333203982307)*x[0]+(-0.044265604048)*x[1]+(-1.6196925017)*x[2]  
         s[2,3,2,0]=(-0.885601870306)*x[0]+(0.650248271309)*x[1]+(-1.7206378066)*x[2]  
         s[2,3,2,1]=(0.0941920781315)*x[0]+(-1.24650013731)*x[1]+(0.67065624977)*x[2]  
         s[2,4,0,0]=(0.0693008855416)*x[0]+(-1.33764045153)*x[1]+(0.277137873936)*x[2]  
         s[2,4,0,1]=(0.887968960137)*x[0]+(1.57875979002)*x[1]+(-0.103648235191)*x[2]  
         s[2,4,1,0]=(-0.547070384787)*x[0]+(-0.376770947917)*x[1]+(-1.81372790514)*x[2]  
         s[2,4,1,1]=(0.375805210805)*x[0]+(0.660242065798)*x[1]+(1.69413225283)*x[2]  
         s[2,4,2,0]=(-0.914715181893)*x[0]+(1.27301677765)*x[1]+(0.974031227808)*x[2]  
         s[2,4,2,1]=(-0.503816280288)*x[0]+(0.552217633496)*x[1]+(-0.90127280688)*x[2]  
         s[3,0,0,0]=(0.768275498738)*x[0]+(-0.811563543342)*x[1]+(-0.69998185891)*x[2]  
         s[3,0,0,1]=(-0.629451202094)*x[0]+(1.02346787018)*x[1]+(0.780161524988)*x[2]  
         s[3,0,1,0]=(0.584052565724)*x[0]+(-0.069634462512)*x[1]+(-1.00341091459)*x[2]  
         s[3,0,1,1]=(1.03073176869)*x[0]+(1.53263439484)*x[1]+(1.03753255807)*x[2]  
         s[3,0,2,0]=(0.0522744193577)*x[0]+(0.308512837882)*x[1]+(-0.315970675533)*x[2]  
         s[3,0,2,1]=(0.0747430001964)*x[0]+(0.863711676177)*x[1]+(1.07705766445)*x[2]  
         s[3,1,0,0]=(0.114255376522)*x[0]+(1.47818231679)*x[1]+(0.0222267873076)*x[2]  
         s[3,1,0,1]=(0.613783843499)*x[0]+(0.369289287936)*x[1]+(1.08226313005)*x[2]  
         s[3,1,1,0]=(0.474121107413)*x[0]+(-0.284169623677)*x[1]+(1.26739419136)*x[2]  
         s[3,1,1,1]=(0.703235040854)*x[0]+(0.340511678132)*x[1]+(0.314037803901)*x[2]  
         s[3,1,2,0]=(-0.754512705698)*x[0]+(0.957288483514)*x[1]+(1.38853172146)*x[2]  
         s[3,1,2,1]=(0.338933480448)*x[0]+(1.30797425088)*x[1]+(-0.492819385452)*x[2]  
         s[3,2,0,0]=(0.477902330587)*x[0]+(0.658604196318)*x[1]+(-0.669039618554)*x[2]  
         s[3,2,0,1]=(0.584833130533)*x[0]+(0.205626741315)*x[1]+(-0.449267859148)*x[2]  
         s[3,2,1,0]=(0.392564971475)*x[0]+(-0.867191184183)*x[1]+(0.508221616556)*x[2]  
         s[3,2,1,1]=(0.199023224346)*x[0]+(0.210018232234)*x[1]+(0.17332311179)*x[2]  
         s[3,2,2,0]=(-0.530182002398)*x[0]+(-0.70410123336)*x[1]+(0.454418407328)*x[2]  
         s[3,2,2,1]=(-1.00165228123)*x[0]+(0.253353462588)*x[1]+(1.07981964164)*x[2]  
         s[3,3,0,0]=(-0.00388223127856)*x[0]+(-0.256156832173)*x[1]+(-1.22618259947)*x[2]  
         s[3,3,0,1]=(1.04947612909)*x[0]+(-0.590938924785)*x[1]+(-0.80453902875)*x[2]  
         s[3,3,1,0]=(0.395025775135)*x[0]+(-1.30382091375)*x[1]+(1.00251618393)*x[2]  
         s[3,3,1,1]=(-0.601315067206)*x[0]+(-0.226958312276)*x[1]+(-0.69720544326)*x[2]  
         s[3,3,2,0]=(0.748907154335)*x[0]+(-0.694932273918)*x[1]+(0.143655252827)*x[2]  
         s[3,3,2,1]=(-0.228346281761)*x[0]+(0.0818793892413)*x[1]+(0.376376078012)*x[2]  
         s[3,4,0,0]=(0.675502208069)*x[0]+(0.498131679631)*x[1]+(-0.606527858224)*x[2]  
         s[3,4,0,1]=(0.230994211989)*x[0]+(-1.81768645462)*x[1]+(1.59488392513)*x[2]  
         s[3,4,1,0]=(-1.35866095694)*x[0]+(-0.122601842831)*x[1]+(1.73437014104)*x[2]  
         s[3,4,1,1]=(0.63210638436)*x[0]+(1.50387972886)*x[1]+(0.655743288533)*x[2]  
         s[3,4,2,0]=(1.42156357373)*x[0]+(-0.701544596166)*x[1]+(0.88931540397)*x[2]  
         s[3,4,2,1]=(-0.405515262733)*x[0]+(0.872922189212)*x[1]+(-1.13847750709)*x[2]  
         ref[0,0,0,0]=(0.415231330279)/(o+1.)+(0.982601202296)+(-0.713217663735)*0.5**o  
         ref[0,0,0,1]=(0.650505784971)/(o+1.)+(0.406482330235)+(0.983584624374)*0.5**o  
         ref[0,0,1,0]=(-0.615926989595)/(o+1.)+(0.113540305186)+(0.98566940684)*0.5**o  
         ref[0,0,1,1]=(-1.36210768774)/(o+1.)+(0.330430698616)+(-0.558173143358)*0.5**o  
         ref[0,0,2,0]=(0.589319954581)/(o+1.)+(-0.146725890489)+(-0.735723391368)*0.5**o  
         ref[0,0,2,1]=(-0.819641973816)/(o+1.)+(0.0696728799133)+(-0.791637687141)*0.5**o  
         ref[0,1,0,0]=(-0.984505810214)/(o+1.)+(0.0623424750886)+(0.344477755092)*0.5**o  
         ref[0,1,0,1]=(0.0372238318297)/(o+1.)+(0.201167151246)+(-0.0918809412683)*0.5**o  
         ref[0,1,1,0]=(-0.988162693644)/(o+1.)+(-0.658809560166)+(-0.51150536516)*0.5**o  
         ref[0,1,1,1]=(0.191409590473)/(o+1.)+(-0.426836466412)+(-0.179691491256)*0.5**o  
         ref[0,1,2,0]=(-1.50151479209)/(o+1.)+(-0.648874443157)+(-0.84550527693)*0.5**o  
         ref[0,1,2,1]=(-1.3172677321)/(o+1.)+(0.885092333538)+(0.445953604186)*0.5**o  
         ref[0,2,0,0]=(0.1269682286)/(o+1.)+(-0.175772039094)+(0.346400852583)*0.5**o  
         ref[0,2,0,1]=(-1.46726533796)/(o+1.)+(-1.05015066374)+(0.164949932075)*0.5**o  
         ref[0,2,1,0]=(-1.23701559967)/(o+1.)+(-0.825973196415)+(-0.437974579642)*0.5**o  
         ref[0,2,1,1]=(0.132084480709)/(o+1.)+(0.0364121752536)+(0.964003561191)*0.5**o  
         ref[0,2,2,0]=(-0.0575514788048)/(o+1.)+(0.574131321284)+(0.798313861933)*0.5**o  
         ref[0,2,2,1]=(-0.854422215721)/(o+1.)+(0.454172855359)+(-0.0904098414555)*0.5**o  
         ref[0,3,0,0]=(-1.04634289994)/(o+1.)+(0.354533324899)+(0.0668179218583)*0.5**o  
         ref[0,3,0,1]=(-0.415702586981)/(o+1.)+(0.126519101056)+(-0.375785613379)*0.5**o  
         ref[0,3,1,0]=(-0.268120824236)/(o+1.)+(0.500467336081)+(-0.751457107646)*0.5**o  
         ref[0,3,1,1]=(0.827791290739)/(o+1.)+(-0.347418978526)+(0.303356926219)*0.5**o  
         ref[0,3,2,0]=(-0.1387759961)/(o+1.)+(-0.350616137823)+(0.893204607472)*0.5**o  
         ref[0,3,2,1]=(0.129310667468)/(o+1.)+(-0.252264005651)+(0.302506569481)*0.5**o  
         ref[0,4,0,0]=(-0.021050677621)/(o+1.)+(-0.980639199085)+(-0.879325916576)*0.5**o  
         ref[0,4,0,1]=(-0.262715302419)/(o+1.)+(1.20073556064)+(-0.118627527238)*0.5**o  
         ref[0,4,1,0]=(0.261035782917)/(o+1.)+(-0.449979981215)+(0.230477597727)*0.5**o  
         ref[0,4,1,1]=(-0.47960276307)/(o+1.)+(0.219069456491)+(0.629614654702)*0.5**o  
         ref[0,4,2,0]=(-1.27925873031)/(o+1.)+(-1.32602054802)+(-0.360947857308)*0.5**o  
         ref[0,4,2,1]=(-1.34486930774)/(o+1.)+(0.546553886393)+(0.46186307592)*0.5**o  
         ref[1,0,0,0]=(0.430196940607)/(o+1.)+(0.311302638938)+(0.935617954556)*0.5**o  
         ref[1,0,0,1]=(0.0865234935036)/(o+1.)+(-0.268442519337)+(0.055058120343)*0.5**o  
         ref[1,0,1,0]=(-1.48387607046)/(o+1.)+(-0.786378289878)+(-0.248387627621)*0.5**o  
         ref[1,0,1,1]=(0.758534313728)/(o+1.)+(-0.265213280892)+(-0.968990376127)*0.5**o  
         ref[1,0,2,0]=(-0.713142570031)/(o+1.)+(0.462618013893)+(0.908882565677)*0.5**o  
         ref[1,0,2,1]=(-0.482219090892)/(o+1.)+(0.307689127346)+(-0.584337050105)*0.5**o  
         ref[1,1,0,0]=(-1.17250881543)/(o+1.)+(0.113442845094)+(0.581949609453)*0.5**o  
         ref[1,1,0,1]=(-1.3468375595)/(o+1.)+(0.395669021834)+(-0.565387176936)*0.5**o  
         ref[1,1,1,0]=(0.2018351732)/(o+1.)+(-0.157830690125)+(-0.119894225596)*0.5**o  
         ref[1,1,1,1]=(1.21543817764)/(o+1.)+(-0.0497756593583)+(0.0398933604741)*0.5**o  
         ref[1,1,2,0]=(-0.162294483944)/(o+1.)+(0.85994581496)+(-0.885459650791)*0.5**o  
         ref[1,1,2,1]=(1.24422084677)/(o+1.)+(-0.379646444866)+(-0.238509707766)*0.5**o  
         ref[1,2,0,0]=(1.5435438681)/(o+1.)+(0.08540126524)+(-0.300922543405)*0.5**o  
         ref[1,2,0,1]=(-0.112210840363)/(o+1.)+(0.480051249506)+(-0.623911103306)*0.5**o  
         ref[1,2,1,0]=(0.285721711645)/(o+1.)+(0.0100191655774)+(0.27705881288)*0.5**o  
         ref[1,2,1,1]=(0.66930209958)/(o+1.)+(-0.542529578578)+(0.878284909271)*0.5**o  
         ref[1,2,2,0]=(1.12100699995)/(o+1.)+(-0.678457673316)+(-0.245896808662)*0.5**o  
         ref[1,2,2,1]=(-0.88612973059)/(o+1.)+(-1.00088764314)+(-0.544629353594)*0.5**o  
         ref[1,3,0,0]=(0.387350166894)/(o+1.)+(-0.499575950447)+(0.864495705983)*0.5**o  
         ref[1,3,0,1]=(-0.942393535847)/(o+1.)+(0.0303050564575)+(-0.175679426801)*0.5**o  
         ref[1,3,1,0]=(-0.798050539357)/(o+1.)+(0.126548837387)+(0.177722720331)*0.5**o  
         ref[1,3,1,1]=(-1.50957773465)/(o+1.)+(0.172938183698)+(0.663799992229)*0.5**o  
         ref[1,3,2,0]=(0.469444503978)/(o+1.)+(-0.647836043317)+(-0.273776693474)*0.5**o  
         ref[1,3,2,1]=(0.310061780349)/(o+1.)+(1.05452404891)+(-0.720504211989)*0.5**o  
         ref[1,4,0,0]=(-0.820548632752)/(o+1.)+(0.105943005381)+(-0.88052055463)*0.5**o  
         ref[1,4,0,1]=(-0.158467564266)/(o+1.)+(-0.709811754591)+(0.35022196919)*0.5**o  
         ref[1,4,1,0]=(0.00990374166591)/(o+1.)+(0.51839921597)+(-0.637429024341)*0.5**o  
         ref[1,4,1,1]=(-0.246106620377)/(o+1.)+(0.33455634807)+(0.0428492610972)*0.5**o  
         ref[1,4,2,0]=(0.472702988578)/(o+1.)+(0.0688149777117)+(-0.00168940709497)*0.5**o  
         ref[1,4,2,1]=(0.284541065049)/(o+1.)+(-0.0548349320689)+(0.490998210318)*0.5**o  
         ref[2,0,0,0]=(-0.733338280715)/(o+1.)+(-0.47189177308)+(-0.649992618571)*0.5**o  
         ref[2,0,0,1]=(-0.948815264173)/(o+1.)+(0.837962467604)+(-0.999027406375)*0.5**o  
         ref[2,0,1,0]=(-0.0944539750337)/(o+1.)+(0.0746201219713)+(0.590256182541)*0.5**o  
         ref[2,0,1,1]=(0.044594970161)/(o+1.)+(-0.717673746264)+(-0.786147948501)*0.5**o  
         ref[2,0,2,0]=(-0.387429911457)/(o+1.)+(-0.0765750118601)+(-0.750518132769)*0.5**o  
         ref[2,0,2,1]=(1.28025192232)/(o+1.)+(0.425010917096)+(-0.514322013965)*0.5**o  
         ref[2,1,0,0]=(0.85161480185)/(o+1.)+(-0.117153136076)+(0.52920062438)*0.5**o  
         ref[2,1,0,1]=(-0.558914411305)/(o+1.)+(-0.229298513746)+(0.265199747318)*0.5**o  
         ref[2,1,1,0]=(-0.33769433116)/(o+1.)+(-0.678382612728)+(0.251394008465)*0.5**o  
         ref[2,1,1,1]=(-0.990803230186)/(o+1.)+(-0.413400680719)+(-0.453628764049)*0.5**o  
         ref[2,1,2,0]=(-0.377834292093)/(o+1.)+(0.521893888533)+(-0.890205727309)*0.5**o  
         ref[2,1,2,1]=(-1.33150035489)/(o+1.)+(-0.0586549531766)+(0.373299124171)*0.5**o  
         ref[2,2,0,0]=(-0.166255483746)/(o+1.)+(0.816713521389)+(0.436040533071)*0.5**o  
         ref[2,2,0,1]=(-1.39682071748)/(o+1.)+(0.21770833884)+(0.964606982344)*0.5**o  
         ref[2,2,1,0]=(1.3247136685)/(o+1.)+(-0.0466914213895)+(-0.175715109647)*0.5**o  
         ref[2,2,1,1]=(-0.522454725229)/(o+1.)+(0.291262422208)+(0.820553765077)*0.5**o  
         ref[2,2,2,0]=(0.136169385992)/(o+1.)+(0.253426637378)+(-0.42868943366)*0.5**o  
         ref[2,2,2,1]=(-0.131390793028)/(o+1.)+(-0.715512276073)+(0.269069392711)*0.5**o  
         ref[2,3,0,0]=(0.1679740824)/(o+1.)+(0.653952560954)+(0.323548703221)*0.5**o  
         ref[2,3,0,1]=(-0.0511907658967)/(o+1.)+(-0.236699539579)+(0.910661288233)*0.5**o  
         ref[2,3,1,0]=(0.451520708483)/(o+1.)+(-0.065786465884)+(-0.698506910633)*0.5**o  
         ref[2,3,1,1]=(-0.542162878453)/(o+1.)+(-0.237944135968)+(-0.979110937669)*0.5**o  
         ref[2,3,2,0]=(-0.489308922223)/(o+1.)+(-0.563117809253)+(-0.34044686487)*0.5**o  
         ref[2,3,2,1]=(0.382652422829)/(o+1.)+(-0.328188452455)+(-0.207927327325)*0.5**o  
         ref[2,4,0,0]=(0.0347966753187)/(o+1.)+(-0.629864354262)+(0.233730341151)*0.5**o  
         ref[2,4,0,1]=(0.123939573502)/(o+1.)+(1.03666652808)+(0.165807885309)*0.5**o  
         ref[2,4,1,0]=(-0.829855747878)/(o+1.)+(-0.507284312041)+(-0.89314486588)*0.5**o  
         ref[2,4,1,1]=(1.80556499882)/(o+1.)+(0.554771100606)+(-0.1849276706)*0.5**o  
         ref[2,4,2,0]=(0.829439412646)/(o+1.)+(0.342620313927)+(-0.182347216931)*0.5**o  
         ref[2,4,2,1]=(-0.824674529166)/(o+1.)+(-0.172483000807)+(0.316769077106)*0.5**o  
         ref[3,0,0,0]=(-1.81534289679)/(o+1.)+(0.235921261477)+(0.600230470324)*0.5**o  
         ref[3,0,0,1]=(0.758824131522)/(o+1.)+(0.540267308765)+(-0.665180555978)*0.5**o  
         ref[3,0,1,0]=(-0.61930013537)/(o+1.)+(-0.0863636993976)+(0.303034722786)*0.5**o  
         ref[3,0,1,1]=(1.09849962509)/(o+1.)+(0.780381688481)+(0.941635719543)*0.5**o  
         ref[3,0,2,0]=(0.984167465846)/(o+1.)+(-0.471651730612)+(0.00395257708327)*0.5**o  
         ref[3,0,2,1]=(-0.0216502142754)/(o+1.)+(1.25274987136)+(-0.468337187615)*0.5**o  
         ref[3,1,0,0]=(1.21762392246)/(o+1.)+(0.0235896546035)+(0.349861248945)*0.5**o  
         ref[3,1,0,1]=(0.681142299068)/(o+1.)+(0.586170195383)+(0.211853571648)*0.5**o  
         ref[3,1,1,0]=(1.22842568638)/(o+1.)+(0.308050279545)+(-0.387180570377)*0.5**o  
         ref[3,1,1,1]=(-0.708900188728)/(o+1.)+(1.04208633918)+(-0.0174879667472)*0.5**o  
         ref[3,1,2,0]=(1.79188214766)/(o+1.)+(0.301719505956)+(-0.804013660301)*0.5**o  
         ref[3,1,2,1]=(0.669297533033)/(o+1.)+(0.119247079862)+(0.246296653123)*0.5**o  
         ref[3,2,0,0]=(-0.791486989477)/(o+1.)+(0.204677775698)+(0.849598346434)*0.5**o  
         ref[3,2,0,1]=(-0.505948254664)/(o+1.)+(0.0688840300017)+(0.70937220736)*0.5**o  
         ref[3,2,1,0]=(-0.691348115315)/(o+1.)+(0.437490279091)+(-0.150037039019)*0.5**o  
         ref[3,2,1,1]=(0.708369627369)/(o+1.)+(0.176205102648)+(-0.478415264295)*0.5**o  
         ref[3,2,2,0]=(0.297093119787)/(o+1.)+(-0.248132872678)+(-0.580692202861)*0.5**o  
         ref[3,2,2,1]=(-0.476148841282)/(o+1.)+(0.443525381364)+(-0.0793810984529)*0.5**o  
         ref[3,3,0,0]=(-0.901387033571)/(o+1.)+(-0.628090499737)+(0.671346370124)*0.5**o  
         ref[3,3,0,1]=(-0.123005978892)/(o+1.)+(-0.59694482259)+(0.970893799626)*0.5**o  
         ref[3,3,1,0]=(-0.784454504087)/(o+1.)+(0.436648462004)+(0.00487862539679)*0.5**o  
         ref[3,3,1,1]=(-1.73297919322)/(o+1.)+(-0.09410977014)+(0.395719910762)*0.5**o  
         ref[3,3,2,0]=(0.0989755292654)/(o+1.)+(0.062352403584)+(-0.0260502031901)*0.5**o  
         ref[3,3,2,1]=(-0.690845491742)/(o+1.)+(0.678904082779)+(-0.437053488325)*0.5**o  
         ref[3,4,0,0]=(-0.801695028055)/(o+1.)+(0.731880266747)+(-0.0949594759642)*0.5**o  
         ref[3,4,0,1]=(-0.263446786535)/(o+1.)+(0.0496642554438)+(0.172309958154)*0.5**o  
         ref[3,4,1,0]=(0.542595531974)/(o+1.)+(0.308327980561)+(-0.906144151831)*0.5**o  
         ref[3,4,1,1]=(0.637885608826)/(o+1.)+(1.16403227519)+(-0.174220757444)*0.5**o  
         ref[3,4,2,0]=(0.946926166426)/(o+1.)+(0.0242541266649)+(0.613899961774)*0.5**o  
         ref[3,4,2,1]=(-0.0303035732231)/(o+1.)+(0.0375314231208)+(-0.715829853629)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(4, 5, 3, 2),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onFunctionOnContactZero_fromSymbol_FunctionOnContactZero_rank0(self):  
       """  
       tests integral of rank 0 Symbol on the FunctionOnContactZero  
   
       assumptions: FunctionOnContactZero(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=FunctionOnContactZero(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=())  
       s=Data(0,(),w)  
       if dim==2:  
         s=(0.793574201557)*x[0]**o+(0.516960263083)*x[0]+(-0.448328841896)*x[1]**o+(-0.142637802972)*x[1]  
         ref=(-0.448328841896)/(o+1.)+(0.187161230055)+(0.793574201557)*0.5**o  
       else:  
         s=(-0.338096271642)*x[0]**o+(0.968157263648)*x[0]+(0.646364944878)*x[1]**o+(-0.80014418872)*x[1]+(0.0561188904819)*x[2]**o+(0.413390558956)*x[2]  
         ref=(0.702483835359)/(o+1.)+(0.290701816942)+(-0.338096271642)*0.5**o  
       res=integrate(arg)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onFunctionOnContactZero_fromSymbol_FunctionOnContactZero_rank1(self):  
       """  
       tests integral of rank 1 Symbol on the FunctionOnContactZero  
   
       assumptions: FunctionOnContactZero(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=FunctionOnContactZero(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(2,))  
       s=Data(0,(2,),w)  
       ref=numpy.zeros((2,),numpy.float_)  
       if dim==2:  
         s[0]=(-0.298300777435)*x[0]**o+(-0.656203877839)*x[0]+(0.706465159872)*x[1]**o+(-0.441355227209)*x[1]  
         s[1]=(-0.323920359168)*x[0]**o+(0.167106922584)*x[0]+(-0.77484608349)*x[1]**o+(0.961265696466)*x[1]  
         ref[0]=(0.706465159872)/(o+1.)+(-0.548779552524)+(-0.298300777435)*0.5**o  
         ref[1]=(-0.77484608349)/(o+1.)+(0.564186309525)+(-0.323920359168)*0.5**o  
       else:  
         s[0]=(0.226749576468)*x[0]**o+(-0.794303615675)*x[0]+(-0.475688985171)*x[1]**o+(-0.502986687652)*x[1]+(0.620418017904)*x[2]**o+(-0.201211072609)*x[2]  
         s[1]=(-0.623757173924)*x[0]**o+(0.408817385275)*x[0]+(0.732106423025)*x[1]**o+(-0.414680272664)*x[1]+(-0.37214615142)*x[2]**o+(0.0433104237128)*x[2]  
         ref[0]=(0.144729032732)/(o+1.)+(-0.749250687968)+(0.226749576468)*0.5**o  
         ref[1]=(0.359960271605)/(o+1.)+(0.0187237681618)+(-0.623757173924)*0.5**o  
       res=integrate(arg)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(2,),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onFunctionOnContactZero_fromSymbol_FunctionOnContactZero_rank2(self):  
       """  
       tests integral of rank 2 Symbol on the FunctionOnContactZero  
   
       assumptions: FunctionOnContactZero(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=FunctionOnContactZero(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(4, 5))  
       s=Data(0,(4, 5),w)  
       ref=numpy.zeros((4, 5),numpy.float_)  
       if dim==2:  
         s[0,0]=(0.111040625394)*x[0]**o+(-0.262719374505)*x[0]+(-0.629693203515)*x[1]**o+(-0.483036975224)*x[1]  
         s[0,1]=(-0.710606684727)*x[0]**o+(-0.0460165503366)*x[0]+(-0.293965417547)*x[1]**o+(-0.495255124461)*x[1]  
         s[0,2]=(-0.777570630133)*x[0]**o+(-0.116630316032)*x[0]+(0.137509413983)*x[1]**o+(0.819368394153)*x[1]  
         s[0,3]=(-0.710576800354)*x[0]**o+(-0.580982318739)*x[0]+(0.88040631872)*x[1]**o+(0.906791051848)*x[1]  
         s[0,4]=(-0.182839498651)*x[0]**o+(-0.73087599847)*x[0]+(0.343867628394)*x[1]**o+(0.430107584469)*x[1]  
         s[1,0]=(0.69614992851)*x[0]**o+(-0.897687606816)*x[0]+(0.0635059035444)*x[1]**o+(-0.664283784877)*x[1]  
         s[1,1]=(-0.838368623112)*x[0]**o+(0.235356849847)*x[0]+(-0.575094104243)*x[1]**o+(0.317897877318)*x[1]  
         s[1,2]=(-0.466268810559)*x[0]**o+(-0.0899593004601)*x[0]+(-0.966257251835)*x[1]**o+(-0.144068791611)*x[1]  
         s[1,3]=(0.0053613868128)*x[0]**o+(0.0318146753697)*x[0]+(0.679315501165)*x[1]**o+(-0.0722416861767)*x[1]  
         s[1,4]=(0.933407356129)*x[0]**o+(-0.495175209275)*x[0]+(-0.6009471862)*x[1]**o+(-0.539903879411)*x[1]  
         s[2,0]=(0.557935263092)*x[0]**o+(0.858947740632)*x[0]+(0.0661071238236)*x[1]**o+(-0.92607178646)*x[1]  
         s[2,1]=(-0.992502095953)*x[0]**o+(0.725486544204)*x[0]+(0.966008980795)*x[1]**o+(-0.687474869885)*x[1]  
         s[2,2]=(0.131446552365)*x[0]**o+(-0.23682138542)*x[0]+(0.762830166878)*x[1]**o+(0.154873065449)*x[1]  
         s[2,3]=(-0.325278661025)*x[0]**o+(0.00830856266952)*x[0]+(-0.67055674604)*x[1]**o+(-0.200351789931)*x[1]  
         s[2,4]=(-0.153591894122)*x[0]**o+(0.11301998318)*x[0]+(-0.931207923183)*x[1]**o+(-0.808854650606)*x[1]  
         s[3,0]=(0.482659628909)*x[0]**o+(0.625042019107)*x[0]+(-0.0579000114037)*x[1]**o+(0.468282154942)*x[1]  
         s[3,1]=(-0.324897146141)*x[0]**o+(0.107637712241)*x[0]+(-0.802284595948)*x[1]**o+(0.462102155569)*x[1]  
         s[3,2]=(0.0324851257443)*x[0]**o+(0.88112504986)*x[0]+(0.364393243039)*x[1]**o+(0.279546598993)*x[1]  
         s[3,3]=(0.362592102084)*x[0]**o+(0.531299996192)*x[0]+(-0.133406058793)*x[1]**o+(0.331414049109)*x[1]  
         s[3,4]=(0.527090134663)*x[0]**o+(0.992717007892)*x[0]+(0.0417616039807)*x[1]**o+(-0.447250742864)*x[1]  
         ref[0,0]=(-0.629693203515)/(o+1.)+(-0.372878174865)+(0.111040625394)*0.5**o  
         ref[0,1]=(-0.293965417547)/(o+1.)+(-0.270635837399)+(-0.710606684727)*0.5**o  
         ref[0,2]=(0.137509413983)/(o+1.)+(0.351369039061)+(-0.777570630133)*0.5**o  
         ref[0,3]=(0.88040631872)/(o+1.)+(0.162904366555)+(-0.710576800354)*0.5**o  
         ref[0,4]=(0.343867628394)/(o+1.)+(-0.150384207)+(-0.182839498651)*0.5**o  
         ref[1,0]=(0.0635059035444)/(o+1.)+(-0.780985695846)+(0.69614992851)*0.5**o  
         ref[1,1]=(-0.575094104243)/(o+1.)+(0.276627363583)+(-0.838368623112)*0.5**o  
         ref[1,2]=(-0.966257251835)/(o+1.)+(-0.117014046036)+(-0.466268810559)*0.5**o  
         ref[1,3]=(0.679315501165)/(o+1.)+(-0.0202135054035)+(0.0053613868128)*0.5**o  
         ref[1,4]=(-0.6009471862)/(o+1.)+(-0.517539544343)+(0.933407356129)*0.5**o  
         ref[2,0]=(0.0661071238236)/(o+1.)+(-0.0335620229141)+(0.557935263092)*0.5**o  
         ref[2,1]=(0.966008980795)/(o+1.)+(0.0190058371594)+(-0.992502095953)*0.5**o  
         ref[2,2]=(0.762830166878)/(o+1.)+(-0.0409741599856)+(0.131446552365)*0.5**o  
         ref[2,3]=(-0.67055674604)/(o+1.)+(-0.0960216136307)+(-0.325278661025)*0.5**o  
         ref[2,4]=(-0.931207923183)/(o+1.)+(-0.347917333713)+(-0.153591894122)*0.5**o  
         ref[3,0]=(-0.0579000114037)/(o+1.)+(0.546662087024)+(0.482659628909)*0.5**o  
         ref[3,1]=(-0.802284595948)/(o+1.)+(0.284869933905)+(-0.324897146141)*0.5**o  
         ref[3,2]=(0.364393243039)/(o+1.)+(0.580335824427)+(0.0324851257443)*0.5**o  
         ref[3,3]=(-0.133406058793)/(o+1.)+(0.431357022651)+(0.362592102084)*0.5**o  
         ref[3,4]=(0.0417616039807)/(o+1.)+(0.272733132514)+(0.527090134663)*0.5**o  
       else:  
         s[0,0]=(-0.910274365459)*x[0]**o+(0.444602331451)*x[0]+(0.109320774249)*x[1]**o+(-0.340302571967)*x[1]+(-0.43434237629)*x[2]**o+(-0.943276146561)*x[2]  
         s[0,1]=(0.290437327261)*x[0]**o+(0.936756757082)*x[0]+(0.169426804577)*x[1]**o+(-0.606271363634)*x[1]+(0.0955072153861)*x[2]**o+(0.500289189372)*x[2]  
         s[0,2]=(0.857537342473)*x[0]**o+(-0.441518068791)*x[0]+(0.280884170231)*x[1]**o+(-0.712646882141)*x[1]+(-0.771612131879)*x[2]**o+(-0.191796438089)*x[2]  
         s[0,3]=(0.171520107567)*x[0]**o+(0.92204336001)*x[0]+(-0.370919720606)*x[1]**o+(0.768895739632)*x[1]+(0.784096316797)*x[2]**o+(-0.687371757606)*x[2]  
         s[0,4]=(-0.941363513955)*x[0]**o+(-0.715641149458)*x[0]+(0.309819925901)*x[1]**o+(0.807925106464)*x[1]+(0.283008337009)*x[2]**o+(-0.858020235388)*x[2]  
         s[1,0]=(-0.368063286241)*x[0]**o+(-0.379538647626)*x[0]+(0.568731253476)*x[1]**o+(-0.129142499862)*x[1]+(0.664990905083)*x[2]**o+(0.72526514854)*x[2]  
         s[1,1]=(0.609862576834)*x[0]**o+(0.168414778244)*x[0]+(0.705960386503)*x[1]**o+(0.414950596481)*x[1]+(-0.324853936067)*x[2]**o+(0.705193129155)*x[2]  
         s[1,2]=(0.259927679551)*x[0]**o+(0.023313779932)*x[0]+(0.542815998551)*x[1]**o+(-0.980335573131)*x[1]+(-0.104377098432)*x[2]**o+(0.678830057048)*x[2]  
         s[1,3]=(-0.592662443082)*x[0]**o+(0.887389713188)*x[0]+(-0.907629711077)*x[1]**o+(0.965433874409)*x[1]+(-0.0179359825534)*x[2]**o+(-0.768070640771)*x[2]  
         s[1,4]=(0.0233212032451)*x[0]**o+(-0.0505203178694)*x[0]+(-0.465871409785)*x[1]**o+(-0.437317133846)*x[1]+(0.208545612303)*x[2]**o+(-0.0502465428942)*x[2]  
         s[2,0]=(-0.273603162201)*x[0]**o+(0.192745661279)*x[0]+(0.296585107806)*x[1]**o+(0.46173411046)*x[1]+(0.673984995689)*x[2]**o+(-0.88275015509)*x[2]  
         s[2,1]=(0.36805707552)*x[0]**o+(-0.33705395449)*x[0]+(0.0140175482223)*x[1]**o+(0.64760814101)*x[1]+(-0.91874701962)*x[2]**o+(0.383318293978)*x[2]  
         s[2,2]=(-0.900273344488)*x[0]**o+(0.498842169958)*x[0]+(-0.498406294921)*x[1]**o+(-0.403932835154)*x[1]+(-0.156723389073)*x[2]**o+(0.214962470693)*x[2]  
         s[2,3]=(-0.798208224472)*x[0]**o+(-0.746730197648)*x[0]+(-0.397704785717)*x[1]**o+(-0.970985500613)*x[1]+(0.750200448417)*x[2]**o+(0.974572822346)*x[2]  
         s[2,4]=(-0.464282027917)*x[0]**o+(-0.754333918275)*x[0]+(0.332816676589)*x[1]**o+(-0.600568600942)*x[1]+(0.188339826223)*x[2]**o+(0.956665673953)*x[2]  
         s[3,0]=(0.291526453393)*x[0]**o+(0.259245798805)*x[0]+(0.742708355753)*x[1]**o+(0.21348170853)*x[1]+(-0.983407115555)*x[2]**o+(-0.862966239373)*x[2]  
         s[3,1]=(0.874250384958)*x[0]**o+(-0.542706319171)*x[0]+(0.513206274058)*x[1]**o+(-0.493584668769)*x[1]+(-0.990552049402)*x[2]**o+(-0.0611365067488)*x[2]  
         s[3,2]=(-0.620092725842)*x[0]**o+(-0.0940854652025)*x[0]+(-0.788220564782)*x[1]**o+(0.952851796216)*x[1]+(-0.102879423616)*x[2]**o+(-0.559035384428)*x[2]  
         s[3,3]=(-0.149822264616)*x[0]**o+(-0.113017264993)*x[0]+(-0.472046202247)*x[1]**o+(-0.21062255325)*x[1]+(-0.531066124816)*x[2]**o+(0.307214441703)*x[2]  
         s[3,4]=(0.412388911019)*x[0]**o+(-0.0814495987981)*x[0]+(0.176049376352)*x[1]**o+(-0.660623309779)*x[1]+(0.573030010589)*x[2]**o+(-0.671602921264)*x[2]  
         ref[0,0]=(-0.325021602041)/(o+1.)+(-0.419488193539)+(-0.910274365459)*0.5**o  
         ref[0,1]=(0.264934019963)/(o+1.)+(0.41538729141)+(0.290437327261)*0.5**o  
         ref[0,2]=(-0.490727961648)/(o+1.)+(-0.672980694511)+(0.857537342473)*0.5**o  
         ref[0,3]=(0.413176596192)/(o+1.)+(0.501783671018)+(0.171520107567)*0.5**o  
         ref[0,4]=(0.592828262909)/(o+1.)+(-0.382868139192)+(-0.941363513955)*0.5**o  
         ref[1,0]=(1.23372215856)/(o+1.)+(0.108292000526)+(-0.368063286241)*0.5**o  
         ref[1,1]=(0.381106450436)/(o+1.)+(0.64427925194)+(0.609862576834)*0.5**o  
         ref[1,2]=(0.438438900119)/(o+1.)+(-0.139095868075)+(0.259927679551)*0.5**o  
         ref[1,3]=(-0.92556569363)/(o+1.)+(0.542376473413)+(-0.592662443082)*0.5**o  
         ref[1,4]=(-0.257325797482)/(o+1.)+(-0.269041997305)+(0.0233212032451)*0.5**o  
         ref[2,0]=(0.970570103495)/(o+1.)+(-0.114135191676)+(-0.273603162201)*0.5**o  
         ref[2,1]=(-0.904729471398)/(o+1.)+(0.346936240249)+(0.36805707552)*0.5**o  
         ref[2,2]=(-0.655129683994)/(o+1.)+(0.154935902749)+(-0.900273344488)*0.5**o  
         ref[2,3]=(0.352495662699)/(o+1.)+(-0.371571437957)+(-0.798208224472)*0.5**o  
         ref[2,4]=(0.521156502812)/(o+1.)+(-0.199118422633)+(-0.464282027917)*0.5**o  
         ref[3,0]=(-0.240698759801)/(o+1.)+(-0.195119366019)+(0.291526453393)*0.5**o  
         ref[3,1]=(-0.477345775345)/(o+1.)+(-0.548713747345)+(0.874250384958)*0.5**o  
         ref[3,2]=(-0.891099988398)/(o+1.)+(0.149865473293)+(-0.620092725842)*0.5**o  
         ref[3,3]=(-1.00311232706)/(o+1.)+(-0.00821268827029)+(-0.149822264616)*0.5**o  
         ref[3,4]=(0.749079386941)/(o+1.)+(-0.70683791492)+(0.412388911019)*0.5**o  
       res=integrate(arg)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(4, 5),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onFunctionOnContactZero_fromSymbol_FunctionOnContactZero_rank3(self):  
       """  
       tests integral of rank 3 Symbol on the FunctionOnContactZero  
   
       assumptions: FunctionOnContactZero(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=FunctionOnContactZero(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(6, 2, 2))  
       s=Data(0,(6, 2, 2),w)  
       ref=numpy.zeros((6, 2, 2),numpy.float_)  
       if dim==2:  
         s[0,0,0]=(0.467159870975)*x[0]**o+(-0.231363355451)*x[0]+(-0.522613470003)*x[1]**o+(-0.396872827596)*x[1]  
         s[0,0,1]=(0.483392039154)*x[0]**o+(-0.0481934692208)*x[0]+(0.59831432517)*x[1]**o+(0.753587205182)*x[1]  
         s[0,1,0]=(-0.642178324261)*x[0]**o+(0.580441968971)*x[0]+(0.19099567725)*x[1]**o+(-0.409684325755)*x[1]  
         s[0,1,1]=(-0.963913869717)*x[0]**o+(-0.412074133404)*x[0]+(-0.272818985272)*x[1]**o+(0.187802732278)*x[1]  
         s[1,0,0]=(0.377505937225)*x[0]**o+(0.51898033576)*x[0]+(-0.439566585731)*x[1]**o+(-0.998166796948)*x[1]  
         s[1,0,1]=(0.389095949557)*x[0]**o+(-0.382477743743)*x[0]+(-0.960850005856)*x[1]**o+(-0.440393846867)*x[1]  
         s[1,1,0]=(-0.70296977387)*x[0]**o+(0.315478264729)*x[0]+(-0.867044520578)*x[1]**o+(-0.760970516579)*x[1]  
         s[1,1,1]=(0.706189511641)*x[0]**o+(-0.847541758712)*x[0]+(0.814254280461)*x[1]**o+(0.38248389532)*x[1]  
         s[2,0,0]=(-0.651567091764)*x[0]**o+(-0.410805007914)*x[0]+(0.0538051169317)*x[1]**o+(0.534010791665)*x[1]  
         s[2,0,1]=(0.487085829627)*x[0]**o+(0.774536856681)*x[0]+(-0.873566030375)*x[1]**o+(0.370185957857)*x[1]  
         s[2,1,0]=(0.632552547114)*x[0]**o+(0.147565981324)*x[0]+(0.868108695886)*x[1]**o+(0.671762982739)*x[1]  
         s[2,1,1]=(-0.259846254622)*x[0]**o+(0.631407506034)*x[0]+(-0.681905081868)*x[1]**o+(0.0452497065686)*x[1]  
         s[3,0,0]=(0.057043606868)*x[0]**o+(-0.0902461813963)*x[0]+(-0.240745938715)*x[1]**o+(-0.831861045923)*x[1]  
         s[3,0,1]=(0.699648897337)*x[0]**o+(0.640417545224)*x[0]+(-0.430848221186)*x[1]**o+(0.462058652596)*x[1]  
         s[3,1,0]=(0.664926292599)*x[0]**o+(-0.891859906903)*x[0]+(0.775280390876)*x[1]**o+(0.614722294397)*x[1]  
         s[3,1,1]=(-0.785736689922)*x[0]**o+(0.687423487421)*x[0]+(-0.573349590903)*x[1]**o+(-0.653598711028)*x[1]  
         s[4,0,0]=(0.319805468591)*x[0]**o+(0.601962226985)*x[0]+(0.358802389875)*x[1]**o+(-0.468789714036)*x[1]  
         s[4,0,1]=(0.975677606412)*x[0]**o+(-0.702436984042)*x[0]+(-0.720390079934)*x[1]**o+(-0.377014128023)*x[1]  
         s[4,1,0]=(0.736756275381)*x[0]**o+(-0.257998474493)*x[0]+(0.5991398372)*x[1]**o+(-0.32399683906)*x[1]  
         s[4,1,1]=(-0.215912723594)*x[0]**o+(0.326544778825)*x[0]+(-0.620761245415)*x[1]**o+(-0.498174781757)*x[1]  
         s[5,0,0]=(-0.601667515189)*x[0]**o+(0.516733915255)*x[0]+(0.183410588351)*x[1]**o+(-0.792386589315)*x[1]  
         s[5,0,1]=(-0.561245419581)*x[0]**o+(0.371706636352)*x[0]+(-0.795300794294)*x[1]**o+(0.41047673348)*x[1]  
         s[5,1,0]=(0.466316419068)*x[0]**o+(-0.0802419079562)*x[0]+(0.569083019829)*x[1]**o+(-0.20883523199)*x[1]  
         s[5,1,1]=(-0.546242876843)*x[0]**o+(-0.499594802846)*x[0]+(-0.945490356092)*x[1]**o+(0.938984415563)*x[1]  
         ref[0,0,0]=(-0.522613470003)/(o+1.)+(-0.314118091524)+(0.467159870975)*0.5**o  
         ref[0,0,1]=(0.59831432517)/(o+1.)+(0.35269686798)+(0.483392039154)*0.5**o  
         ref[0,1,0]=(0.19099567725)/(o+1.)+(0.0853788216078)+(-0.642178324261)*0.5**o  
         ref[0,1,1]=(-0.272818985272)/(o+1.)+(-0.112135700563)+(-0.963913869717)*0.5**o  
         ref[1,0,0]=(-0.439566585731)/(o+1.)+(-0.239593230594)+(0.377505937225)*0.5**o  
         ref[1,0,1]=(-0.960850005856)/(o+1.)+(-0.411435795305)+(0.389095949557)*0.5**o  
         ref[1,1,0]=(-0.867044520578)/(o+1.)+(-0.222746125925)+(-0.70296977387)*0.5**o  
         ref[1,1,1]=(0.814254280461)/(o+1.)+(-0.232528931696)+(0.706189511641)*0.5**o  
         ref[2,0,0]=(0.0538051169317)/(o+1.)+(0.0616028918756)+(-0.651567091764)*0.5**o  
         ref[2,0,1]=(-0.873566030375)/(o+1.)+(0.572361407269)+(0.487085829627)*0.5**o  
         ref[2,1,0]=(0.868108695886)/(o+1.)+(0.409664482032)+(0.632552547114)*0.5**o  
         ref[2,1,1]=(-0.681905081868)/(o+1.)+(0.338328606302)+(-0.259846254622)*0.5**o  
         ref[3,0,0]=(-0.240745938715)/(o+1.)+(-0.46105361366)+(0.057043606868)*0.5**o  
         ref[3,0,1]=(-0.430848221186)/(o+1.)+(0.55123809891)+(0.699648897337)*0.5**o  
         ref[3,1,0]=(0.775280390876)/(o+1.)+(-0.138568806253)+(0.664926292599)*0.5**o  
         ref[3,1,1]=(-0.573349590903)/(o+1.)+(0.0169123881966)+(-0.785736689922)*0.5**o  
         ref[4,0,0]=(0.358802389875)/(o+1.)+(0.0665862564747)+(0.319805468591)*0.5**o  
         ref[4,0,1]=(-0.720390079934)/(o+1.)+(-0.539725556033)+(0.975677606412)*0.5**o  
         ref[4,1,0]=(0.5991398372)/(o+1.)+(-0.290997656776)+(0.736756275381)*0.5**o  
         ref[4,1,1]=(-0.620761245415)/(o+1.)+(-0.0858150014665)+(-0.215912723594)*0.5**o  
         ref[5,0,0]=(0.183410588351)/(o+1.)+(-0.13782633703)+(-0.601667515189)*0.5**o  
         ref[5,0,1]=(-0.795300794294)/(o+1.)+(0.391091684916)+(-0.561245419581)*0.5**o  
         ref[5,1,0]=(0.569083019829)/(o+1.)+(-0.144538569973)+(0.466316419068)*0.5**o  
         ref[5,1,1]=(-0.945490356092)/(o+1.)+(0.219694806358)+(-0.546242876843)*0.5**o  
       else:  
         s[0,0,0]=(-0.669363049954)*x[0]**o+(0.94445770304)*x[0]+(-0.504461532785)*x[1]**o+(0.636064462988)*x[1]+(0.416245244177)*x[2]**o+(0.666397932744)*x[2]  
         s[0,0,1]=(-0.778564625852)*x[0]**o+(-0.825187520549)*x[0]+(0.72174236037)*x[1]**o+(-0.884811347472)*x[1]+(-0.206727051888)*x[2]**o+(0.669175992728)*x[2]  
         s[0,1,0]=(0.59083523386)*x[0]**o+(0.264891177321)*x[0]+(0.728529437979)*x[1]**o+(0.689869176288)*x[1]+(0.759759991708)*x[2]**o+(-0.768640416685)*x[2]  
         s[0,1,1]=(-0.256994678625)*x[0]**o+(0.151952222597)*x[0]+(-0.615154134713)*x[1]**o+(0.705589259856)*x[1]+(-0.27400110493)*x[2]**o+(-0.042497975508)*x[2]  
         s[1,0,0]=(0.577165945348)*x[0]**o+(-0.475277785249)*x[0]+(-0.106826355519)*x[1]**o+(0.0424930134605)*x[1]+(0.680372240013)*x[2]**o+(0.943809871598)*x[2]  
         s[1,0,1]=(-0.309232479272)*x[0]**o+(0.195348662283)*x[0]+(0.833914381189)*x[1]**o+(0.262108970555)*x[1]+(-0.716673250709)*x[2]**o+(-0.168478923947)*x[2]  
         s[1,1,0]=(-0.275625390067)*x[0]**o+(0.523842393012)*x[0]+(0.437231937115)*x[1]**o+(0.758417244685)*x[1]+(0.826527568677)*x[2]**o+(-0.998749362644)*x[2]  
         s[1,1,1]=(0.148292586557)*x[0]**o+(0.405011487356)*x[0]+(0.4599949448)*x[1]**o+(-0.612512744054)*x[1]+(0.187004698026)*x[2]**o+(0.41423737326)*x[2]  
         s[2,0,0]=(-0.0683880574768)*x[0]**o+(0.527974031235)*x[0]+(0.761878395348)*x[1]**o+(0.588459184489)*x[1]+(-0.587912848751)*x[2]**o+(0.305103889218)*x[2]  
         s[2,0,1]=(0.520929962776)*x[0]**o+(0.33193799149)*x[0]+(-0.342126485854)*x[1]**o+(-0.14865315386)*x[1]+(0.310895900233)*x[2]**o+(-0.322869734717)*x[2]  
         s[2,1,0]=(-0.321360677385)*x[0]**o+(0.252389514576)*x[0]+(-0.0393452094196)*x[1]**o+(0.700761849784)*x[1]+(-0.526926106563)*x[2]**o+(0.510264453258)*x[2]  
         s[2,1,1]=(-0.417527085289)*x[0]**o+(-0.272942288011)*x[0]+(0.601765245586)*x[1]**o+(-0.790696366296)*x[1]+(-0.012638708702)*x[2]**o+(0.932434350334)*x[2]  
         s[3,0,0]=(-0.511516099074)*x[0]**o+(0.41782462791)*x[0]+(0.0995516379245)*x[1]**o+(0.546046499872)*x[1]+(0.874011011955)*x[2]**o+(-0.788555434082)*x[2]  
         s[3,0,1]=(0.327526313236)*x[0]**o+(-0.425896436338)*x[0]+(0.914336317958)*x[1]**o+(0.307045278546)*x[1]+(0.72678975804)*x[2]**o+(-0.752188240491)*x[2]  
         s[3,1,0]=(0.396685657572)*x[0]**o+(-0.853213412456)*x[0]+(0.592696880548)*x[1]**o+(-0.300028961606)*x[1]+(0.876996858765)*x[2]**o+(-0.0882159006726)*x[2]  
         s[3,1,1]=(-0.482121450588)*x[0]**o+(-0.112743359188)*x[0]+(0.328241708104)*x[1]**o+(-0.617997058589)*x[1]+(0.936876537283)*x[2]**o+(0.350080033532)*x[2]  
         s[4,0,0]=(-0.200856211954)*x[0]**o+(-0.122991084849)*x[0]+(0.487659949467)*x[1]**o+(-0.425527004923)*x[1]+(-0.147553486772)*x[2]**o+(-0.32641504978)*x[2]  
         s[4,0,1]=(0.333642453215)*x[0]**o+(0.954952509878)*x[0]+(-0.291340184543)*x[1]**o+(-0.628839479489)*x[1]+(0.67230688241)*x[2]**o+(0.84754444469)*x[2]  
         s[4,1,0]=(0.0708849044002)*x[0]**o+(-0.53553180865)*x[0]+(-0.114931581103)*x[1]**o+(-0.374826425939)*x[1]+(-0.0919922579012)*x[2]**o+(-0.745351276697)*x[2]  
         s[4,1,1]=(-0.224313591576)*x[0]**o+(0.329362356625)*x[0]+(-0.60957590052)*x[1]**o+(0.824884117846)*x[1]+(-0.695979917244)*x[2]**o+(-0.279844578235)*x[2]  
         s[5,0,0]=(-0.431218311479)*x[0]**o+(0.349200792571)*x[0]+(0.840732425028)*x[1]**o+(-0.484758521346)*x[1]+(0.295545194625)*x[2]**o+(0.47040408229)*x[2]  
         s[5,0,1]=(0.506935329965)*x[0]**o+(0.797912921589)*x[0]+(-0.143979832786)*x[1]**o+(-0.660815905482)*x[1]+(0.123849993986)*x[2]**o+(-0.877052796091)*x[2]  
         s[5,1,0]=(0.500348066835)*x[0]**o+(-0.455430279521)*x[0]+(-0.569813267302)*x[1]**o+(-0.855668211999)*x[1]+(0.203279416274)*x[2]**o+(-0.112743061503)*x[2]  
         s[5,1,1]=(0.993758177333)*x[0]**o+(-0.784317748398)*x[0]+(0.530003336163)*x[1]**o+(-0.857305987154)*x[1]+(0.391887947598)*x[2]**o+(0.933473063729)*x[2]  
         ref[0,0,0]=(-0.0882162886075)/(o+1.)+(1.12346004939)+(-0.669363049954)*0.5**o  
         ref[0,0,1]=(0.515015308482)/(o+1.)+(-0.520411437647)+(-0.778564625852)*0.5**o  
         ref[0,1,0]=(1.48828942969)/(o+1.)+(0.0930599684618)+(0.59083523386)*0.5**o  
         ref[0,1,1]=(-0.889155239643)/(o+1.)+(0.407521753473)+(-0.256994678625)*0.5**o  
         ref[1,0,0]=(0.573545884494)/(o+1.)+(0.255512549905)+(0.577165945348)*0.5**o  
         ref[1,0,1]=(0.11724113048)/(o+1.)+(0.144489354446)+(-0.309232479272)*0.5**o  
         ref[1,1,0]=(1.26375950579)/(o+1.)+(0.141755137526)+(-0.275625390067)*0.5**o  
         ref[1,1,1]=(0.646999642826)/(o+1.)+(0.103368058281)+(0.148292586557)*0.5**o  
         ref[2,0,0]=(0.173965546596)/(o+1.)+(0.710768552471)+(-0.0683880574768)*0.5**o  
         ref[2,0,1]=(-0.0312305856211)/(o+1.)+(-0.0697924485433)+(0.520929962776)*0.5**o  
         ref[2,1,0]=(-0.566271315982)/(o+1.)+(0.731707908809)+(-0.321360677385)*0.5**o  
         ref[2,1,1]=(0.589126536884)/(o+1.)+(-0.0656021519867)+(-0.417527085289)*0.5**o  
         ref[3,0,0]=(0.973562649879)/(o+1.)+(0.0876578468496)+(-0.511516099074)*0.5**o  
         ref[3,0,1]=(1.641126076)/(o+1.)+(-0.435519699141)+(0.327526313236)*0.5**o  
         ref[3,1,0]=(1.46969373931)/(o+1.)+(-0.620729137367)+(0.396685657572)*0.5**o  
         ref[3,1,1]=(1.26511824539)/(o+1.)+(-0.190330192122)+(-0.482121450588)*0.5**o  
         ref[4,0,0]=(0.340106462695)/(o+1.)+(-0.437466569776)+(-0.200856211954)*0.5**o  
         ref[4,0,1]=(0.380966697866)/(o+1.)+(0.586828737539)+(0.333642453215)*0.5**o  
         ref[4,1,0]=(-0.206923839004)/(o+1.)+(-0.827854755643)+(0.0708849044002)*0.5**o  
         ref[4,1,1]=(-1.30555581776)/(o+1.)+(0.437200948118)+(-0.224313591576)*0.5**o  
         ref[5,0,0]=(1.13627761965)/(o+1.)+(0.167423176757)+(-0.431218311479)*0.5**o  
         ref[5,0,1]=(-0.0201298387998)/(o+1.)+(-0.369977889992)+(0.506935329965)*0.5**o  
         ref[5,1,0]=(-0.366533851028)/(o+1.)+(-0.711920776511)+(0.500348066835)*0.5**o  
         ref[5,1,1]=(0.921891283761)/(o+1.)+(-0.354075335912)+(0.993758177333)*0.5**o  
       res=integrate(arg)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(6, 2, 2),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onFunctionOnContactZero_fromSymbol_FunctionOnContactZero_rank4(self):  
       """  
       tests integral of rank 4 Symbol on the FunctionOnContactZero  
   
       assumptions: FunctionOnContactZero(self.domain) exists  
                    self.domain supports integral on FunctionOnContactZero  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=FunctionOnContactZero(self.domain)  
       w=FunctionOnContactZero(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(4, 5, 3, 2))  
       s=Data(0,(4, 5, 3, 2),w)  
       ref=numpy.zeros((4, 5, 3, 2),numpy.float_)  
       if dim==2:  
         s[0,0,0,0]=(-0.135767714785)*x[0]**o+(0.602721853735)*x[0]+(0.685908691403)*x[1]**o+(-0.278963806046)*x[1]  
         s[0,0,0,1]=(0.548074276718)*x[0]**o+(-0.00153460595028)*x[0]+(0.964032895202)*x[1]**o+(0.145345601288)*x[1]  
         s[0,0,1,0]=(0.00388957848949)*x[0]**o+(-0.00330645752363)*x[0]+(-0.398340925709)*x[1]**o+(0.544904812736)*x[1]  
         s[0,0,1,1]=(0.896772134786)*x[0]**o+(-0.305756341328)*x[0]+(0.766835159085)*x[1]**o+(-0.185065752039)*x[1]  
         s[0,0,2,0]=(0.455765211649)*x[0]**o+(-0.172084793069)*x[0]+(-0.745694059134)*x[1]**o+(0.467137037155)*x[1]  
         s[0,0,2,1]=(-0.683685778458)*x[0]**o+(-0.526137358848)*x[0]+(0.499311653339)*x[1]**o+(-0.810057930627)*x[1]  
         s[0,1,0,0]=(0.244426126288)*x[0]**o+(0.464096329887)*x[0]+(-0.565273192791)*x[1]**o+(0.341584391362)*x[1]  
         s[0,1,0,1]=(-0.0873578866485)*x[0]**o+(-0.280704680398)*x[0]+(0.0551381505624)*x[1]**o+(0.224333075687)*x[1]  
         s[0,1,1,0]=(0.0886184124686)*x[0]**o+(-0.577421322103)*x[0]+(-0.784267376644)*x[1]**o+(-0.220754022299)*x[1]  
         s[0,1,1,1]=(-0.901203063708)*x[0]**o+(-0.791637322168)*x[0]+(-0.615643115793)*x[1]**o+(-0.0955674319946)*x[1]  
         s[0,1,2,0]=(0.418411748143)*x[0]**o+(0.0825948292296)*x[0]+(0.00527147896827)*x[1]**o+(0.474507057947)*x[1]  
         s[0,1,2,1]=(0.574446727172)*x[0]**o+(0.634382868948)*x[0]+(-0.8192829244)*x[1]**o+(0.0916815679535)*x[1]  
         s[0,2,0,0]=(-0.324743695914)*x[0]**o+(-0.517660802435)*x[0]+(-0.694637110589)*x[1]**o+(-0.191013585315)*x[1]  
         s[0,2,0,1]=(0.538239581284)*x[0]**o+(-0.793537232228)*x[0]+(-0.260263189341)*x[1]**o+(-0.232999585659)*x[1]  
         s[0,2,1,0]=(-0.535444326182)*x[0]**o+(0.375771246892)*x[0]+(-0.351338268294)*x[1]**o+(-0.922383156347)*x[1]  
         s[0,2,1,1]=(-0.754984712928)*x[0]**o+(0.844268402619)*x[0]+(-0.373848162528)*x[1]**o+(-0.0348415758383)*x[1]  
         s[0,2,2,0]=(0.101157816757)*x[0]**o+(0.322178434764)*x[0]+(0.309106041559)*x[1]**o+(-0.720194799504)*x[1]  
         s[0,2,2,1]=(-0.537633855745)*x[0]**o+(-0.149185820274)*x[0]+(-0.155113200571)*x[1]**o+(0.433800441998)*x[1]  
         s[0,3,0,0]=(0.466579973711)*x[0]**o+(-0.924681979368)*x[0]+(0.491019303223)*x[1]**o+(0.994389212618)*x[1]  
         s[0,3,0,1]=(0.202651138329)*x[0]**o+(0.114061296405)*x[0]+(-0.660374384585)*x[1]**o+(0.192752003014)*x[1]  
         s[0,3,1,0]=(0.442171269159)*x[0]**o+(-0.0740165829499)*x[0]+(-0.952344452735)*x[1]**o+(0.734456419975)*x[1]  
         s[0,3,1,1]=(0.733989617351)*x[0]**o+(0.157469674236)*x[0]+(-0.305478230795)*x[1]**o+(-0.416091191381)*x[1]  
         s[0,3,2,0]=(-0.709003057494)*x[0]**o+(-0.554321605532)*x[0]+(-0.374724207394)*x[1]**o+(-0.799384819999)*x[1]  
         s[0,3,2,1]=(-0.125623348142)*x[0]**o+(-0.695830039564)*x[0]+(0.0283773197868)*x[1]**o+(-0.459458049105)*x[1]  
         s[0,4,0,0]=(0.490207583728)*x[0]**o+(0.302026020799)*x[0]+(0.582676151383)*x[1]**o+(-0.540047416714)*x[1]  
         s[0,4,0,1]=(-0.605187460486)*x[0]**o+(-0.700102630541)*x[0]+(0.576928080618)*x[1]**o+(-0.753735278462)*x[1]  
         s[0,4,1,0]=(-0.0850932164524)*x[0]**o+(-0.132436670102)*x[0]+(0.634879197271)*x[1]**o+(-0.40759333575)*x[1]  
         s[0,4,1,1]=(0.258713682268)*x[0]**o+(0.941275860044)*x[0]+(-0.976313171743)*x[1]**o+(-0.817915320276)*x[1]  
         s[0,4,2,0]=(-0.350506879421)*x[0]**o+(-0.935416620637)*x[0]+(0.153793647237)*x[1]**o+(0.384520330312)*x[1]  
         s[0,4,2,1]=(0.671395932648)*x[0]**o+(-0.338473533885)*x[0]+(-0.769374193622)*x[1]**o+(-0.0867650576614)*x[1]  
         s[1,0,0,0]=(0.188023378319)*x[0]**o+(0.662970173794)*x[0]+(0.307120506561)*x[1]**o+(-0.561302563336)*x[1]  
         s[1,0,0,1]=(0.800293252159)*x[0]**o+(0.414126518273)*x[0]+(-0.411140279426)*x[1]**o+(-0.726050617156)*x[1]  
         s[1,0,1,0]=(-0.515339883608)*x[0]**o+(-0.849896429803)*x[0]+(-0.404819325345)*x[1]**o+(-0.660381411211)*x[1]  
         s[1,0,1,1]=(0.0512515899156)*x[0]**o+(-0.59411151972)*x[0]+(-0.586954384255)*x[1]**o+(-0.581246213363)*x[1]  
         s[1,0,2,0]=(-0.581670807515)*x[0]**o+(-0.151580006917)*x[0]+(0.166288186202)*x[1]**o+(-0.90507298782)*x[1]  
         s[1,0,2,1]=(-0.634327645938)*x[0]**o+(0.227054101481)*x[0]+(-0.698802363494)*x[1]**o+(-0.191787378024)*x[1]  
         s[1,1,0,0]=(0.434696675884)*x[0]**o+(0.550165686473)*x[0]+(-0.381545673134)*x[1]**o+(0.0353703778505)*x[1]  
         s[1,1,0,1]=(0.438065102364)*x[0]**o+(0.734419538756)*x[0]+(-0.654368291721)*x[1]**o+(-0.288248589993)*x[1]  
         s[1,1,1,0]=(0.812437488024)*x[0]**o+(0.105098628605)*x[0]+(0.670405216194)*x[1]**o+(-0.932828342978)*x[1]  
         s[1,1,1,1]=(0.52676928941)*x[0]**o+(0.34803390652)*x[0]+(0.0351984047833)*x[1]**o+(0.410003399979)*x[1]  
         s[1,1,2,0]=(-0.0967009361026)*x[0]**o+(0.164660384961)*x[0]+(0.210182888846)*x[1]**o+(0.522971695817)*x[1]  
         s[1,1,2,1]=(-0.664016192839)*x[0]**o+(0.452428778809)*x[0]+(-0.107282780635)*x[1]**o+(0.807095090624)*x[1]  
         s[1,2,0,0]=(-0.289167783943)*x[0]**o+(0.667637278664)*x[0]+(0.615088613098)*x[1]**o+(-0.771365681637)*x[1]  
         s[1,2,0,1]=(0.554991016918)*x[0]**o+(-0.0658224324202)*x[0]+(0.305877722926)*x[1]**o+(-0.410754491717)*x[1]  
         s[1,2,1,0]=(0.131109587703)*x[0]**o+(-0.589856526298)*x[0]+(-0.457418380817)*x[1]**o+(-0.766026536542)*x[1]  
         s[1,2,1,1]=(-0.339196055896)*x[0]**o+(0.0879106255633)*x[0]+(-0.300776404484)*x[1]**o+(-0.855785910082)*x[1]  
         s[1,2,2,0]=(0.169433038681)*x[0]**o+(0.900452320033)*x[0]+(-0.515800574208)*x[1]**o+(0.0353282676014)*x[1]  
         s[1,2,2,1]=(0.120477320496)*x[0]**o+(0.544656714229)*x[0]+(0.712210191539)*x[1]**o+(-0.835300413971)*x[1]  
         s[1,3,0,0]=(-0.144180890917)*x[0]**o+(0.847389690669)*x[0]+(0.21796553543)*x[1]**o+(0.0580182644011)*x[1]  
         s[1,3,0,1]=(0.0202759559404)*x[0]**o+(-0.832118697631)*x[0]+(0.860042691805)*x[1]**o+(0.954802209319)*x[1]  
         s[1,3,1,0]=(-0.232327132843)*x[0]**o+(0.988485328327)*x[0]+(-0.941830133542)*x[1]**o+(0.796919796173)*x[1]  
         s[1,3,1,1]=(-0.0528857772705)*x[0]**o+(0.24536410605)*x[0]+(-0.89565411974)*x[1]**o+(0.473315809996)*x[1]  
         s[1,3,2,0]=(0.920179439848)*x[0]**o+(0.415154298944)*x[0]+(0.690915792422)*x[1]**o+(0.0956157306525)*x[1]  
         s[1,3,2,1]=(-0.332235130954)*x[0]**o+(0.756254925963)*x[0]+(0.936945508353)*x[1]**o+(0.56286108057)*x[1]  
         s[1,4,0,0]=(0.802947524473)*x[0]**o+(0.764953990189)*x[0]+(0.58992910698)*x[1]**o+(0.807094950185)*x[1]  
         s[1,4,0,1]=(-0.309951166637)*x[0]**o+(-0.605960228686)*x[0]+(0.0223945031407)*x[1]**o+(-0.230764354345)*x[1]  
         s[1,4,1,0]=(0.856801428802)*x[0]**o+(0.748897933626)*x[0]+(0.0648717388846)*x[1]**o+(-0.197803227055)*x[1]  
         s[1,4,1,1]=(0.160470457446)*x[0]**o+(0.466029696285)*x[0]+(-0.808841434426)*x[1]**o+(-0.890661270209)*x[1]  
         s[1,4,2,0]=(0.316160329076)*x[0]**o+(-0.616711166445)*x[0]+(0.176082750216)*x[1]**o+(-0.389156386122)*x[1]  
         s[1,4,2,1]=(0.966674586588)*x[0]**o+(0.743418831809)*x[0]+(0.828814302078)*x[1]**o+(0.443124030799)*x[1]  
         s[2,0,0,0]=(0.895605391818)*x[0]**o+(-0.712359772806)*x[0]+(-0.254420890563)*x[1]**o+(0.04060068125)*x[1]  
         s[2,0,0,1]=(0.407669194399)*x[0]**o+(-0.561911820032)*x[0]+(0.759519426562)*x[1]**o+(-0.791065777521)*x[1]  
         s[2,0,1,0]=(0.0220907964237)*x[0]**o+(0.764347460016)*x[0]+(-0.894211196035)*x[1]**o+(-0.766734523336)*x[1]  
         s[2,0,1,1]=(0.276708235973)*x[0]**o+(0.902519459875)*x[0]+(0.957736485845)*x[1]**o+(0.861836071217)*x[1]  
         s[2,0,2,0]=(0.209485180668)*x[0]**o+(0.463649158628)*x[0]+(-0.0521057130471)*x[1]**o+(-0.64350767543)*x[1]  
         s[2,0,2,1]=(-0.605362744895)*x[0]**o+(-0.131055561812)*x[0]+(-0.0963734475683)*x[1]**o+(0.38191997821)*x[1]  
         s[2,1,0,0]=(0.242435009983)*x[0]**o+(-0.0678120221956)*x[0]+(-0.981711153358)*x[1]**o+(0.799273232234)*x[1]  
         s[2,1,0,1]=(-0.178432239175)*x[0]**o+(-0.895623369837)*x[0]+(-0.572639180822)*x[1]**o+(-0.83834422153)*x[1]  
         s[2,1,1,0]=(0.993103298694)*x[0]**o+(0.728567708683)*x[0]+(-0.799812986792)*x[1]**o+(-0.057428598921)*x[1]  
         s[2,1,1,1]=(-0.776745418541)*x[0]**o+(-0.338983048206)*x[0]+(-0.565511785334)*x[1]**o+(-0.308717365714)*x[1]  
         s[2,1,2,0]=(-0.199225286482)*x[0]**o+(-0.158190421122)*x[0]+(0.150112974223)*x[1]**o+(0.954346438264)*x[1]  
         s[2,1,2,1]=(-0.402303812441)*x[0]**o+(-0.874974485349)*x[0]+(0.680761341229)*x[1]**o+(-0.694296934266)*x[1]  
         s[2,2,0,0]=(0.0582479020766)*x[0]**o+(-0.562861368267)*x[0]+(0.757525601337)*x[1]**o+(0.932167579204)*x[1]  
         s[2,2,0,1]=(-0.379424441757)*x[0]**o+(0.177098262781)*x[0]+(-0.485467998718)*x[1]**o+(-0.17324576024)*x[1]  
         s[2,2,1,0]=(-0.339388895182)*x[0]**o+(0.491140214169)*x[0]+(0.471276867115)*x[1]**o+(0.292216420243)*x[1]  
         s[2,2,1,1]=(0.502027084477)*x[0]**o+(0.927860130016)*x[0]+(0.787575747782)*x[1]**o+(-0.470519713839)*x[1]  
         s[2,2,2,0]=(-0.583469643173)*x[0]**o+(-0.765710060231)*x[0]+(-0.54135991724)*x[1]**o+(0.665415514934)*x[1]  
         s[2,2,2,1]=(-0.472362804158)*x[0]**o+(-0.766567819149)*x[0]+(0.201380986075)*x[1]**o+(0.270890088749)*x[1]  
         s[2,3,0,0]=(-0.547838738364)*x[0]**o+(0.373177565132)*x[0]+(-0.921379470525)*x[1]**o+(0.0837731390271)*x[1]  
         s[2,3,0,1]=(-0.557990737044)*x[0]**o+(-0.561311443234)*x[0]+(-0.924235646481)*x[1]**o+(-0.746081692868)*x[1]  
         s[2,3,1,0]=(0.566861818147)*x[0]**o+(-0.107222369398)*x[0]+(-0.53810139661)*x[1]**o+(-0.814508288518)*x[1]  
         s[2,3,1,1]=(-0.0578464759524)*x[0]**o+(0.525704186493)*x[0]+(0.434855750568)*x[1]**o+(-0.761515114625)*x[1]  
         s[2,3,2,0]=(0.388204865306)*x[0]**o+(-0.320298614451)*x[0]+(0.0228508430597)*x[1]**o+(-0.436245057461)*x[1]  
         s[2,3,2,1]=(0.70625829226)*x[0]**o+(-0.459381956838)*x[0]+(-0.756416817999)*x[1]**o+(0.963958503587)*x[1]  
         s[2,4,0,0]=(0.595101935764)*x[0]**o+(0.0182198304835)*x[0]+(0.389172632633)*x[1]**o+(0.571052531257)*x[1]  
         s[2,4,0,1]=(-0.59261552462)*x[0]**o+(0.176171578479)*x[0]+(-0.481303115308)*x[1]**o+(0.476762838828)*x[1]  
         s[2,4,1,0]=(-0.274360684371)*x[0]**o+(0.496939161979)*x[0]+(0.0982270602491)*x[1]**o+(0.0521672721299)*x[1]  
         s[2,4,1,1]=(0.0022428239189)*x[0]**o+(-0.926985821019)*x[0]+(0.0530228030052)*x[1]**o+(0.403935928384)*x[1]  
         s[2,4,2,0]=(-0.96226874392)*x[0]**o+(0.282033354362)*x[0]+(0.917864727482)*x[1]**o+(0.32541112383)*x[1]  
         s[2,4,2,1]=(0.684506236166)*x[0]**o+(0.215015538573)*x[0]+(0.74280905237)*x[1]**o+(0.781203116718)*x[1]  
         s[3,0,0,0]=(0.658782504284)*x[0]**o+(0.396806335664)*x[0]+(0.0780367521917)*x[1]**o+(0.533907837354)*x[1]  
         s[3,0,0,1]=(0.386822554052)*x[0]**o+(-0.951475963073)*x[0]+(0.992735332775)*x[1]**o+(-0.158295718477)*x[1]  
         s[3,0,1,0]=(-0.253862856162)*x[0]**o+(-0.0131419224769)*x[0]+(0.810452271623)*x[1]**o+(-0.116490242053)*x[1]  
         s[3,0,1,1]=(-0.297107568873)*x[0]**o+(0.339277467727)*x[0]+(-0.0455924137238)*x[1]**o+(0.408214745405)*x[1]  
         s[3,0,2,0]=(0.101103302929)*x[0]**o+(0.84974169826)*x[0]+(0.668273722779)*x[1]**o+(-0.134494535453)*x[1]  
         s[3,0,2,1]=(0.144907392006)*x[0]**o+(0.59561768643)*x[0]+(0.808003987088)*x[1]**o+(0.442993444756)*x[1]  
         s[3,1,0,0]=(0.050719218416)*x[0]**o+(-0.205363570154)*x[0]+(-0.267767797056)*x[1]**o+(0.473617859576)*x[1]  
         s[3,1,0,1]=(-0.488804469299)*x[0]**o+(-0.108366154443)*x[0]+(0.754051956614)*x[1]**o+(0.601979535209)*x[1]  
         s[3,1,1,0]=(0.665579804971)*x[0]**o+(-0.820977378045)*x[0]+(-0.99768277192)*x[1]**o+(-0.553278556669)*x[1]  
         s[3,1,1,1]=(0.28421003692)*x[0]**o+(0.34932169662)*x[0]+(-0.942736776261)*x[1]**o+(-0.761313236403)*x[1]  
         s[3,1,2,0]=(-0.271033791176)*x[0]**o+(-0.269316831976)*x[0]+(0.637503921768)*x[1]**o+(0.550986595411)*x[1]  
         s[3,1,2,1]=(-0.314094366001)*x[0]**o+(0.771643852473)*x[0]+(-0.370702666003)*x[1]**o+(0.925989724825)*x[1]  
         s[3,2,0,0]=(0.608693141558)*x[0]**o+(-0.865838490365)*x[0]+(0.390277717008)*x[1]**o+(0.651999980469)*x[1]  
         s[3,2,0,1]=(-0.911099837761)*x[0]**o+(0.307504460716)*x[0]+(0.82234563191)*x[1]**o+(-0.565850042096)*x[1]  
         s[3,2,1,0]=(-0.876634035391)*x[0]**o+(0.410910752799)*x[0]+(-0.578952272394)*x[1]**o+(0.204714780618)*x[1]  
         s[3,2,1,1]=(0.06295832442)*x[0]**o+(0.441355368057)*x[0]+(0.767590856273)*x[1]**o+(-0.67580811237)*x[1]  
         s[3,2,2,0]=(-0.186380273058)*x[0]**o+(-0.891590560039)*x[0]+(-0.957486087526)*x[1]**o+(0.198598656166)*x[1]  
         s[3,2,2,1]=(-0.733041869578)*x[0]**o+(-0.369283091906)*x[0]+(-0.103339143054)*x[1]**o+(-0.5468960827)*x[1]  
         s[3,3,0,0]=(0.381695999815)*x[0]**o+(-0.398360040383)*x[0]+(-0.00816783658019)*x[1]**o+(0.209734829036)*x[1]  
         s[3,3,0,1]=(-0.458999917243)*x[0]**o+(0.693814798148)*x[0]+(0.988023235161)*x[1]**o+(0.249848645187)*x[1]  
         s[3,3,1,0]=(0.35272081264)*x[0]**o+(-0.24196842916)*x[0]+(-0.376576617413)*x[1]**o+(-0.512660897623)*x[1]  
         s[3,3,1,1]=(-0.880579928879)*x[0]**o+(-0.901266101944)*x[0]+(-0.6695966178)*x[1]**o+(0.81462165322)*x[1]  
         s[3,3,2,0]=(0.179006063683)*x[0]**o+(-0.772199368214)*x[0]+(0.173717958996)*x[1]**o+(0.943451083071)*x[1]  
         s[3,3,2,1]=(0.772059778005)*x[0]**o+(-0.816863867151)*x[0]+(0.931619586753)*x[1]**o+(0.618296473051)*x[1]  
         s[3,4,0,0]=(0.609550545616)*x[0]**o+(-0.226822163333)*x[0]+(0.498238525714)*x[1]**o+(0.145755694026)*x[1]  
         s[3,4,0,1]=(0.925097562117)*x[0]**o+(0.793877528837)*x[0]+(0.483353477991)*x[1]**o+(-0.547313214969)*x[1]  
         s[3,4,1,0]=(-0.878072917122)*x[0]**o+(0.703236130488)*x[0]+(-0.511134933342)*x[1]**o+(0.676303306122)*x[1]  
         s[3,4,1,1]=(0.0745582123775)*x[0]**o+(0.668129797141)*x[0]+(-0.493968471165)*x[1]**o+(-0.26653808146)*x[1]  
         s[3,4,2,0]=(-0.736620884918)*x[0]**o+(0.0401872117)*x[0]+(-0.312111305637)*x[1]**o+(0.811490469583)*x[1]  
         s[3,4,2,1]=(-0.663426736678)*x[0]**o+(-0.630806839416)*x[0]+(0.638515711599)*x[1]**o+(-0.386941335499)*x[1]  
         ref[0,0,0,0]=(0.685908691403)/(o+1.)+(0.161879023844)+(-0.135767714785)*0.5**o  
         ref[0,0,0,1]=(0.964032895202)/(o+1.)+(0.071905497669)+(0.548074276718)*0.5**o  
         ref[0,0,1,0]=(-0.398340925709)/(o+1.)+(0.270799177606)+(0.00388957848949)*0.5**o  
         ref[0,0,1,1]=(0.766835159085)/(o+1.)+(-0.245411046684)+(0.896772134786)*0.5**o  
         ref[0,0,2,0]=(-0.745694059134)/(o+1.)+(0.147526122043)+(0.455765211649)*0.5**o  
         ref[0,0,2,1]=(0.499311653339)/(o+1.)+(-0.668097644737)+(-0.683685778458)*0.5**o  
         ref[0,1,0,0]=(-0.565273192791)/(o+1.)+(0.402840360625)+(0.244426126288)*0.5**o  
         ref[0,1,0,1]=(0.0551381505624)/(o+1.)+(-0.0281858023555)+(-0.0873578866485)*0.5**o  
         ref[0,1,1,0]=(-0.784267376644)/(o+1.)+(-0.399087672201)+(0.0886184124686)*0.5**o  
         ref[0,1,1,1]=(-0.615643115793)/(o+1.)+(-0.443602377081)+(-0.901203063708)*0.5**o  
         ref[0,1,2,0]=(0.00527147896827)/(o+1.)+(0.278550943588)+(0.418411748143)*0.5**o  
         ref[0,1,2,1]=(-0.8192829244)/(o+1.)+(0.363032218451)+(0.574446727172)*0.5**o  
         ref[0,2,0,0]=(-0.694637110589)/(o+1.)+(-0.354337193875)+(-0.324743695914)*0.5**o  
         ref[0,2,0,1]=(-0.260263189341)/(o+1.)+(-0.513268408944)+(0.538239581284)*0.5**o  
         ref[0,2,1,0]=(-0.351338268294)/(o+1.)+(-0.273305954728)+(-0.535444326182)*0.5**o  
         ref[0,2,1,1]=(-0.373848162528)/(o+1.)+(0.40471341339)+(-0.754984712928)*0.5**o  
         ref[0,2,2,0]=(0.309106041559)/(o+1.)+(-0.19900818237)+(0.101157816757)*0.5**o  
         ref[0,2,2,1]=(-0.155113200571)/(o+1.)+(0.142307310862)+(-0.537633855745)*0.5**o  
         ref[0,3,0,0]=(0.491019303223)/(o+1.)+(0.0348536166248)+(0.466579973711)*0.5**o  
         ref[0,3,0,1]=(-0.660374384585)/(o+1.)+(0.153406649709)+(0.202651138329)*0.5**o  
         ref[0,3,1,0]=(-0.952344452735)/(o+1.)+(0.330219918513)+(0.442171269159)*0.5**o  
         ref[0,3,1,1]=(-0.305478230795)/(o+1.)+(-0.129310758573)+(0.733989617351)*0.5**o  
         ref[0,3,2,0]=(-0.374724207394)/(o+1.)+(-0.676853212765)+(-0.709003057494)*0.5**o  
         ref[0,3,2,1]=(0.0283773197868)/(o+1.)+(-0.577644044334)+(-0.125623348142)*0.5**o  
         ref[0,4,0,0]=(0.582676151383)/(o+1.)+(-0.119010697958)+(0.490207583728)*0.5**o  
         ref[0,4,0,1]=(0.576928080618)/(o+1.)+(-0.726918954502)+(-0.605187460486)*0.5**o  
         ref[0,4,1,0]=(0.634879197271)/(o+1.)+(-0.270015002926)+(-0.0850932164524)*0.5**o  
         ref[0,4,1,1]=(-0.976313171743)/(o+1.)+(0.061680269884)+(0.258713682268)*0.5**o  
         ref[0,4,2,0]=(0.153793647237)/(o+1.)+(-0.275448145163)+(-0.350506879421)*0.5**o  
         ref[0,4,2,1]=(-0.769374193622)/(o+1.)+(-0.212619295773)+(0.671395932648)*0.5**o  
         ref[1,0,0,0]=(0.307120506561)/(o+1.)+(0.0508338052288)+(0.188023378319)*0.5**o  
         ref[1,0,0,1]=(-0.411140279426)/(o+1.)+(-0.155962049441)+(0.800293252159)*0.5**o  
         ref[1,0,1,0]=(-0.404819325345)/(o+1.)+(-0.755138920507)+(-0.515339883608)*0.5**o  
         ref[1,0,1,1]=(-0.586954384255)/(o+1.)+(-0.587678866541)+(0.0512515899156)*0.5**o  
         ref[1,0,2,0]=(0.166288186202)/(o+1.)+(-0.528326497368)+(-0.581670807515)*0.5**o  
         ref[1,0,2,1]=(-0.698802363494)/(o+1.)+(0.0176333617287)+(-0.634327645938)*0.5**o  
         ref[1,1,0,0]=(-0.381545673134)/(o+1.)+(0.292768032162)+(0.434696675884)*0.5**o  
         ref[1,1,0,1]=(-0.654368291721)/(o+1.)+(0.223085474382)+(0.438065102364)*0.5**o  
         ref[1,1,1,0]=(0.670405216194)/(o+1.)+(-0.413864857186)+(0.812437488024)*0.5**o  
         ref[1,1,1,1]=(0.0351984047833)/(o+1.)+(0.379018653249)+(0.52676928941)*0.5**o  
         ref[1,1,2,0]=(0.210182888846)/(o+1.)+(0.343816040389)+(-0.0967009361026)*0.5**o  
         ref[1,1,2,1]=(-0.107282780635)/(o+1.)+(0.629761934716)+(-0.664016192839)*0.5**o  
         ref[1,2,0,0]=(0.615088613098)/(o+1.)+(-0.0518642014867)+(-0.289167783943)*0.5**o  
         ref[1,2,0,1]=(0.305877722926)/(o+1.)+(-0.238288462068)+(0.554991016918)*0.5**o  
         ref[1,2,1,0]=(-0.457418380817)/(o+1.)+(-0.67794153142)+(0.131109587703)*0.5**o  
         ref[1,2,1,1]=(-0.300776404484)/(o+1.)+(-0.38393764226)+(-0.339196055896)*0.5**o  
         ref[1,2,2,0]=(-0.515800574208)/(o+1.)+(0.467890293817)+(0.169433038681)*0.5**o  
         ref[1,2,2,1]=(0.712210191539)/(o+1.)+(-0.145321849871)+(0.120477320496)*0.5**o  
         ref[1,3,0,0]=(0.21796553543)/(o+1.)+(0.452703977535)+(-0.144180890917)*0.5**o  
         ref[1,3,0,1]=(0.860042691805)/(o+1.)+(0.0613417558442)+(0.0202759559404)*0.5**o  
         ref[1,3,1,0]=(-0.941830133542)/(o+1.)+(0.89270256225)+(-0.232327132843)*0.5**o  
         ref[1,3,1,1]=(-0.89565411974)/(o+1.)+(0.359339958023)+(-0.0528857772705)*0.5**o  
         ref[1,3,2,0]=(0.690915792422)/(o+1.)+(0.255385014798)+(0.920179439848)*0.5**o  
         ref[1,3,2,1]=(0.936945508353)/(o+1.)+(0.659558003266)+(-0.332235130954)*0.5**o  
         ref[1,4,0,0]=(0.58992910698)/(o+1.)+(0.786024470187)+(0.802947524473)*0.5**o  
         ref[1,4,0,1]=(0.0223945031407)/(o+1.)+(-0.418362291515)+(-0.309951166637)*0.5**o  
         ref[1,4,1,0]=(0.0648717388846)/(o+1.)+(0.275547353285)+(0.856801428802)*0.5**o  
         ref[1,4,1,1]=(-0.808841434426)/(o+1.)+(-0.212315786962)+(0.160470457446)*0.5**o  
         ref[1,4,2,0]=(0.176082750216)/(o+1.)+(-0.502933776283)+(0.316160329076)*0.5**o  
         ref[1,4,2,1]=(0.828814302078)/(o+1.)+(0.593271431304)+(0.966674586588)*0.5**o  
         ref[2,0,0,0]=(-0.254420890563)/(o+1.)+(-0.335879545778)+(0.895605391818)*0.5**o  
         ref[2,0,0,1]=(0.759519426562)/(o+1.)+(-0.676488798776)+(0.407669194399)*0.5**o  
         ref[2,0,1,0]=(-0.894211196035)/(o+1.)+(-0.00119353166009)+(0.0220907964237)*0.5**o  
         ref[2,0,1,1]=(0.957736485845)/(o+1.)+(0.882177765546)+(0.276708235973)*0.5**o  
         ref[2,0,2,0]=(-0.0521057130471)/(o+1.)+(-0.0899292584008)+(0.209485180668)*0.5**o  
         ref[2,0,2,1]=(-0.0963734475683)/(o+1.)+(0.125432208199)+(-0.605362744895)*0.5**o  
         ref[2,1,0,0]=(-0.981711153358)/(o+1.)+(0.365730605019)+(0.242435009983)*0.5**o  
         ref[2,1,0,1]=(-0.572639180822)/(o+1.)+(-0.866983795684)+(-0.178432239175)*0.5**o  
         ref[2,1,1,0]=(-0.799812986792)/(o+1.)+(0.335569554881)+(0.993103298694)*0.5**o  
         ref[2,1,1,1]=(-0.565511785334)/(o+1.)+(-0.32385020696)+(-0.776745418541)*0.5**o  
         ref[2,1,2,0]=(0.150112974223)/(o+1.)+(0.398078008571)+(-0.199225286482)*0.5**o  
         ref[2,1,2,1]=(0.680761341229)/(o+1.)+(-0.784635709807)+(-0.402303812441)*0.5**o  
         ref[2,2,0,0]=(0.757525601337)/(o+1.)+(0.184653105468)+(0.0582479020766)*0.5**o  
         ref[2,2,0,1]=(-0.485467998718)/(o+1.)+(0.00192625127016)+(-0.379424441757)*0.5**o  
         ref[2,2,1,0]=(0.471276867115)/(o+1.)+(0.391678317206)+(-0.339388895182)*0.5**o  
         ref[2,2,1,1]=(0.787575747782)/(o+1.)+(0.228670208089)+(0.502027084477)*0.5**o  
         ref[2,2,2,0]=(-0.54135991724)/(o+1.)+(-0.0501472726484)+(-0.583469643173)*0.5**o  
         ref[2,2,2,1]=(0.201380986075)/(o+1.)+(-0.2478388652)+(-0.472362804158)*0.5**o  
         ref[2,3,0,0]=(-0.921379470525)/(o+1.)+(0.228475352079)+(-0.547838738364)*0.5**o  
         ref[2,3,0,1]=(-0.924235646481)/(o+1.)+(-0.653696568051)+(-0.557990737044)*0.5**o  
         ref[2,3,1,0]=(-0.53810139661)/(o+1.)+(-0.460865328958)+(0.566861818147)*0.5**o  
         ref[2,3,1,1]=(0.434855750568)/(o+1.)+(-0.117905464066)+(-0.0578464759524)*0.5**o  
         ref[2,3,2,0]=(0.0228508430597)/(o+1.)+(-0.378271835956)+(0.388204865306)*0.5**o  
         ref[2,3,2,1]=(-0.756416817999)/(o+1.)+(0.252288273374)+(0.70625829226)*0.5**o  
         ref[2,4,0,0]=(0.389172632633)/(o+1.)+(0.29463618087)+(0.595101935764)*0.5**o  
         ref[2,4,0,1]=(-0.481303115308)/(o+1.)+(0.326467208654)+(-0.59261552462)*0.5**o  
         ref[2,4,1,0]=(0.0982270602491)/(o+1.)+(0.274553217055)+(-0.274360684371)*0.5**o  
         ref[2,4,1,1]=(0.0530228030052)/(o+1.)+(-0.261524946318)+(0.0022428239189)*0.5**o  
         ref[2,4,2,0]=(0.917864727482)/(o+1.)+(0.303722239096)+(-0.96226874392)*0.5**o  
         ref[2,4,2,1]=(0.74280905237)/(o+1.)+(0.498109327645)+(0.684506236166)*0.5**o  
         ref[3,0,0,0]=(0.0780367521917)/(o+1.)+(0.465357086509)+(0.658782504284)*0.5**o  
         ref[3,0,0,1]=(0.992735332775)/(o+1.)+(-0.554885840775)+(0.386822554052)*0.5**o  
         ref[3,0,1,0]=(0.810452271623)/(o+1.)+(-0.0648160822652)+(-0.253862856162)*0.5**o  
         ref[3,0,1,1]=(-0.0455924137238)/(o+1.)+(0.373746106566)+(-0.297107568873)*0.5**o  
         ref[3,0,2,0]=(0.668273722779)/(o+1.)+(0.357623581403)+(0.101103302929)*0.5**o  
         ref[3,0,2,1]=(0.808003987088)/(o+1.)+(0.519305565593)+(0.144907392006)*0.5**o  
         ref[3,1,0,0]=(-0.267767797056)/(o+1.)+(0.134127144711)+(0.050719218416)*0.5**o  
         ref[3,1,0,1]=(0.754051956614)/(o+1.)+(0.246806690383)+(-0.488804469299)*0.5**o  
         ref[3,1,1,0]=(-0.99768277192)/(o+1.)+(-0.687127967357)+(0.665579804971)*0.5**o  
         ref[3,1,1,1]=(-0.942736776261)/(o+1.)+(-0.205995769892)+(0.28421003692)*0.5**o  
         ref[3,1,2,0]=(0.637503921768)/(o+1.)+(0.140834881718)+(-0.271033791176)*0.5**o  
         ref[3,1,2,1]=(-0.370702666003)/(o+1.)+(0.848816788649)+(-0.314094366001)*0.5**o  
         ref[3,2,0,0]=(0.390277717008)/(o+1.)+(-0.106919254948)+(0.608693141558)*0.5**o  
         ref[3,2,0,1]=(0.82234563191)/(o+1.)+(-0.12917279069)+(-0.911099837761)*0.5**o  
         ref[3,2,1,0]=(-0.578952272394)/(o+1.)+(0.307812766709)+(-0.876634035391)*0.5**o  
         ref[3,2,1,1]=(0.767590856273)/(o+1.)+(-0.117226372156)+(0.06295832442)*0.5**o  
         ref[3,2,2,0]=(-0.957486087526)/(o+1.)+(-0.346495951936)+(-0.186380273058)*0.5**o  
         ref[3,2,2,1]=(-0.103339143054)/(o+1.)+(-0.458089587303)+(-0.733041869578)*0.5**o  
         ref[3,3,0,0]=(-0.00816783658019)/(o+1.)+(-0.0943126056733)+(0.381695999815)*0.5**o  
         ref[3,3,0,1]=(0.988023235161)/(o+1.)+(0.471831721667)+(-0.458999917243)*0.5**o  
         ref[3,3,1,0]=(-0.376576617413)/(o+1.)+(-0.377314663391)+(0.35272081264)*0.5**o  
         ref[3,3,1,1]=(-0.6695966178)/(o+1.)+(-0.043322224362)+(-0.880579928879)*0.5**o  
         ref[3,3,2,0]=(0.173717958996)/(o+1.)+(0.0856258574287)+(0.179006063683)*0.5**o  
         ref[3,3,2,1]=(0.931619586753)/(o+1.)+(-0.0992836970501)+(0.772059778005)*0.5**o  
         ref[3,4,0,0]=(0.498238525714)/(o+1.)+(-0.0405332346536)+(0.609550545616)*0.5**o  
         ref[3,4,0,1]=(0.483353477991)/(o+1.)+(0.123282156934)+(0.925097562117)*0.5**o  
         ref[3,4,1,0]=(-0.511134933342)/(o+1.)+(0.689769718305)+(-0.878072917122)*0.5**o  
         ref[3,4,1,1]=(-0.493968471165)/(o+1.)+(0.200795857841)+(0.0745582123775)*0.5**o  
         ref[3,4,2,0]=(-0.312111305637)/(o+1.)+(0.425838840642)+(-0.736620884918)*0.5**o  
         ref[3,4,2,1]=(0.638515711599)/(o+1.)+(-0.508874087457)+(-0.663426736678)*0.5**o  
       else:  
         s[0,0,0,0]=(-0.938544579906)*x[0]**o+(0.180067483394)*x[0]+(-0.719233529982)*x[1]**o+(0.788617757419)*x[1]+(0.556994205355)*x[2]**o+(-0.127037817454)*x[2]  
         s[0,0,0,1]=(0.953579560099)*x[0]**o+(0.562347618447)*x[0]+(-0.100565718949)*x[1]**o+(-0.110294341288)*x[1]+(0.23833069113)*x[2]**o+(-0.762859899976)*x[2]  
         s[0,0,1,0]=(-0.0146573390123)*x[0]**o+(0.610306989551)*x[0]+(-0.322740693558)*x[1]**o+(0.0287307185836)*x[1]+(0.464511767666)*x[2]**o+(0.609636002246)*x[2]  
         s[0,0,1,1]=(-0.658403837278)*x[0]**o+(0.446799474387)*x[0]+(-0.240860101539)*x[1]**o+(-0.198397925626)*x[1]+(0.874003266701)*x[2]**o+(0.313133624565)*x[2]  
         s[0,0,2,0]=(0.62578079836)*x[0]**o+(-0.0257593936528)*x[0]+(-0.60984452513)*x[1]**o+(0.635946424498)*x[1]+(-0.218596411854)*x[2]**o+(0.00763050290993)*x[2]  
         s[0,0,2,1]=(0.314093680988)*x[0]**o+(-0.869278986994)*x[0]+(-0.651770479439)*x[1]**o+(0.202960060033)*x[1]+(0.382275480924)*x[2]**o+(-0.595512215137)*x[2]  
         s[0,1,0,0]=(0.00620161785372)*x[0]**o+(0.876847803666)*x[0]+(0.520320206245)*x[1]**o+(0.228011364507)*x[1]+(0.634707030605)*x[2]**o+(0.750039227257)*x[2]  
         s[0,1,0,1]=(0.0303982843122)*x[0]**o+(-0.843928008659)*x[0]+(0.175282997162)*x[1]**o+(0.628713373934)*x[1]+(-0.260785452479)*x[2]**o+(-0.768157994235)*x[2]  
         s[0,1,1,0]=(0.310811455642)*x[0]**o+(-0.907217641071)*x[0]+(-0.982538210789)*x[1]**o+(-0.600525634532)*x[1]+(-0.864394932414)*x[2]**o+(0.458881514929)*x[2]  
         s[0,1,1,1]=(-0.751411238653)*x[0]**o+(-0.640190422476)*x[0]+(-0.408377872461)*x[1]**o+(0.72944579088)*x[1]+(0.946023481982)*x[2]**o+(-0.778523105712)*x[2]  
         s[0,1,2,0]=(-0.852982317135)*x[0]**o+(-0.770284090211)*x[0]+(-0.0651898089121)*x[1]**o+(0.570265822823)*x[1]+(0.28669660112)*x[2]**o+(0.0651543264368)*x[2]  
         s[0,1,2,1]=(-0.973162329979)*x[0]**o+(-0.246891970345)*x[0]+(0.0766743752541)*x[1]**o+(-0.403798628829)*x[1]+(-0.643254181567)*x[2]**o+(-0.378598111893)*x[2]  
         s[0,2,0,0]=(0.472595355875)*x[0]**o+(0.00120464758292)*x[0]+(-0.42244937935)*x[1]**o+(-0.9164663947)*x[1]+(-0.0845858448629)*x[2]**o+(0.72392919756)*x[2]  
         s[0,2,0,1]=(0.486817890916)*x[0]**o+(-0.70489295232)*x[0]+(-0.817086734784)*x[1]**o+(0.645820907995)*x[1]+(-0.335350124515)*x[2]**o+(-0.32309401603)*x[2]  
         s[0,2,1,0]=(0.832549390017)*x[0]**o+(-0.434882976553)*x[0]+(0.0796018608256)*x[1]**o+(-0.815177284988)*x[1]+(0.420723606982)*x[2]**o+(-0.996616855812)*x[2]  
         s[0,2,1,1]=(0.152135328754)*x[0]**o+(0.119431209093)*x[0]+(-0.0565707514319)*x[1]**o+(-0.779402141878)*x[1]+(0.504116223295)*x[2]**o+(0.35421565275)*x[2]  
         s[0,2,2,0]=(-0.358237320736)*x[0]**o+(0.486656376538)*x[0]+(-0.831122271401)*x[1]**o+(-0.0521486506858)*x[1]+(-0.782495078477)*x[2]**o+(0.856211020463)*x[2]  
         s[0,2,2,1]=(-0.1707212422)*x[0]**o+(-0.798979986621)*x[0]+(0.882236543414)*x[1]**o+(0.377099798101)*x[1]+(0.489392175267)*x[2]**o+(0.930902331932)*x[2]  
         s[0,3,0,0]=(-0.128307529775)*x[0]**o+(-0.846783963276)*x[0]+(0.946673346517)*x[1]**o+(-0.335187413972)*x[1]+(-0.408325612416)*x[2]**o+(0.629338432074)*x[2]  
         s[0,3,0,1]=(-0.554435822439)*x[0]**o+(0.990524237381)*x[0]+(-0.537192696978)*x[1]**o+(-0.826994397531)*x[1]+(0.866744291726)*x[2]**o+(-0.285154443258)*x[2]  
         s[0,3,1,0]=(-0.823501956971)*x[0]**o+(0.881638907149)*x[0]+(-0.0906956584345)*x[1]**o+(-0.902956378971)*x[1]+(-0.161189770505)*x[2]**o+(-0.160538443759)*x[2]  
         s[0,3,1,1]=(0.430542618951)*x[0]**o+(-0.769516956782)*x[0]+(0.475479099202)*x[1]**o+(-0.917793889771)*x[1]+(0.763381631494)*x[2]**o+(0.346636926064)*x[2]  
         s[0,3,2,0]=(-0.958502709531)*x[0]**o+(-0.177711289961)*x[0]+(0.586266935723)*x[1]**o+(0.890784623626)*x[1]+(-0.787544127664)*x[2]**o+(0.446360741993)*x[2]  
         s[0,3,2,1]=(-0.792569155533)*x[0]**o+(0.863653363017)*x[0]+(0.308377143826)*x[1]**o+(-0.30341033471)*x[1]+(0.0641187823207)*x[2]**o+(0.52775945782)*x[2]  
         s[0,4,0,0]=(-0.0338438096091)*x[0]**o+(-0.200503853968)*x[0]+(-0.540577100866)*x[1]**o+(-0.228756900341)*x[1]+(-0.388513893583)*x[2]**o+(0.134360460805)*x[2]  
         s[0,4,0,1]=(-0.406152624356)*x[0]**o+(-0.925153078113)*x[0]+(-0.432893083261)*x[1]**o+(0.118318067951)*x[1]+(0.839662677949)*x[2]**o+(-0.0163758572356)*x[2]  
         s[0,4,1,0]=(-0.799456787818)*x[0]**o+(-0.0974094140856)*x[0]+(-0.967532895407)*x[1]**o+(0.313503423815)*x[1]+(-0.255345608246)*x[2]**o+(0.0212515985458)*x[2]  
         s[0,4,1,1]=(0.561141037244)*x[0]**o+(0.421885997959)*x[0]+(-0.951943006997)*x[1]**o+(-0.293583958606)*x[1]+(0.26979445144)*x[2]**o+(-0.678061968406)*x[2]  
         s[0,4,2,0]=(-0.346440790531)*x[0]**o+(0.486394576884)*x[0]+(0.318188318547)*x[1]**o+(-0.635068217742)*x[1]+(-0.0718964652741)*x[2]**o+(-0.702552674876)*x[2]  
         s[0,4,2,1]=(0.450982323218)*x[0]**o+(0.682381807031)*x[0]+(-0.808585522869)*x[1]**o+(0.0201338006052)*x[1]+(-0.480685256454)*x[2]**o+(0.137075879378)*x[2]  
         s[1,0,0,0]=(0.00370747226485)*x[0]**o+(-0.0925055645922)*x[0]+(-0.917381168613)*x[1]**o+(-0.193114928297)*x[1]+(-0.00570424377166)*x[2]**o+(0.913135198646)*x[2]  
         s[1,0,0,1]=(0.314513438122)*x[0]**o+(-0.479659124185)*x[0]+(0.42293180951)*x[1]**o+(-0.597525641033)*x[1]+(-0.417172553037)*x[2]**o+(0.499251735975)*x[2]  
         s[1,0,1,0]=(0.904368787276)*x[0]**o+(-0.514051100643)*x[0]+(0.212361933482)*x[1]**o+(-0.445110428363)*x[1]+(0.221673520737)*x[2]**o+(-0.0710601569942)*x[2]  
         s[1,0,1,1]=(-0.0645313731593)*x[0]**o+(0.263267052465)*x[0]+(-0.715349556062)*x[1]**o+(0.236872392267)*x[1]+(0.605241495355)*x[2]**o+(-0.152375732378)*x[2]  
         s[1,0,2,0]=(0.721223990054)*x[0]**o+(-0.704265146199)*x[0]+(-0.586881850891)*x[1]**o+(0.425307854616)*x[1]+(0.33484446761)*x[2]**o+(-0.573115444223)*x[2]  
         s[1,0,2,1]=(-0.928667989887)*x[0]**o+(-0.877606514031)*x[0]+(-0.403016486409)*x[1]**o+(-0.517530622207)*x[1]+(0.0254991827594)*x[2]**o+(-0.82134638059)*x[2]  
         s[1,1,0,0]=(-0.598976144645)*x[0]**o+(-0.0568344921691)*x[0]+(0.944100507076)*x[1]**o+(0.636963899978)*x[1]+(0.253911413671)*x[2]**o+(-0.178511347672)*x[2]  
         s[1,1,0,1]=(0.51758257139)*x[0]**o+(-0.826610314817)*x[0]+(0.0669491359674)*x[1]**o+(-0.236450271581)*x[1]+(-0.702832265335)*x[2]**o+(-0.268110228427)*x[2]  
         s[1,1,1,0]=(-0.847292260359)*x[0]**o+(-0.382061283693)*x[0]+(0.85982617142)*x[1]**o+(0.0930902132719)*x[1]+(0.568918674)*x[2]**o+(-0.811808588084)*x[2]  
         s[1,1,1,1]=(0.396422756052)*x[0]**o+(0.667551047328)*x[0]+(-0.174441000478)*x[1]**o+(-0.40295080705)*x[1]+(0.075193248527)*x[2]**o+(-0.258123308085)*x[2]  
         s[1,1,2,0]=(0.391968381002)*x[0]**o+(0.277092735448)*x[0]+(0.72619079286)*x[1]**o+(0.336787672025)*x[1]+(0.622007882)*x[2]**o+(0.286619657146)*x[2]  
         s[1,1,2,1]=(-0.212692240987)*x[0]**o+(0.786660459419)*x[0]+(-0.528445652722)*x[1]**o+(0.177147918886)*x[1]+(0.40734794393)*x[2]**o+(0.155376280493)*x[2]  
         s[1,2,0,0]=(0.0157691022819)*x[0]**o+(-0.661679523157)*x[0]+(0.123711726993)*x[1]**o+(-0.0870910621738)*x[1]+(-0.865865892104)*x[2]**o+(0.999338641606)*x[2]  
         s[1,2,0,1]=(-0.828402321641)*x[0]**o+(-0.528217338749)*x[0]+(0.723149264147)*x[1]**o+(0.752532155985)*x[1]+(0.443929080203)*x[2]**o+(-0.929781507182)*x[2]  
         s[1,2,1,0]=(-0.375626403305)*x[0]**o+(-0.510977471867)*x[0]+(0.288802388225)*x[1]**o+(0.168184581445)*x[1]+(-0.985676398515)*x[2]**o+(-0.993246463175)*x[2]  
         s[1,2,1,1]=(0.839254171086)*x[0]**o+(-0.663664452054)*x[0]+(0.990048916717)*x[1]**o+(-0.986318241383)*x[1]+(0.726312571574)*x[2]**o+(0.411365473711)*x[2]  
         s[1,2,2,0]=(0.179198759222)*x[0]**o+(0.362349404368)*x[0]+(0.372503911575)*x[1]**o+(-0.885663720586)*x[1]+(-0.656319589417)*x[2]**o+(-0.1547676929)*x[2]  
         s[1,2,2,1]=(0.431283737039)*x[0]**o+(0.573392031568)*x[0]+(-0.167580615772)*x[1]**o+(-0.427449288729)*x[1]+(-0.771868709235)*x[2]**o+(-0.272748901939)*x[2]  
         s[1,3,0,0]=(-0.735181806951)*x[0]**o+(0.536012589912)*x[0]+(0.623248739525)*x[1]**o+(0.590921832149)*x[1]+(-0.21724838693)*x[2]**o+(0.95165954451)*x[2]  
         s[1,3,0,1]=(0.953086533561)*x[0]**o+(0.855151309595)*x[0]+(-0.877649378409)*x[1]**o+(-0.79234800867)*x[1]+(-0.647423149686)*x[2]**o+(0.718784987888)*x[2]  
         s[1,3,1,0]=(-0.723560393521)*x[0]**o+(-0.0864445384144)*x[0]+(0.852841011672)*x[1]**o+(-0.953082229559)*x[1]+(0.983938853476)*x[2]**o+(-0.195518521863)*x[2]  
         s[1,3,1,1]=(-0.915440550473)*x[0]**o+(-0.92449299685)*x[0]+(-0.150518843387)*x[1]**o+(-0.66259291358)*x[1]+(-0.812332416698)*x[2]**o+(-0.362998001567)*x[2]  
         s[1,3,2,0]=(-0.205303485441)*x[0]**o+(-0.44047413477)*x[0]+(0.563675490655)*x[1]**o+(-0.802613298805)*x[1]+(-0.384663506204)*x[2]**o+(0.881891732298)*x[2]  
         s[1,3,2,1]=(0.542339109554)*x[0]**o+(0.459852398778)*x[0]+(0.531257436652)*x[1]**o+(-0.0918654697667)*x[1]+(0.728385543797)*x[2]**o+(-0.142579191699)*x[2]  
         s[1,4,0,0]=(-0.444230035592)*x[0]**o+(0.0532350197552)*x[0]+(-0.280357698853)*x[1]**o+(0.00480903349516)*x[1]+(-0.147327835489)*x[2]**o+(-0.630977138596)*x[2]  
         s[1,4,0,1]=(0.972127984006)*x[0]**o+(0.904605524232)*x[0]+(0.44361144766)*x[1]**o+(0.586027289354)*x[1]+(-0.194334042153)*x[2]**o+(0.477271167786)*x[2]  
         s[1,4,1,0]=(-0.162531060958)*x[0]**o+(-0.186338052619)*x[0]+(-0.0696302540091)*x[1]**o+(0.143088503291)*x[1]+(0.0107879016639)*x[2]**o+(0.39899128749)*x[2]  
         s[1,4,1,1]=(0.315463685116)*x[0]**o+(-0.290348790738)*x[0]+(-0.292829602611)*x[1]**o+(-0.272218595021)*x[1]+(-0.247363514071)*x[2]**o+(0.830943482915)*x[2]  
         s[1,4,2,0]=(0.340729082172)*x[0]**o+(0.266345838644)*x[0]+(0.205349295082)*x[1]**o+(-0.0281621785636)*x[1]+(0.89948000824)*x[2]**o+(-0.764082368496)*x[2]  
         s[1,4,2,1]=(0.7615004712)*x[0]**o+(-0.366790213041)*x[0]+(-0.347719278119)*x[1]**o+(-0.664644802127)*x[1]+(0.153340126952)*x[2]**o+(-0.699790837984)*x[2]  
         s[2,0,0,0]=(0.0125409231833)*x[0]**o+(-0.497512034949)*x[0]+(0.688244767493)*x[1]**o+(-0.160005018143)*x[1]+(-0.119715348465)*x[2]**o+(-0.797969768194)*x[2]  
         s[2,0,0,1]=(-0.0036047535766)*x[0]**o+(0.726289674137)*x[0]+(-0.110716355541)*x[1]**o+(-0.937117263903)*x[1]+(0.540476278776)*x[2]**o+(-0.0254788538753)*x[2]  
         s[2,0,1,0]=(0.0494808240706)*x[0]**o+(-0.469224784419)*x[0]+(0.599591744744)*x[1]**o+(-0.694323071412)*x[1]+(-0.584890416602)*x[2]**o+(0.795168667963)*x[2]  
         s[2,0,1,1]=(-0.53303893512)*x[0]**o+(0.012157220346)*x[0]+(-0.546109156126)*x[1]**o+(-0.719758078719)*x[1]+(-0.496492728702)*x[2]**o+(0.816565066681)*x[2]  
         s[2,0,2,0]=(-0.306356882566)*x[0]**o+(0.501809420086)*x[0]+(0.171130235154)*x[1]**o+(-0.804095060824)*x[1]+(0.929639721152)*x[2]**o+(-0.516285706731)*x[2]  
         s[2,0,2,1]=(0.337441903133)*x[0]**o+(-0.524705933088)*x[0]+(0.490789790623)*x[1]**o+(0.0420695613636)*x[1]+(-0.296688134663)*x[2]**o+(-0.508555097135)*x[2]  
         s[2,1,0,0]=(0.984282580742)*x[0]**o+(0.692515911833)*x[0]+(0.610802160351)*x[1]**o+(0.174938187813)*x[1]+(0.777154457482)*x[2]**o+(-0.296265352251)*x[2]  
         s[2,1,0,1]=(0.263434795622)*x[0]**o+(0.146263475693)*x[0]+(-0.135060978)*x[1]**o+(-0.612057700058)*x[1]+(0.401206478053)*x[2]**o+(0.614641881217)*x[2]  
         s[2,1,1,0]=(0.839155090264)*x[0]**o+(0.893746351779)*x[0]+(0.652777744086)*x[1]**o+(-0.119538495003)*x[1]+(-0.116919455352)*x[2]**o+(-0.24237363241)*x[2]  
         s[2,1,1,1]=(-0.626863009974)*x[0]**o+(-0.328592553389)*x[0]+(-0.483755510715)*x[1]**o+(0.506129888719)*x[1]+(-0.369314928449)*x[2]**o+(-0.974391328259)*x[2]  
         s[2,1,2,0]=(-0.548834239805)*x[0]**o+(-0.137282729528)*x[0]+(0.980067336071)*x[1]**o+(-0.677019881527)*x[1]+(-0.633352248762)*x[2]**o+(0.394845574769)*x[2]  
         s[2,1,2,1]=(0.304097820123)*x[0]**o+(0.205705406237)*x[0]+(0.431075221394)*x[1]**o+(0.965948087934)*x[1]+(0.797211333629)*x[2]**o+(-0.750481732005)*x[2]  
         s[2,2,0,0]=(0.00294465132151)*x[0]**o+(-0.36531365965)*x[0]+(-0.477095178168)*x[1]**o+(0.640123142737)*x[1]+(0.307285555133)*x[2]**o+(-0.535459483965)*x[2]  
         s[2,2,0,1]=(0.185831262234)*x[0]**o+(0.680621489598)*x[0]+(-0.606597858106)*x[1]**o+(0.605582792294)*x[1]+(0.67028817128)*x[2]**o+(0.0936479735813)*x[2]  
         s[2,2,1,0]=(0.234717477502)*x[0]**o+(0.739313223999)*x[0]+(-0.765253630778)*x[1]**o+(-0.199364440863)*x[1]+(-0.10386639265)*x[2]**o+(-0.772307849674)*x[2]  
         s[2,2,1,1]=(0.692290926695)*x[0]**o+(-0.841554910484)*x[0]+(-0.156803726414)*x[1]**o+(0.656797138877)*x[1]+(0.4668832013)*x[2]**o+(-0.320142791051)*x[2]  
         s[2,2,2,0]=(-0.408729971023)*x[0]**o+(0.28023578811)*x[0]+(0.756339486697)*x[1]**o+(0.130791597709)*x[1]+(-0.388130026173)*x[2]**o+(-0.232133676528)*x[2]  
         s[2,2,2,1]=(-0.30215609634)*x[0]**o+(-0.515622149267)*x[0]+(-0.979560898475)*x[1]**o+(0.424855014788)*x[1]+(-0.0265200291972)*x[2]**o+(0.244204914292)*x[2]  
         s[2,3,0,0]=(-0.731783739254)*x[0]**o+(-0.910917581289)*x[0]+(-0.490859941251)*x[1]**o+(0.265521242704)*x[1]+(0.246576247389)*x[2]**o+(0.551033884684)*x[2]  
         s[2,3,0,1]=(0.353316440436)*x[0]**o+(0.607852620987)*x[0]+(0.716634525835)*x[1]**o+(0.931269029696)*x[1]+(0.512042632855)*x[2]**o+(0.84647829057)*x[2]  
         s[2,3,1,0]=(-0.682583926526)*x[0]**o+(0.0414372583894)*x[0]+(-0.368919279038)*x[1]**o+(0.263442044187)*x[1]+(0.651154272252)*x[2]**o+(0.625505230753)*x[2]  
         s[2,3,1,1]=(-0.773410808141)*x[0]**o+(-0.308532872412)*x[0]+(0.484022099132)*x[1]**o+(0.748310916514)*x[1]+(0.484822489595)*x[2]**o+(0.0919219970104)*x[2]  
         s[2,3,2,0]=(-0.856792343472)*x[0]**o+(0.475526910813)*x[0]+(0.858286241213)*x[1]**o+(0.765684964483)*x[1]+(0.842680693423)*x[2]**o+(0.759239366541)*x[2]  
         s[2,3,2,1]=(0.208814714888)*x[0]**o+(-0.319616331598)*x[0]+(-0.786662106876)*x[1]**o+(-0.742419573118)*x[1]+(-0.671654532185)*x[2]**o+(-0.81098024788)*x[2]  
         s[2,4,0,0]=(0.0581246014334)*x[0]**o+(-0.738212823784)*x[0]+(0.42828697377)*x[1]**o+(-0.795604474847)*x[1]+(-0.867930879138)*x[2]**o+(0.897777664383)*x[2]  
         s[2,4,0,1]=(0.658005351748)*x[0]**o+(0.318056754281)*x[0]+(-0.241917242833)*x[1]**o+(0.321210074114)*x[1]+(0.341921510554)*x[2]**o+(-0.713222645312)*x[2]  
         s[2,4,1,0]=(-0.865800829839)*x[0]**o+(-0.24789092495)*x[0]+(-0.765024475984)*x[1]**o+(0.246675200333)*x[1]+(0.63601593739)*x[2]**o+(0.758761609858)*x[2]  
         s[2,4,1,1]=(-0.722774458642)*x[0]**o+(-0.640277272458)*x[0]+(-0.847467314954)*x[1]**o+(-0.676376490579)*x[1]+(-0.867510590824)*x[2]**o+(0.304980448789)*x[2]  
         s[2,4,2,0]=(-0.556352556597)*x[0]**o+(-0.314836337315)*x[0]+(-0.172549538929)*x[1]**o+(-0.603791779732)*x[1]+(-0.482556973138)*x[2]**o+(0.155915646569)*x[2]  
         s[2,4,2,1]=(-0.790402254477)*x[0]**o+(0.137494169657)*x[0]+(-0.546722957671)*x[1]**o+(-0.504092758637)*x[1]+(0.370205905665)*x[2]**o+(0.905182951166)*x[2]  
         s[3,0,0,0]=(-0.393498907366)*x[0]**o+(0.792111044321)*x[0]+(0.160732029377)*x[1]**o+(0.531118521589)*x[1]+(0.616077214135)*x[2]**o+(0.0450299929995)*x[2]  
         s[3,0,0,1]=(0.0490385695005)*x[0]**o+(-0.112630305424)*x[0]+(0.932194477491)*x[1]**o+(-0.692641363201)*x[1]+(0.0679516868523)*x[2]**o+(0.997252361895)*x[2]  
         s[3,0,1,0]=(0.372518182464)*x[0]**o+(-0.390347141072)*x[0]+(-0.551584590493)*x[1]**o+(-0.762622043128)*x[1]+(-0.777489328164)*x[2]**o+(-0.306555622213)*x[2]  
         s[3,0,1,1]=(-0.907039911971)*x[0]**o+(0.716176125684)*x[0]+(-0.0317846045066)*x[1]**o+(0.344154975432)*x[1]+(-0.581050833334)*x[2]**o+(-0.800597412247)*x[2]  
         s[3,0,2,0]=(0.671061807362)*x[0]**o+(-0.632730364318)*x[0]+(0.784926714274)*x[1]**o+(-0.689167186471)*x[1]+(-0.828322284596)*x[2]**o+(-0.757384289233)*x[2]  
         s[3,0,2,1]=(0.797200318087)*x[0]**o+(0.0748753590429)*x[0]+(0.98432669884)*x[1]**o+(0.19160698616)*x[1]+(-0.941839443214)*x[2]**o+(-0.51797940249)*x[2]  
         s[3,1,0,0]=(0.396318123324)*x[0]**o+(0.553544474446)*x[0]+(-0.196123045916)*x[1]**o+(0.931142300652)*x[1]+(-0.893432985678)*x[2]**o+(0.61239614626)*x[2]  
         s[3,1,0,1]=(-0.281320711026)*x[0]**o+(0.0272769480991)*x[0]+(-0.43587599777)*x[1]**o+(0.419822767553)*x[1]+(-0.453045711683)*x[2]**o+(0.47569249252)*x[2]  
         s[3,1,1,0]=(-0.213862255449)*x[0]**o+(0.355661536766)*x[0]+(0.251742827449)*x[1]**o+(-0.807017120416)*x[1]+(-0.730339835476)*x[2]**o+(0.551573971157)*x[2]  
         s[3,1,1,1]=(0.554657719161)*x[0]**o+(-0.912970059328)*x[0]+(0.800146831674)*x[1]**o+(-0.583227572533)*x[1]+(-0.0933072839888)*x[2]**o+(0.950038311476)*x[2]  
         s[3,1,2,0]=(-0.485569875217)*x[0]**o+(-0.636350568501)*x[0]+(-0.560720680426)*x[1]**o+(0.126204185032)*x[1]+(-0.272414378167)*x[2]**o+(-0.888532404451)*x[2]  
         s[3,1,2,1]=(-0.727409224907)*x[0]**o+(0.856672459636)*x[0]+(0.37848918095)*x[1]**o+(0.622080880799)*x[1]+(-0.228417584572)*x[2]**o+(0.562188460361)*x[2]  
         s[3,2,0,0]=(-0.294609451063)*x[0]**o+(0.577588405163)*x[0]+(0.667703746348)*x[1]**o+(-0.910501998185)*x[1]+(0.843110506022)*x[2]**o+(-0.826714153775)*x[2]  
         s[3,2,0,1]=(-0.193869261184)*x[0]**o+(0.76598264579)*x[0]+(-0.15832998161)*x[1]**o+(0.647800212602)*x[1]+(0.0578289377486)*x[2]**o+(0.00658825845732)*x[2]  
         s[3,2,1,0]=(-0.567464737056)*x[0]**o+(-0.149652747243)*x[0]+(-0.55259439138)*x[1]**o+(-0.879859303137)*x[1]+(-0.618763037058)*x[2]**o+(-0.361881515471)*x[2]  
         s[3,2,1,1]=(-0.331240639597)*x[0]**o+(-0.842702790198)*x[0]+(0.14240123238)*x[1]**o+(0.732696112887)*x[1]+(0.678517810911)*x[2]**o+(0.874215749104)*x[2]  
         s[3,2,2,0]=(0.569105573686)*x[0]**o+(-0.671670416897)*x[0]+(0.809241806071)*x[1]**o+(-0.781683673317)*x[1]+(0.915497987962)*x[2]**o+(0.529423259835)*x[2]  
         s[3,2,2,1]=(0.803926266415)*x[0]**o+(0.973851217854)*x[0]+(0.00110452925071)*x[1]**o+(-0.0258074727224)*x[1]+(0.397580796648)*x[2]**o+(-0.483394954284)*x[2]  
         s[3,3,0,0]=(-0.239744952662)*x[0]**o+(0.0330238686771)*x[0]+(0.57663829323)*x[1]**o+(-0.835285980271)*x[1]+(-0.541211231475)*x[2]**o+(0.309919910162)*x[2]  
         s[3,3,0,1]=(0.998856178514)*x[0]**o+(0.69963418829)*x[0]+(-0.590956618638)*x[1]**o+(0.437083139196)*x[1]+(0.24957499362)*x[2]**o+(-0.207180573624)*x[2]  
         s[3,3,1,0]=(-0.654845715855)*x[0]**o+(0.960307610722)*x[0]+(0.615977294745)*x[1]**o+(-0.717345465881)*x[1]+(-0.0724170395954)*x[2]**o+(0.660888358757)*x[2]  
         s[3,3,1,1]=(-0.283730169109)*x[0]**o+(0.712609062937)*x[0]+(0.922422201518)*x[1]**o+(0.941787071667)*x[1]+(-0.317440296596)*x[2]**o+(-0.776070611464)*x[2]  
         s[3,3,2,0]=(-0.377933655183)*x[0]**o+(-0.946504205082)*x[0]+(-0.705852108222)*x[1]**o+(0.735471828851)*x[1]+(0.740387572185)*x[2]**o+(0.478923064569)*x[2]  
         s[3,3,2,1]=(-0.74484862371)*x[0]**o+(-0.394147355587)*x[0]+(-0.961488506416)*x[1]**o+(-0.117956733646)*x[1]+(-0.45639006521)*x[2]**o+(0.800113732885)*x[2]  
         s[3,4,0,0]=(-0.625504798604)*x[0]**o+(0.316567164198)*x[0]+(-0.616071176069)*x[1]**o+(0.882101858084)*x[1]+(0.734544640696)*x[2]**o+(-0.0269245549068)*x[2]  
         s[3,4,0,1]=(-0.307431859474)*x[0]**o+(-0.0850940272398)*x[0]+(0.389650545234)*x[1]**o+(-0.0311288588201)*x[1]+(0.560636030796)*x[2]**o+(0.990554208909)*x[2]  
         s[3,4,1,0]=(-0.85379517016)*x[0]**o+(0.768069325756)*x[0]+(0.0149807290805)*x[1]**o+(-0.87320355719)*x[1]+(-0.153198452162)*x[2]**o+(0.0809551506622)*x[2]  
         s[3,4,1,1]=(-0.427217312348)*x[0]**o+(0.860261211584)*x[0]+(0.988421955689)*x[1]**o+(0.10533108572)*x[1]+(0.903327272548)*x[2]**o+(0.434209037137)*x[2]  
         s[3,4,2,0]=(-0.264611936187)*x[0]**o+(0.0438724619932)*x[0]+(0.398401170965)*x[1]**o+(0.53328233455)*x[1]+(-0.437516039922)*x[2]**o+(0.926837033874)*x[2]  
         s[3,4,2,1]=(-0.0213427465429)*x[0]**o+(-0.41324925677)*x[0]+(0.00876072281828)*x[1]**o+(0.640763350258)*x[1]+(-0.548829379894)*x[2]**o+(0.523108062556)*x[2]  
         ref[0,0,0,0]=(-0.162239324627)/(o+1.)+(0.420823711679)+(-0.938544579906)*0.5**o  
         ref[0,0,0,1]=(0.137764972182)/(o+1.)+(-0.155403311408)+(0.953579560099)*0.5**o  
         ref[0,0,1,0]=(0.141771074109)/(o+1.)+(0.62433685519)+(-0.0146573390123)*0.5**o  
         ref[0,0,1,1]=(0.633143165162)/(o+1.)+(0.280767586663)+(-0.658403837278)*0.5**o  
         ref[0,0,2,0]=(-0.828440936984)/(o+1.)+(0.308908766878)+(0.62578079836)*0.5**o  
         ref[0,0,2,1]=(-0.269494998515)/(o+1.)+(-0.630915571049)+(0.314093680988)*0.5**o  
         ref[0,1,0,0]=(1.15502723685)/(o+1.)+(0.927449197715)+(0.00620161785372)*0.5**o  
         ref[0,1,0,1]=(-0.0855024553167)/(o+1.)+(-0.49168631448)+(0.0303982843122)*0.5**o  
         ref[0,1,1,0]=(-1.8469331432)/(o+1.)+(-0.524430880337)+(0.310811455642)*0.5**o  
         ref[0,1,1,1]=(0.537645609521)/(o+1.)+(-0.344633868654)+(-0.751411238653)*0.5**o  
         ref[0,1,2,0]=(0.221506792208)/(o+1.)+(-0.0674319704757)+(-0.852982317135)*0.5**o  
         ref[0,1,2,1]=(-0.566579806313)/(o+1.)+(-0.514644355533)+(-0.973162329979)*0.5**o  
         ref[0,2,0,0]=(-0.507035224213)/(o+1.)+(-0.0956662747788)+(0.472595355875)*0.5**o  
         ref[0,2,0,1]=(-1.1524368593)/(o+1.)+(-0.191083030177)+(0.486817890916)*0.5**o  
         ref[0,2,1,0]=(0.500325467807)/(o+1.)+(-1.12333855868)+(0.832549390017)*0.5**o  
         ref[0,2,1,1]=(0.447545471863)/(o+1.)+(-0.152877640017)+(0.152135328754)*0.5**o  
         ref[0,2,2,0]=(-1.61361734988)/(o+1.)+(0.645359373158)+(-0.358237320736)*0.5**o  
         ref[0,2,2,1]=(1.37162871868)/(o+1.)+(0.254511071706)+(-0.1707212422)*0.5**o  
         ref[0,3,0,0]=(0.538347734102)/(o+1.)+(-0.276316472587)+(-0.128307529775)*0.5**o  
         ref[0,3,0,1]=(0.329551594748)/(o+1.)+(-0.0608123017038)+(-0.554435822439)*0.5**o  
         ref[0,3,1,0]=(-0.251885428939)/(o+1.)+(-0.0909279577907)+(-0.823501956971)*0.5**o  
         ref[0,3,1,1]=(1.2388607307)/(o+1.)+(-0.670336960245)+(0.430542618951)*0.5**o  
         ref[0,3,2,0]=(-0.201277191941)/(o+1.)+(0.579717037829)+(-0.958502709531)*0.5**o  
         ref[0,3,2,1]=(0.372495926146)/(o+1.)+(0.544001243064)+(-0.792569155533)*0.5**o  
         ref[0,4,0,0]=(-0.929090994448)/(o+1.)+(-0.147450146752)+(-0.0338438096091)*0.5**o  
         ref[0,4,0,1]=(0.406769594688)/(o+1.)+(-0.411605433699)+(-0.406152624356)*0.5**o  
         ref[0,4,1,0]=(-1.22287850365)/(o+1.)+(0.118672804138)+(-0.799456787818)*0.5**o  
         ref[0,4,1,1]=(-0.682148555557)/(o+1.)+(-0.274879964526)+(0.561141037244)*0.5**o  
         ref[0,4,2,0]=(0.246291853273)/(o+1.)+(-0.425613157867)+(-0.346440790531)*0.5**o  
         ref[0,4,2,1]=(-1.28927077932)/(o+1.)+(0.419795743507)+(0.450982323218)*0.5**o  
         ref[1,0,0,0]=(-0.923085412384)/(o+1.)+(0.313757352879)+(0.00370747226485)*0.5**o  
         ref[1,0,0,1]=(0.00575925647317)/(o+1.)+(-0.288966514622)+(0.314513438122)*0.5**o  
         ref[1,0,1,0]=(0.434035454219)/(o+1.)+(-0.515110843)+(0.904368787276)*0.5**o  
         ref[1,0,1,1]=(-0.110108060707)/(o+1.)+(0.173881856177)+(-0.0645313731593)*0.5**o  
         ref[1,0,2,0]=(-0.252037383281)/(o+1.)+(-0.426036367903)+(0.721223990054)*0.5**o  
         ref[1,0,2,1]=(-0.37751730365)/(o+1.)+(-1.10824175841)+(-0.928667989887)*0.5**o  
         ref[1,1,0,0]=(1.19801192075)/(o+1.)+(0.200809030069)+(-0.598976144645)*0.5**o  
         ref[1,1,0,1]=(-0.635883129368)/(o+1.)+(-0.665585407412)+(0.51758257139)*0.5**o  
         ref[1,1,1,0]=(1.42874484542)/(o+1.)+(-0.550389829253)+(-0.847292260359)*0.5**o  
         ref[1,1,1,1]=(-0.0992477519506)/(o+1.)+(0.00323846609633)+(0.396422756052)*0.5**o  
         ref[1,1,2,0]=(1.34819867486)/(o+1.)+(0.450250032309)+(0.391968381002)*0.5**o  
         ref[1,1,2,1]=(-0.121097708792)/(o+1.)+(0.559592329399)+(-0.212692240987)*0.5**o  
         ref[1,2,0,0]=(-0.74215416511)/(o+1.)+(0.125284028138)+(0.0157691022819)*0.5**o  
         ref[1,2,0,1]=(1.16707834435)/(o+1.)+(-0.352733344973)+(-0.828402321641)*0.5**o  
         ref[1,2,1,0]=(-0.69687401029)/(o+1.)+(-0.668019676798)+(-0.375626403305)*0.5**o  
         ref[1,2,1,1]=(1.71636148829)/(o+1.)+(-0.619308609863)+(0.839254171086)*0.5**o  
         ref[1,2,2,0]=(-0.283815677841)/(o+1.)+(-0.339041004559)+(0.179198759222)*0.5**o  
         ref[1,2,2,1]=(-0.939449325007)/(o+1.)+(-0.0634030795503)+(0.431283737039)*0.5**o  
         ref[1,3,0,0]=(0.406000352595)/(o+1.)+(1.03929698329)+(-0.735181806951)*0.5**o  
         ref[1,3,0,1]=(-1.52507252809)/(o+1.)+(0.390794144406)+(0.953086533561)*0.5**o  
         ref[1,3,1,0]=(1.83677986515)/(o+1.)+(-0.617522644919)+(-0.723560393521)*0.5**o  
         ref[1,3,1,1]=(-0.962851260085)/(o+1.)+(-0.975041955998)+(-0.915440550473)*0.5**o  
         ref[1,3,2,0]=(0.179011984451)/(o+1.)+(-0.180597850638)+(-0.205303485441)*0.5**o  
         ref[1,3,2,1]=(1.25964298045)/(o+1.)+(0.112703868656)+(0.542339109554)*0.5**o  
         ref[1,4,0,0]=(-0.427685534341)/(o+1.)+(-0.286466542673)+(-0.444230035592)*0.5**o  
         ref[1,4,0,1]=(0.249277405507)/(o+1.)+(0.983951990686)+(0.972127984006)*0.5**o  
         ref[1,4,1,0]=(-0.0588423523453)/(o+1.)+(0.177870869081)+(-0.162531060958)*0.5**o  
         ref[1,4,1,1]=(-0.540193116681)/(o+1.)+(0.134188048578)+(0.315463685116)*0.5**o  
         ref[1,4,2,0]=(1.10482930332)/(o+1.)+(-0.262949354208)+(0.340729082172)*0.5**o  
         ref[1,4,2,1]=(-0.194379151166)/(o+1.)+(-0.865612926576)+(0.7615004712)*0.5**o  
         ref[2,0,0,0]=(0.568529419028)/(o+1.)+(-0.727743410643)+(0.0125409231833)*0.5**o  
         ref[2,0,0,1]=(0.429759923235)/(o+1.)+(-0.118153221821)+(-0.0036047535766)*0.5**o  
         ref[2,0,1,0]=(0.0147013281422)/(o+1.)+(-0.184189593934)+(0.0494808240706)*0.5**o  
         ref[2,0,1,1]=(-1.04260188483)/(o+1.)+(0.0544821041543)+(-0.53303893512)*0.5**o  
         ref[2,0,2,0]=(1.10076995631)/(o+1.)+(-0.409285673735)+(-0.306356882566)*0.5**o  
         ref[2,0,2,1]=(0.19410165596)/(o+1.)+(-0.49559573443)+(0.337441903133)*0.5**o  
         ref[2,1,0,0]=(1.38795661783)/(o+1.)+(0.285594373698)+(0.984282580742)*0.5**o  
         ref[2,1,0,1]=(0.266145500053)/(o+1.)+(0.0744238284255)+(0.263434795622)*0.5**o  
         ref[2,1,1,0]=(0.535858288734)/(o+1.)+(0.265917112183)+(0.839155090264)*0.5**o  
         ref[2,1,1,1]=(-0.853070439164)/(o+1.)+(-0.398426996464)+(-0.626863009974)*0.5**o  
         ref[2,1,2,0]=(0.346715087308)/(o+1.)+(-0.209728518143)+(-0.548834239805)*0.5**o  
         ref[2,1,2,1]=(1.22828655502)/(o+1.)+(0.210585881083)+(0.304097820123)*0.5**o  
         ref[2,2,0,0]=(-0.169809623035)/(o+1.)+(-0.13032500044)+(0.00294465132151)*0.5**o  
         ref[2,2,0,1]=(0.0636903131735)/(o+1.)+(0.689926127736)+(0.185831262234)*0.5**o  
         ref[2,2,1,0]=(-0.869120023429)/(o+1.)+(-0.116179533269)+(0.234717477502)*0.5**o  
         ref[2,2,1,1]=(0.310079474886)/(o+1.)+(-0.252450281328)+(0.692290926695)*0.5**o  
         ref[2,2,2,0]=(0.368209460524)/(o+1.)+(0.0894468546456)+(-0.408729971023)*0.5**o  
         ref[2,2,2,1]=(-1.00608092767)/(o+1.)+(0.0767188899067)+(-0.30215609634)*0.5**o  
         ref[2,3,0,0]=(-0.244283693862)/(o+1.)+(-0.0471812269507)+(-0.731783739254)*0.5**o  
         ref[2,3,0,1]=(1.22867715869)/(o+1.)+(1.19279997063)+(0.353316440436)*0.5**o  
         ref[2,3,1,0]=(0.282234993214)/(o+1.)+(0.465192266665)+(-0.682583926526)*0.5**o  
         ref[2,3,1,1]=(0.968844588727)/(o+1.)+(0.265850020556)+(-0.773410808141)*0.5**o  
         ref[2,3,2,0]=(1.70096693464)/(o+1.)+(1.00022562092)+(-0.856792343472)*0.5**o  
         ref[2,3,2,1]=(-1.45831663906)/(o+1.)+(-0.936508076298)+(0.208814714888)*0.5**o  
         ref[2,4,0,0]=(-0.439643905368)/(o+1.)+(-0.318019817124)+(0.0581246014334)*0.5**o  
         ref[2,4,0,1]=(0.100004267721)/(o+1.)+(-0.0369779084584)+(0.658005351748)*0.5**o  
         ref[2,4,1,0]=(-0.129008538594)/(o+1.)+(0.37877294262)+(-0.865800829839)*0.5**o  
         ref[2,4,1,1]=(-1.71497790578)/(o+1.)+(-0.505836657124)+(-0.722774458642)*0.5**o  
         ref[2,4,2,0]=(-0.655106512067)/(o+1.)+(-0.38135623524)+(-0.556352556597)*0.5**o  
         ref[2,4,2,1]=(-0.176517052006)/(o+1.)+(0.269292181093)+(-0.790402254477)*0.5**o  
         ref[3,0,0,0]=(0.776809243512)/(o+1.)+(0.684129779455)+(-0.393498907366)*0.5**o  
         ref[3,0,0,1]=(1.00014616434)/(o+1.)+(0.0959903466349)+(0.0490385695005)*0.5**o  
         ref[3,0,1,0]=(-1.32907391866)/(o+1.)+(-0.729762403206)+(0.372518182464)*0.5**o  
         ref[3,0,1,1]=(-0.612835437841)/(o+1.)+(0.129866844435)+(-0.907039911971)*0.5**o  
         ref[3,0,2,0]=(-0.0433955703218)/(o+1.)+(-1.03964092001)+(0.671061807362)*0.5**o  
         ref[3,0,2,1]=(0.0424872556266)/(o+1.)+(-0.125748528644)+(0.797200318087)*0.5**o  
         ref[3,1,0,0]=(-1.08955603159)/(o+1.)+(1.04854146068)+(0.396318123324)*0.5**o  
         ref[3,1,0,1]=(-0.888921709452)/(o+1.)+(0.461396104086)+(-0.281320711026)*0.5**o  
         ref[3,1,1,0]=(-0.478597008027)/(o+1.)+(0.0501091937538)+(-0.213862255449)*0.5**o  
         ref[3,1,1,1]=(0.706839547685)/(o+1.)+(-0.273079660193)+(0.554657719161)*0.5**o  
         ref[3,1,2,0]=(-0.833135058593)/(o+1.)+(-0.69933939396)+(-0.485569875217)*0.5**o  
         ref[3,1,2,1]=(0.150071596378)/(o+1.)+(1.0204709004)+(-0.727409224907)*0.5**o  
         ref[3,2,0,0]=(1.51081425237)/(o+1.)+(-0.579813873399)+(-0.294609451063)*0.5**o  
         ref[3,2,0,1]=(-0.100501043862)/(o+1.)+(0.710185558425)+(-0.193869261184)*0.5**o  
         ref[3,2,1,0]=(-1.17135742844)/(o+1.)+(-0.695696782926)+(-0.567464737056)*0.5**o  
         ref[3,2,1,1]=(0.820919043291)/(o+1.)+(0.382104535896)+(-0.331240639597)*0.5**o  
         ref[3,2,2,0]=(1.72473979403)/(o+1.)+(-0.461965415189)+(0.569105573686)*0.5**o  
         ref[3,2,2,1]=(0.398685325899)/(o+1.)+(0.232324395424)+(0.803926266415)*0.5**o  
         ref[3,3,0,0]=(0.0354270617556)/(o+1.)+(-0.246171100716)+(-0.239744952662)*0.5**o  
         ref[3,3,0,1]=(-0.341381625018)/(o+1.)+(0.464768376931)+(0.998856178514)*0.5**o  
         ref[3,3,1,0]=(0.543560255149)/(o+1.)+(0.451925251799)+(-0.654845715855)*0.5**o  
         ref[3,3,1,1]=(0.604981904922)/(o+1.)+(0.43916276157)+(-0.283730169109)*0.5**o  
         ref[3,3,2,0]=(0.0345354639628)/(o+1.)+(0.133945344169)+(-0.377933655183)*0.5**o  
         ref[3,3,2,1]=(-1.41787857163)/(o+1.)+(0.144004821826)+(-0.74484862371)*0.5**o  
         ref[3,4,0,0]=(0.118473464627)/(o+1.)+(0.585872233688)+(-0.625504798604)*0.5**o  
         ref[3,4,0,1]=(0.95028657603)/(o+1.)+(0.437165661424)+(-0.307431859474)*0.5**o  
         ref[3,4,1,0]=(-0.138217723081)/(o+1.)+(-0.0120895403861)+(-0.85379517016)*0.5**o  
         ref[3,4,1,1]=(1.89174922824)/(o+1.)+(0.699900667221)+(-0.427217312348)*0.5**o  
         ref[3,4,2,0]=(-0.0391148689569)/(o+1.)+(0.751995915209)+(-0.264611936187)*0.5**o  
         ref[3,4,2,1]=(-0.540068657076)/(o+1.)+(0.375311078022)+(-0.0213427465429)*0.5**o  
       res=integrate(arg)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(4, 5, 3, 2),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
   
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
3986     def test_integrate_onReducedFunctionOnContactZero_fromData_ContinuousFunction_rank0(self):     def test_integrate_onReducedFunctionOnContactZero_fromData_ContinuousFunction_rank0(self):
3987        """        """
3988        tests integral of rank 0 Data on the ReducedFunctionOnContactZero        tests integral of rank 0 Data on the ReducedFunctionOnContactZero
# Line 11749  class Test_Util_SpatialFunctions_noGradO Line 7838  class Test_Util_SpatialFunctions_noGradO
7838        self.assertEqual(res.shape,(4, 5, 3, 2),"wrong shape of result.")        self.assertEqual(res.shape,(4, 5, 3, 2),"wrong shape of result.")
7839        self.assertTrue(Lsup(res-ref)<=self.RES_TOL*Lsup(ref),"wrong result")        self.assertTrue(Lsup(res-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
7840     #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++     #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    def test_integrate_onReducedFunctionOnContactZero_fromSymbol_ContinuousFunction_rank0(self):  
       """  
       tests integral of rank 0 Symbol on the ReducedFunctionOnContactZero  
   
       assumptions: ContinuousFunction(self.domain) exists  
                    self.domain supports integral on ReducedFunctionOnContactZero  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=ReducedFunctionOnContactZero(self.domain)  
       w=ContinuousFunction(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=())  
       s=Data(0,(),w)  
       if dim==2:  
         s=(-0.239048993811)*x[0]**o+(0.519530081152)*x[0]+(0.0639850840479)*x[1]**o+(0.629919962063)*x[1]  
         ref=(0.0639850840479)/(o+1.)+(0.574725021608)+(-0.239048993811)*0.5**o  
       else:  
         s=(0.129836073672)*x[0]**o+(0.77979793904)*x[0]+(0.153605570913)*x[1]**o+(0.182457449004)*x[1]+(-0.363742743784)*x[2]**o+(-0.826028359978)*x[2]  
         ref=(-0.210137172871)/(o+1.)+(0.068113514033)+(0.129836073672)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onReducedFunctionOnContactZero_fromSymbol_ContinuousFunction_rank1(self):  
       """  
       tests integral of rank 1 Symbol on the ReducedFunctionOnContactZero  
   
       assumptions: ContinuousFunction(self.domain) exists  
                    self.domain supports integral on ReducedFunctionOnContactZero  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=ReducedFunctionOnContactZero(self.domain)  
       w=ContinuousFunction(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(2,))  
       s=Data(0,(2,),w)  
       ref=numpy.zeros((2,),numpy.float_)  
       if dim==2:  
         s[0]=(-0.0535727754535)*x[0]**o+(-0.378911132266)*x[0]+(0.893236107106)*x[1]**o+(-0.133308761371)*x[1]  
         s[1]=(0.816344010178)*x[0]**o+(-0.629551729403)*x[0]+(0.962635839824)*x[1]**o+(0.531091887731)*x[1]  
         ref[0]=(0.893236107106)/(o+1.)+(-0.256109946819)+(-0.0535727754535)*0.5**o  
         ref[1]=(0.962635839824)/(o+1.)+(-0.049229920836)+(0.816344010178)*0.5**o  
       else:  
         s[0]=(0.99651578956)*x[0]**o+(-0.450391117128)*x[0]+(-0.0521202081325)*x[1]**o+(0.409486612049)*x[1]+(0.951839775929)*x[2]**o+(0.0755155386131)*x[2]  
         s[1]=(-0.226900637285)*x[0]**o+(-0.784888192711)*x[0]+(-0.475467162806)*x[1]**o+(0.536559857164)*x[1]+(0.346844399644)*x[2]**o+(-0.237869505536)*x[2]  
         ref[0]=(0.899719567796)/(o+1.)+(0.0173055167672)+(0.99651578956)*0.5**o  
         ref[1]=(-0.128622763161)/(o+1.)+(-0.243098920542)+(-0.226900637285)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(2,),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onReducedFunctionOnContactZero_fromSymbol_ContinuousFunction_rank2(self):  
       """  
       tests integral of rank 2 Symbol on the ReducedFunctionOnContactZero  
   
       assumptions: ContinuousFunction(self.domain) exists  
                    self.domain supports integral on ReducedFunctionOnContactZero  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=ReducedFunctionOnContactZero(self.domain)  
       w=ContinuousFunction(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(4, 5))  
       s=Data(0,(4, 5),w)  
       ref=numpy.zeros((4, 5),numpy.float_)  
       if dim==2:  
         s[0,0]=(-0.328426418082)*x[0]**o+(-0.966431499834)*x[0]+(0.982530526624)*x[1]**o+(0.475372684178)*x[1]  
         s[0,1]=(0.61075753424)*x[0]**o+(-0.974986578257)*x[0]+(-0.0986707750313)*x[1]**o+(-0.490145139235)*x[1]  
         s[0,2]=(-0.629292138329)*x[0]**o+(-0.784677771399)*x[0]+(0.662986672949)*x[1]**o+(-0.0634716139549)*x[1]  
         s[0,3]=(0.74966960207)*x[0]**o+(-0.672137973696)*x[0]+(-0.104345950525)*x[1]**o+(-0.196646103769)*x[1]  
         s[0,4]=(0.714327500249)*x[0]**o+(-0.454839918323)*x[0]+(-0.904749225664)*x[1]**o+(0.829036667249)*x[1]  
         s[1,0]=(-0.290327744474)*x[0]**o+(-0.0432653521002)*x[0]+(-0.814637993515)*x[1]**o+(0.329873273442)*x[1]  
         s[1,1]=(-0.256944455249)*x[0]**o+(-0.0374267372088)*x[0]+(0.136172411148)*x[1]**o+(-0.82944305625)*x[1]  
         s[1,2]=(-0.260661151595)*x[0]**o+(-0.597199898207)*x[0]+(0.909049968542)*x[1]**o+(-0.262195958725)*x[1]  
         s[1,3]=(-0.228035815224)*x[0]**o+(0.772135534405)*x[0]+(0.00192609783775)*x[1]**o+(-0.855606696367)*x[1]  
         s[1,4]=(0.824519454106)*x[0]**o+(0.723545812848)*x[0]+(0.588395672453)*x[1]**o+(0.701489329605)*x[1]  
         s[2,0]=(0.104767951487)*x[0]**o+(0.0937742673825)*x[0]+(-0.226378722473)*x[1]**o+(-0.239638024937)*x[1]  
         s[2,1]=(0.922749632743)*x[0]**o+(0.380185381588)*x[0]+(-0.873869266649)*x[1]**o+(-0.995526870666)*x[1]  
         s[2,2]=(0.459628441315)*x[0]**o+(-0.870827776883)*x[0]+(0.963527703404)*x[1]**o+(-0.380921690386)*x[1]  
         s[2,3]=(0.0538635635094)*x[0]**o+(0.636269518871)*x[0]+(0.496494434174)*x[1]**o+(0.389503037841)*x[1]  
         s[2,4]=(0.486584334747)*x[0]**o+(0.595962829728)*x[0]+(-0.0473827215975)*x[1]**o+(-0.0598623245737)*x[1]  
         s[3,0]=(0.104809543499)*x[0]**o+(-0.103399959545)*x[0]+(0.46274253883)*x[1]**o+(0.00540100368281)*x[1]  
         s[3,1]=(0.182366414916)*x[0]**o+(-0.454996760913)*x[0]+(0.195895079357)*x[1]**o+(-0.445919339196)*x[1]  
         s[3,2]=(-0.270350002842)*x[0]**o+(0.0801494193318)*x[0]+(-0.192008845814)*x[1]**o+(0.20055215786)*x[1]  
         s[3,3]=(0.946634950526)*x[0]**o+(0.794617946132)*x[0]+(0.266843824183)*x[1]**o+(0.431654105192)*x[1]  
         s[3,4]=(-0.282961386823)*x[0]**o+(-0.659458559302)*x[0]+(-0.701137505881)*x[1]**o+(0.419244903032)*x[1]  
         ref[0,0]=(0.982530526624)/(o+1.)+(-0.245529407828)+(-0.328426418082)*0.5**o  
         ref[0,1]=(-0.0986707750313)/(o+1.)+(-0.732565858746)+(0.61075753424)*0.5**o  
         ref[0,2]=(0.662986672949)/(o+1.)+(-0.424074692677)+(-0.629292138329)*0.5**o  
         ref[0,3]=(-0.104345950525)/(o+1.)+(-0.434392038732)+(0.74966960207)*0.5**o  
         ref[0,4]=(-0.904749225664)/(o+1.)+(0.187098374463)+(0.714327500249)*0.5**o  
         ref[1,0]=(-0.814637993515)/(o+1.)+(0.143303960671)+(-0.290327744474)*0.5**o  
         ref[1,1]=(0.136172411148)/(o+1.)+(-0.433434896729)+(-0.256944455249)*0.5**o  
         ref[1,2]=(0.909049968542)/(o+1.)+(-0.429697928466)+(-0.260661151595)*0.5**o  
         ref[1,3]=(0.00192609783775)/(o+1.)+(-0.0417355809806)+(-0.228035815224)*0.5**o  
         ref[1,4]=(0.588395672453)/(o+1.)+(0.712517571227)+(0.824519454106)*0.5**o  
         ref[2,0]=(-0.226378722473)/(o+1.)+(-0.0729318787773)+(0.104767951487)*0.5**o  
         ref[2,1]=(-0.873869266649)/(o+1.)+(-0.307670744539)+(0.922749632743)*0.5**o  
         ref[2,2]=(0.963527703404)/(o+1.)+(-0.625874733635)+(0.459628441315)*0.5**o  
         ref[2,3]=(0.496494434174)/(o+1.)+(0.512886278356)+(0.0538635635094)*0.5**o  
         ref[2,4]=(-0.0473827215975)/(o+1.)+(0.268050252577)+(0.486584334747)*0.5**o  
         ref[3,0]=(0.46274253883)/(o+1.)+(-0.0489994779311)+(0.104809543499)*0.5**o  
         ref[3,1]=(0.195895079357)/(o+1.)+(-0.450458050054)+(0.182366414916)*0.5**o  
         ref[3,2]=(-0.192008845814)/(o+1.)+(0.140350788596)+(-0.270350002842)*0.5**o  
         ref[3,3]=(0.266843824183)/(o+1.)+(0.613136025662)+(0.946634950526)*0.5**o  
         ref[3,4]=(-0.701137505881)/(o+1.)+(-0.120106828135)+(-0.282961386823)*0.5**o  
       else:  
         s[0,0]=(-0.544243335601)*x[0]**o+(-0.307372154904)*x[0]+(0.244525574061)*x[1]**o+(-0.528694523489)*x[1]+(0.667705852103)*x[2]**o+(0.866378210585)*x[2]  
         s[0,1]=(-0.397733775219)*x[0]**o+(0.195969196217)*x[0]+(-0.941371407192)*x[1]**o+(0.524704832845)*x[1]+(-0.973723558169)*x[2]**o+(0.0452111700317)*x[2]  
         s[0,2]=(-0.0445896420815)*x[0]**o+(-0.730345503814)*x[0]+(-0.797148073969)*x[1]**o+(0.687229609119)*x[1]+(-0.905358686985)*x[2]**o+(-0.764008239213)*x[2]  
         s[0,3]=(0.803277368887)*x[0]**o+(0.716534949109)*x[0]+(-0.138102366205)*x[1]**o+(-0.0536511450001)*x[1]+(-0.608245637044)*x[2]**o+(-0.922294317712)*x[2]  
         s[0,4]=(-0.802690014092)*x[0]**o+(0.397998151759)*x[0]+(0.209143804619)*x[1]**o+(0.171210888095)*x[1]+(0.945371372346)*x[2]**o+(0.143657498886)*x[2]  
         s[1,0]=(-0.737094926707)*x[0]**o+(-0.682774905121)*x[0]+(-0.605040082549)*x[1]**o+(0.913015529243)*x[1]+(-0.923053380199)*x[2]**o+(0.488575946117)*x[2]  
         s[1,1]=(-0.19024610752)*x[0]**o+(0.112566519608)*x[0]+(0.631915593649)*x[1]**o+(0.613460770368)*x[1]+(-0.145279640801)*x[2]**o+(0.391904990063)*x[2]  
         s[1,2]=(0.503053165032)*x[0]**o+(0.150421546144)*x[0]+(-0.975785035648)*x[1]**o+(0.358360240583)*x[1]+(-0.116051949436)*x[2]**o+(0.22565570175)*x[2]  
         s[1,3]=(-0.183734715218)*x[0]**o+(0.397188558255)*x[0]+(0.621875746076)*x[1]**o+(-0.683761765859)*x[1]+(-0.964066487584)*x[2]**o+(0.572293215139)*x[2]  
         s[1,4]=(0.308876282691)*x[0]**o+(0.163499825051)*x[0]+(-0.859132579068)*x[1]**o+(-0.133046304211)*x[1]+(-0.995751005727)*x[2]**o+(0.256192590636)*x[2]  
         s[2,0]=(-0.823620775877)*x[0]**o+(-0.173531059768)*x[0]+(-0.428278048825)*x[1]**o+(-0.935056836732)*x[1]+(-0.16471171795)*x[2]**o+(-0.0746252552822)*x[2]  
         s[2,1]=(0.692340272178)*x[0]**o+(-0.178862964433)*x[0]+(0.241112494059)*x[1]**o+(-0.0400607170557)*x[1]+(-0.131477945619)*x[2]**o+(-0.742303256353)*x[2]  
         s[2,2]=(-0.213693977195)*x[0]**o+(0.829007036928)*x[0]+(0.269322769984)*x[1]**o+(0.988636255935)*x[1]+(0.145550246384)*x[2]**o+(0.53131223825)*x[2]  
         s[2,3]=(0.337485288934)*x[0]**o+(-0.794235442944)*x[0]+(-0.862195558251)*x[1]**o+(-0.302947127951)*x[1]+(0.660574358405)*x[2]**o+(0.383147294118)*x[2]  
         s[2,4]=(-0.0555202855446)*x[0]**o+(-0.298089725164)*x[0]+(-0.971009290556)*x[1]**o+(-0.867265062556)*x[1]+(0.669532302056)*x[2]**o+(-0.432375844991)*x[2]  
         s[3,0]=(0.596097084223)*x[0]**o+(-0.388031691584)*x[0]+(-0.596718750677)*x[1]**o+(0.196346996307)*x[1]+(0.0230334505824)*x[2]**o+(-0.293224683649)*x[2]  
         s[3,1]=(-0.855920365774)*x[0]**o+(-0.0363724823656)*x[0]+(-0.918160096067)*x[1]**o+(-0.275555163751)*x[1]+(-0.90266927)*x[2]**o+(-0.275537041793)*x[2]  
         s[3,2]=(0.788923009274)*x[0]**o+(-0.182338499866)*x[0]+(0.649442441856)*x[1]**o+(-0.179319161548)*x[1]+(-0.330240080654)*x[2]**o+(0.45030421169)*x[2]  
         s[3,3]=(-0.0731084424823)*x[0]**o+(0.903713856354)*x[0]+(0.749750641159)*x[1]**o+(-0.274337831625)*x[1]+(0.667970754626)*x[2]**o+(-0.369139994984)*x[2]  
         s[3,4]=(0.0580656964124)*x[0]**o+(0.30223985624)*x[0]+(-0.0278202819133)*x[1]**o+(-0.214845008141)*x[1]+(0.683342885793)*x[2]**o+(0.920939676772)*x[2]  
         ref[0,0]=(0.912231426164)/(o+1.)+(0.0151557660955)+(-0.544243335601)*0.5**o  
         ref[0,1]=(-1.91509496536)/(o+1.)+(0.382942599547)+(-0.397733775219)*0.5**o  
         ref[0,2]=(-1.70250676095)/(o+1.)+(-0.403562066955)+(-0.0445896420815)*0.5**o  
         ref[0,3]=(-0.746348003249)/(o+1.)+(-0.129705256801)+(0.803277368887)*0.5**o  
         ref[0,4]=(1.15451517696)/(o+1.)+(0.35643326937)+(-0.802690014092)*0.5**o  
         ref[1,0]=(-1.52809346275)/(o+1.)+(0.359408285119)+(-0.737094926707)*0.5**o  
         ref[1,1]=(0.486635952848)/(o+1.)+(0.558966140019)+(-0.19024610752)*0.5**o  
         ref[1,2]=(-1.09183698508)/(o+1.)+(0.367218744238)+(0.503053165032)*0.5**o  
         ref[1,3]=(-0.342190741508)/(o+1.)+(0.142860003768)+(-0.183734715218)*0.5**o  
         ref[1,4]=(-1.8548835848)/(o+1.)+(0.143323055738)+(0.308876282691)*0.5**o  
         ref[2,0]=(-0.592989766775)/(o+1.)+(-0.591606575891)+(-0.823620775877)*0.5**o  
         ref[2,1]=(0.109634548439)/(o+1.)+(-0.480613468921)+(0.692340272178)*0.5**o  
         ref[2,2]=(0.414873016368)/(o+1.)+(1.17447776556)+(-0.213693977195)*0.5**o  
         ref[2,3]=(-0.201621199846)/(o+1.)+(-0.357017638388)+(0.337485288934)*0.5**o  
         ref[2,4]=(-0.3014769885)/(o+1.)+(-0.798865316355)+(-0.0555202855446)*0.5**o  
         ref[3,0]=(-0.573685300094)/(o+1.)+(-0.242454689463)+(0.596097084223)*0.5**o  
         ref[3,1]=(-1.82082936607)/(o+1.)+(-0.293732343955)+(-0.855920365774)*0.5**o  
         ref[3,2]=(0.319202361202)/(o+1.)+(0.044323275138)+(0.788923009274)*0.5**o  
         ref[3,3]=(1.41772139578)/(o+1.)+(0.130118014873)+(-0.0731084424823)*0.5**o  
         ref[3,4]=(0.65552260388)/(o+1.)+(0.504167262435)+(0.0580656964124)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(4, 5),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onReducedFunctionOnContactZero_fromSymbol_ContinuousFunction_rank3(self):  
       """  
       tests integral of rank 3 Symbol on the ReducedFunctionOnContactZero  
   
       assumptions: ContinuousFunction(self.domain) exists  
                    self.domain supports integral on ReducedFunctionOnContactZero  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=ReducedFunctionOnContactZero(self.domain)  
       w=ContinuousFunction(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(6, 2, 2))  
       s=Data(0,(6, 2, 2),w)  
       ref=numpy.zeros((6, 2, 2),numpy.float_)  
       if dim==2:  
         s[0,0,0]=(-0.2538014101)*x[0]**o+(0.422893022023)*x[0]+(-0.168009677754)*x[1]**o+(0.967205152872)*x[1]  
         s[0,0,1]=(-0.42169068503)*x[0]**o+(-0.87035047637)*x[0]+(0.861757151221)*x[1]**o+(0.233579078048)*x[1]  
         s[0,1,0]=(0.761004021853)*x[0]**o+(-0.406910518681)*x[0]+(-0.653627037953)*x[1]**o+(0.78163950747)*x[1]  
         s[0,1,1]=(0.571752563364)*x[0]**o+(0.352647230887)*x[0]+(0.64023828193)*x[1]**o+(-0.906400256269)*x[1]  
         s[1,0,0]=(-0.229152209793)*x[0]**o+(-0.164526860803)*x[0]+(-0.815301528075)*x[1]**o+(-0.375201173874)*x[1]  
         s[1,0,1]=(0.497997942477)*x[0]**o+(-0.590120034514)*x[0]+(0.387642938322)*x[1]**o+(-0.441598030675)*x[1]  
         s[1,1,0]=(-0.396407524403)*x[0]**o+(0.225115161973)*x[0]+(0.709660265053)*x[1]**o+(-0.723548390356)*x[1]  
         s[1,1,1]=(-0.810340425309)*x[0]**o+(0.571580569899)*x[0]+(0.401013753168)*x[1]**o+(0.881936918624)*x[1]  
         s[2,0,0]=(0.096907527902)*x[0]**o+(-0.329521007808)*x[0]+(0.872734305266)*x[1]**o+(-0.677632080143)*x[1]  
         s[2,0,1]=(-0.657791763259)*x[0]**o+(-0.0622202818891)*x[0]+(0.838133724288)*x[1]**o+(0.679646081219)*x[1]  
         s[2,1,0]=(-0.982546119133)*x[0]**o+(0.0982803558898)*x[0]+(0.188605842026)*x[1]**o+(-0.436341762577)*x[1]  
         s[2,1,1]=(0.623965743731)*x[0]**o+(-0.470311605613)*x[0]+(-0.700736177085)*x[1]**o+(0.688725936352)*x[1]  
         s[3,0,0]=(0.154576108414)*x[0]**o+(-0.114669097915)*x[0]+(-0.922751077939)*x[1]**o+(-0.0336084204309)*x[1]  
         s[3,0,1]=(-0.360543465066)*x[0]**o+(0.369432311166)*x[0]+(0.56460991873)*x[1]**o+(-0.56949007527)*x[1]  
         s[3,1,0]=(0.914890366289)*x[0]**o+(0.216556566085)*x[0]+(-0.720400002066)*x[1]**o+(-0.44569085463)*x[1]  
         s[3,1,1]=(0.0855171738813)*x[0]**o+(-0.47318307368)*x[0]+(0.267072371169)*x[1]**o+(-0.861793396744)*x[1]  
         s[4,0,0]=(-0.862522626201)*x[0]**o+(0.101759724363)*x[0]+(-0.843728984752)*x[1]**o+(-0.510998623672)*x[1]  
         s[4,0,1]=(0.827712219176)*x[0]**o+(-0.83052404804)*x[0]+(-0.349511963621)*x[1]**o+(0.379838260239)*x[1]  
         s[4,1,0]=(0.923120645339)*x[0]**o+(-0.310138654901)*x[0]+(-0.0364015485007)*x[1]**o+(-0.869695736822)*x[1]  
         s[4,1,1]=(0.462952706773)*x[0]**o+(0.391666695595)*x[0]+(0.918559046828)*x[1]**o+(0.0448293018515)*x[1]  
         s[5,0,0]=(0.708616542984)*x[0]**o+(-0.826033306645)*x[0]+(0.50975079739)*x[1]**o+(-0.213839768114)*x[1]  
         s[5,0,1]=(0.874170725144)*x[0]**o+(0.128033874112)*x[0]+(-0.236784782085)*x[1]**o+(0.885355734442)*x[1]  
         s[5,1,0]=(0.0315543075879)*x[0]**o+(-0.482419902735)*x[0]+(0.112741960603)*x[1]**o+(0.336157525634)*x[1]  
         s[5,1,1]=(0.000481165869329)*x[0]**o+(-0.356220818813)*x[0]+(-0.466568234378)*x[1]**o+(0.851934710295)*x[1]  
         ref[0,0,0]=(-0.168009677754)/(o+1.)+(0.695049087447)+(-0.2538014101)*0.5**o  
         ref[0,0,1]=(0.861757151221)/(o+1.)+(-0.318385699161)+(-0.42169068503)*0.5**o  
         ref[0,1,0]=(-0.653627037953)/(o+1.)+(0.187364494395)+(0.761004021853)*0.5**o  
         ref[0,1,1]=(0.64023828193)/(o+1.)+(-0.276876512691)+(0.571752563364)*0.5**o  
         ref[1,0,0]=(-0.815301528075)/(o+1.)+(-0.269864017338)+(-0.229152209793)*0.5**o  
         ref[1,0,1]=(0.387642938322)/(o+1.)+(-0.515859032595)+(0.497997942477)*0.5**o  
         ref[1,1,0]=(0.709660265053)/(o+1.)+(-0.249216614192)+(-0.396407524403)*0.5**o  
         ref[1,1,1]=(0.401013753168)/(o+1.)+(0.726758744261)+(-0.810340425309)*0.5**o  
         ref[2,0,0]=(0.872734305266)/(o+1.)+(-0.503576543976)+(0.096907527902)*0.5**o  
         ref[2,0,1]=(0.838133724288)/(o+1.)+(0.308712899665)+(-0.657791763259)*0.5**o  
         ref[2,1,0]=(0.188605842026)/(o+1.)+(-0.169030703344)+(-0.982546119133)*0.5**o  
         ref[2,1,1]=(-0.700736177085)/(o+1.)+(0.10920716537)+(0.623965743731)*0.5**o  
         ref[3,0,0]=(-0.922751077939)/(o+1.)+(-0.0741387591729)+(0.154576108414)*0.5**o  
         ref[3,0,1]=(0.56460991873)/(o+1.)+(-0.100028882052)+(-0.360543465066)*0.5**o  
         ref[3,1,0]=(-0.720400002066)/(o+1.)+(-0.114567144272)+(0.914890366289)*0.5**o  
         ref[3,1,1]=(0.267072371169)/(o+1.)+(-0.667488235212)+(0.0855171738813)*0.5**o  
         ref[4,0,0]=(-0.843728984752)/(o+1.)+(-0.204619449655)+(-0.862522626201)*0.5**o  
         ref[4,0,1]=(-0.349511963621)/(o+1.)+(-0.2253428939)+(0.827712219176)*0.5**o  
         ref[4,1,0]=(-0.0364015485007)/(o+1.)+(-0.589917195861)+(0.923120645339)*0.5**o  
         ref[4,1,1]=(0.918559046828)/(o+1.)+(0.218247998723)+(0.462952706773)*0.5**o  
         ref[5,0,0]=(0.50975079739)/(o+1.)+(-0.51993653738)+(0.708616542984)*0.5**o  
         ref[5,0,1]=(-0.236784782085)/(o+1.)+(0.506694804277)+(0.874170725144)*0.5**o  
         ref[5,1,0]=(0.112741960603)/(o+1.)+(-0.0731311885505)+(0.0315543075879)*0.5**o  
         ref[5,1,1]=(-0.466568234378)/(o+1.)+(0.247856945741)+(0.000481165869329)*0.5**o  
       else:  
         s[0,0,0]=(0.712776413788)*x[0]**o+(-0.232827372726)*x[0]+(0.504361060322)*x[1]**o+(-0.646213742366)*x[1]+(-0.292404315781)*x[2]**o+(0.0934342710289)*x[2]  
         s[0,0,1]=(-0.6231391885)*x[0]**o+(-0.201681226437)*x[0]+(0.295572186857)*x[1]**o+(0.490652427459)*x[1]+(-0.816764035717)*x[2]**o+(-0.920253719103)*x[2]  
         s[0,1,0]=(0.464396400115)*x[0]**o+(0.256116225806)*x[0]+(0.00347318217819)*x[1]**o+(0.290749204508)*x[1]+(0.755673392263)*x[2]**o+(0.0296476243926)*x[2]  
         s[0,1,1]=(-0.901282392808)*x[0]**o+(0.390894518003)*x[0]+(-0.638342109049)*x[1]**o+(0.325572670945)*x[1]+(0.011997038614)*x[2]**o+(-0.953246898018)*x[2]  
         s[1,0,0]=(-0.234152998295)*x[0]**o+(-0.686879447381)*x[0]+(0.684513221814)*x[1]**o+(0.314162707683)*x[1]+(-0.140878044122)*x[2]**o+(0.588563624841)*x[2]  
         s[1,0,1]=(0.00302398956565)*x[0]**o+(-0.255603279589)*x[0]+(-0.356254001427)*x[1]**o+(-0.00335409560896)*x[1]+(0.761527454384)*x[2]**o+(-0.803864763242)*x[2]  
         s[1,1,0]=(0.350958444218)*x[0]**o+(0.626399553048)*x[0]+(-0.804525479633)*x[1]**o+(0.999024446128)*x[1]+(-0.747418498661)*x[2]**o+(0.16538209042)*x[2]  
         s[1,1,1]=(0.830959844328)*x[0]**o+(-0.838517518014)*x[0]+(-0.815601516751)*x[1]**o+(-0.527962402292)*x[1]+(0.849695437437)*x[2]**o+(0.0461655137013)*x[2]  
         s[2,0,0]=(-0.654485309003)*x[0]**o+(-0.922437021301)*x[0]+(0.0726219637303)*x[1]**o+(-0.27358467284)*x[1]+(0.965940347168)*x[2]**o+(0.136286409807)*x[2]  
         s[2,0,1]=(-0.765669487668)*x[0]**o+(-0.381631759049)*x[0]+(-0.338604617382)*x[1]**o+(-0.026416557321)*x[1]+(-0.505094659996)*x[2]**o+(-0.109271565345)*x[2]  
         s[2,1,0]=(-0.823307360412)*x[0]**o+(0.742603440907)*x[0]+(0.264688242655)*x[1]**o+(0.152850147645)*x[1]+(0.576103041841)*x[2]**o+(-0.5223182504)*x[2]  
         s[2,1,1]=(-0.853043070027)*x[0]**o+(-0.841177435972)*x[0]+(-0.899106240107)*x[1]**o+(0.605850900198)*x[1]+(0.66690888915)*x[2]**o+(-0.294170728255)*x[2]  
         s[3,0,0]=(0.570005513209)*x[0]**o+(0.823970182367)*x[0]+(-0.097784833249)*x[1]**o+(0.873052382528)*x[1]+(-0.0636165773808)*x[2]**o+(0.282310913291)*x[2]  
         s[3,0,1]=(0.456449154672)*x[0]**o+(0.951161773651)*x[0]+(-0.373225942356)*x[1]**o+(-0.199594431547)*x[1]+(-0.484728313328)*x[2]**o+(-0.931817560358)*x[2]  
         s[3,1,0]=(-0.41042836838)*x[0]**o+(0.771670661129)*x[0]+(-0.0646371268204)*x[1]**o+(0.881286289043)*x[1]+(-0.197285717492)*x[2]**o+(0.857484079398)*x[2]  
         s[3,1,1]=(0.297402801452)*x[0]**o+(-0.147528679657)*x[0]+(0.0071150978913)*x[1]**o+(0.788738967825)*x[1]+(-0.191726852031)*x[2]**o+(-0.481649460835)*x[2]  
         s[4,0,0]=(-0.808360899963)*x[0]**o+(-0.181264991463)*x[0]+(-0.667551398858)*x[1]**o+(0.289372159531)*x[1]+(0.732773385522)*x[2]**o+(-0.123945731785)*x[2]  
         s[4,0,1]=(0.854370035772)*x[0]**o+(0.169945736996)*x[0]+(0.305712234323)*x[1]**o+(-0.60291919973)*x[1]+(0.0403778674069)*x[2]**o+(-0.0309870891437)*x[2]  
         s[4,1,0]=(0.543462693144)*x[0]**o+(0.102574070937)*x[0]+(0.963469439068)*x[1]**o+(-0.985245165577)*x[1]+(-0.74408200708)*x[2]**o+(-0.146993364858)*x[2]  
         s[4,1,1]=(-0.50927952968)*x[0]**o+(0.471050528827)*x[0]+(0.554105772637)*x[1]**o+(0.265977196333)*x[1]+(-0.447676667005)*x[2]**o+(-0.725761367739)*x[2]  
         s[5,0,0]=(0.738549622917)*x[0]**o+(-0.300701131285)*x[0]+(0.770397993383)*x[1]**o+(0.604771638849)*x[1]+(-0.839284085987)*x[2]**o+(-0.636936520767)*x[2]  
         s[5,0,1]=(0.546026750751)*x[0]**o+(-0.413469373764)*x[0]+(-0.246023997114)*x[1]**o+(0.207570581839)*x[1]+(0.447030203856)*x[2]**o+(0.0894542975251)*x[2]  
         s[5,1,0]=(0.262793971997)*x[0]**o+(-0.814182314897)*x[0]+(-0.340418569268)*x[1]**o+(-0.483737889608)*x[1]+(0.287508080597)*x[2]**o+(-0.602853752221)*x[2]  
         s[5,1,1]=(-0.417452810992)*x[0]**o+(-0.906502058242)*x[0]+(0.280357642399)*x[1]**o+(-0.452257960569)*x[1]+(0.239691800726)*x[2]**o+(0.0506798793624)*x[2]  
         ref[0,0,0]=(0.211956744542)/(o+1.)+(-0.392803422032)+(0.712776413788)*0.5**o  
         ref[0,0,1]=(-0.521191848861)/(o+1.)+(-0.31564125904)+(-0.6231391885)*0.5**o  
         ref[0,1,0]=(0.759146574441)/(o+1.)+(0.288256527353)+(0.464396400115)*0.5**o  
         ref[0,1,1]=(-0.626345070435)/(o+1.)+(-0.118389854535)+(-0.901282392808)*0.5**o  
         ref[1,0,0]=(0.543635177691)/(o+1.)+(0.107923442572)+(-0.234152998295)*0.5**o  
         ref[1,0,1]=(0.405273452958)/(o+1.)+(-0.53141106922)+(0.00302398956565)*0.5**o  
         ref[1,1,0]=(-1.55194397829)/(o+1.)+(0.895403044797)+(0.350958444218)*0.5**o  
         ref[1,1,1]=(0.0340939206865)/(o+1.)+(-0.660157203302)+(0.830959844328)*0.5**o  
         ref[2,0,0]=(1.0385623109)/(o+1.)+(-0.529867642167)+(-0.654485309003)*0.5**o  
         ref[2,0,1]=(-0.843699277378)/(o+1.)+(-0.258659940857)+(-0.765669487668)*0.5**o  
         ref[2,1,0]=(0.840791284496)/(o+1.)+(0.186567669076)+(-0.823307360412)*0.5**o  
         ref[2,1,1]=(-0.232197350956)/(o+1.)+(-0.264748632015)+(-0.853043070027)*0.5**o  
         ref[3,0,0]=(-0.16140141063)/(o+1.)+(0.989666739093)+(0.570005513209)*0.5**o  
         ref[3,0,1]=(-0.857954255684)/(o+1.)+(-0.0901251091271)+(0.456449154672)*0.5**o  
         ref[3,1,0]=(-0.261922844312)/(o+1.)+(1.25522051478)+(-0.41042836838)*0.5**o  
         ref[3,1,1]=(-0.18461175414)/(o+1.)+(0.0797804136672)+(0.297402801452)*0.5**o  
         ref[4,0,0]=(0.0652219866638)/(o+1.)+(-0.00791928185857)+(-0.808360899963)*0.5**o  
         ref[4,0,1]=(0.34609010173)/(o+1.)+(-0.231980275939)+(0.854370035772)*0.5**o  
         ref[4,1,0]=(0.219387431988)/(o+1.)+(-0.514832229749)+(0.543462693144)*0.5**o  
         ref[4,1,1]=(0.106429105632)/(o+1.)+(0.00563317871007)+(-0.50927952968)*0.5**o  
         ref[5,0,0]=(-0.0688860926042)/(o+1.)+(-0.166433006601)+(0.738549622917)*0.5**o  
         ref[5,0,1]=(0.201006206742)/(o+1.)+(-0.0582222472)+(0.546026750751)*0.5**o  
         ref[5,1,0]=(-0.0529104886711)/(o+1.)+(-0.950386978363)+(0.262793971997)*0.5**o  
         ref[5,1,1]=(0.520049443126)/(o+1.)+(-0.654040069724)+(-0.417452810992)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(6, 2, 2),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onReducedFunctionOnContactZero_fromSymbol_ContinuousFunction_rank4(self):  
       """  
       tests integral of rank 4 Symbol on the ReducedFunctionOnContactZero  
   
       assumptions: ContinuousFunction(self.domain) exists  
                    self.domain supports integral on ReducedFunctionOnContactZero  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=ReducedFunctionOnContactZero(self.domain)  
       w=ContinuousFunction(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(4, 5, 3, 2))  
       s=Data(0,(4, 5, 3, 2),w)  
       ref=numpy.zeros((4, 5, 3, 2),numpy.float_)  
       if dim==2:  
         s[0,0,0,0]=(-0.829288219058)*x[0]**o+(-0.65217791272)*x[0]+(0.698846288116)*x[1]**o+(-0.0392705140136)*x[1]  
         s[0,0,0,1]=(-0.456023711562)*x[0]**o+(0.9183516109)*x[0]+(0.927490172078)*x[1]**o+(-0.394686077168)*x[1]  
         s[0,0,1,0]=(-0.497067376291)*x[0]**o+(0.237428033612)*x[0]+(-0.785186724625)*x[1]**o+(0.471101666176)*x[1]  
         s[0,0,1,1]=(-0.290568226175)*x[0]**o+(0.893982019035)*x[0]+(0.203073455207)*x[1]**o+(0.78973496755)*x[1]  
         s[0,0,2,0]=(0.00829962077999)*x[0]**o+(0.99718958928)*x[0]+(0.330466533936)*x[1]**o+(-0.619185067306)*x[1]  
         s[0,0,2,1]=(-0.806092658508)*x[0]**o+(-0.307457723596)*x[0]+(0.847169623314)*x[1]**o+(-0.832290917062)*x[1]  
         s[0,1,0,0]=(-0.140461069383)*x[0]**o+(0.760902362673)*x[0]+(0.0231278168453)*x[1]**o+(-0.508849645358)*x[1]  
         s[0,1,0,1]=(0.587581627616)*x[0]**o+(-0.229546331489)*x[0]+(-0.659235919696)*x[1]**o+(0.80409204008)*x[1]  
         s[0,1,1,0]=(-0.641654760801)*x[0]**o+(0.122524921907)*x[0]+(0.122921572782)*x[1]**o+(-0.23094495884)*x[1]  
         s[0,1,1,1]=(-0.380132178505)*x[0]**o+(-0.769451293694)*x[0]+(-0.745741833491)*x[1]**o+(0.11284350488)*x[1]  
         s[0,1,2,0]=(0.126835269214)*x[0]**o+(0.918739367312)*x[0]+(0.927407682128)*x[1]**o+(-0.273231826206)*x[1]  
         s[0,1,2,1]=(0.608413549196)*x[0]**o+(-0.591552902664)*x[0]+(0.873696757566)*x[1]**o+(-0.900225496133)*x[1]  
         s[0,2,0,0]=(0.0488258290791)*x[0]**o+(0.211067968473)*x[0]+(0.11529432626)*x[1]**o+(0.497957233179)*x[1]  
         s[0,2,0,1]=(-0.780993161707)*x[0]**o+(0.746546880275)*x[0]+(-0.0997128168301)*x[1]**o+(-0.663371860066)*x[1]  
         s[0,2,1,0]=(0.305794159864)*x[0]**o+(0.493723656879)*x[0]+(0.334264621015)*x[1]**o+(0.0579972251793)*x[1]  
         s[0,2,1,1]=(0.71588138307)*x[0]**o+(-0.0866536386387)*x[0]+(-0.159835910161)*x[1]**o+(0.562258753174)*x[1]  
         s[0,2,2,0]=(0.864605462382)*x[0]**o+(0.818516795215)*x[0]+(-0.0558026806854)*x[1]**o+(-0.225953364341)*x[1]  
         s[0,2,2,1]=(-0.0798994114092)*x[0]**o+(-0.73636091403)*x[0]+(-0.478543932177)*x[1]**o+(0.875789857891)*x[1]  
         s[0,3,0,0]=(0.998019190199)*x[0]**o+(-0.218007434364)*x[0]+(0.181378057097)*x[1]**o+(0.429126350197)*x[1]  
         s[0,3,0,1]=(-0.724306549649)*x[0]**o+(-0.303805025896)*x[0]+(0.58603690984)*x[1]**o+(0.976611908964)*x[1]  
         s[0,3,1,0]=(0.776728843377)*x[0]**o+(-0.874157618694)*x[0]+(-0.590753603973)*x[1]**o+(0.185288488913)*x[1]  
         s[0,3,1,1]=(0.285035031516)*x[0]**o+(-0.0667711315126)*x[0]+(0.220692714675)*x[1]**o+(0.841408314724)*x[1]  
         s[0,3,2,0]=(-0.00286941650137)*x[0]**o+(0.59339349489)*x[0]+(-0.158356936936)*x[1]**o+(-0.451137261062)*x[1]  
         s[0,3,2,1]=(0.37992478387)*x[0]**o+(0.835018328571)*x[0]+(-0.446900268053)*x[1]**o+(-0.700751807162)*x[1]  
         s[0,4,0,0]=(0.714232167791)*x[0]**o+(-0.688473756667)*x[0]+(0.0552121131111)*x[1]**o+(0.632003397091)*x[1]  
         s[0,4,0,1]=(0.49556700372)*x[0]**o+(0.0630560952096)*x[0]+(0.321456277553)*x[1]**o+(0.685060833092)*x[1]  
         s[0,4,1,0]=(0.841677614054)*x[0]**o+(0.886957973836)*x[0]+(0.0202839586672)*x[1]**o+(-0.923265656841)*x[1]  
         s[0,4,1,1]=(-0.504028346474)*x[0]**o+(0.071280762432)*x[0]+(0.629772140166)*x[1]**o+(-0.195290635886)*x[1]  
         s[0,4,2,0]=(0.434265669856)*x[0]**o+(0.376229784992)*x[0]+(0.919945289519)*x[1]**o+(-0.496219699959)*x[1]  
         s[0,4,2,1]=(-0.86013960593)*x[0]**o+(0.140206694208)*x[0]+(-0.834647694686)*x[1]**o+(0.381383127993)*x[1]  
         s[1,0,0,0]=(-0.437686950383)*x[0]**o+(0.385307277242)*x[0]+(-0.430841927673)*x[1]**o+(-0.556445729508)*x[1]  
         s[1,0,0,1]=(0.323843044435)*x[0]**o+(-0.21417604806)*x[0]+(-0.172390658038)*x[1]**o+(-0.847272401994)*x[1]  
         s[1,0,1,0]=(-0.845882465152)*x[0]**o+(-0.598486605858)*x[0]+(0.89008620109)*x[1]**o+(0.874381441062)*x[1]  
         s[1,0,1,1]=(-0.405423425934)*x[0]**o+(-0.404267054882)*x[0]+(-0.63801489002)*x[1]**o+(-0.728771425845)*x[1]  
         s[1,0,2,0]=(-0.216267078676)*x[0]**o+(0.956804195842)*x[0]+(-0.908451202669)*x[1]**o+(-0.322043280117)*x[1]  
         s[1,0,2,1]=(-0.168907777516)*x[0]**o+(0.840516962339)*x[0]+(0.103177353457)*x[1]**o+(0.939190271608)*x[1]  
         s[1,1,0,0]=(-0.884189035361)*x[0]**o+(-0.396863590748)*x[0]+(-0.380355614494)*x[1]**o+(0.913843764972)*x[1]  
         s[1,1,0,1]=(-0.983514772022)*x[0]**o+(0.953676778353)*x[0]+(-0.141666532996)*x[1]**o+(-0.782763806635)*x[1]  
         s[1,1,1,0]=(0.723588279961)*x[0]**o+(0.0698022948292)*x[0]+(-0.202960085361)*x[1]**o+(-0.0971108181392)*x[1]  
         s[1,1,1,1]=(-0.809610385863)*x[0]**o+(0.78262340178)*x[0]+(-0.292492437285)*x[1]**o+(0.909658049109)*x[1]  
         s[1,1,2,0]=(0.831333270285)*x[0]**o+(0.532412110902)*x[0]+(0.852180039142)*x[1]**o+(-0.126550447094)*x[1]  
         s[1,1,2,1]=(0.889635940128)*x[0]**o+(-0.0146231223219)*x[0]+(-0.505300606168)*x[1]**o+(0.286596962758)*x[1]  
         s[1,2,0,0]=(-0.479209867816)*x[0]**o+(-0.707176716613)*x[0]+(0.385223744345)*x[1]**o+(0.679335984842)*x[1]  
         s[1,2,0,1]=(-0.690494514078)*x[0]**o+(-0.591659781424)*x[0]+(-0.111527008468)*x[1]**o+(0.73261078188)*x[1]  
         s[1,2,1,0]=(-0.65110579618)*x[0]**o+(-0.861397125883)*x[0]+(-0.264211841662)*x[1]**o+(0.750122373459)*x[1]  
         s[1,2,1,1]=(-0.495114108462)*x[0]**o+(-0.555683103062)*x[0]+(-0.0384737773817)*x[1]**o+(0.422372598888)*x[1]  
         s[1,2,2,0]=(-0.846365789548)*x[0]**o+(0.247402342046)*x[0]+(-0.998046573914)*x[1]**o+(0.264003327979)*x[1]  
         s[1,2,2,1]=(0.4479853512)*x[0]**o+(-0.502771753169)*x[0]+(-0.366626482676)*x[1]**o+(0.506404378836)*x[1]  
         s[1,3,0,0]=(-0.677771809341)*x[0]**o+(-0.105232399291)*x[0]+(0.10440523429)*x[1]**o+(-0.780931426435)*x[1]  
         s[1,3,0,1]=(0.549864901432)*x[0]**o+(0.79598502718)*x[0]+(-0.424985507693)*x[1]**o+(-0.649629583228)*x[1]  
         s[1,3,1,0]=(0.795465752618)*x[0]**o+(-0.0630573960436)*x[0]+(-0.158966662533)*x[1]**o+(0.888189443186)*x[1]  
         s[1,3,1,1]=(-0.395120222846)*x[0]**o+(-0.529551413114)*x[0]+(-0.351127736099)*x[1]**o+(-0.960771541871)*x[1]  
         s[1,3,2,0]=(-0.244306249618)*x[0]**o+(0.925164172251)*x[0]+(-0.988402656417)*x[1]**o+(-0.0797097670335)*x[1]  
         s[1,3,2,1]=(0.905866127894)*x[0]**o+(0.135673487702)*x[0]+(-0.873223112612)*x[1]**o+(0.598121374326)*x[1]  
         s[1,4,0,0]=(0.171338765926)*x[0]**o+(-0.31796084081)*x[0]+(-0.914462477805)*x[1]**o+(0.923691484317)*x[1]  
         s[1,4,0,1]=(-0.188491880655)*x[0]**o+(-0.67119846649)*x[0]+(0.488643815471)*x[1]**o+(-0.912992530018)*x[1]  
         s[1,4,1,0]=(0.252606322081)*x[0]**o+(0.509944026633)*x[0]+(0.539656085813)*x[1]**o+(0.0286599718948)*x[1]  
         s[1,4,1,1]=(0.148934160341)*x[0]**o+(0.50451378885)*x[0]+(0.878910174211)*x[1]**o+(-0.617480145541)*x[1]  
         s[1,4,2,0]=(-0.235447116973)*x[0]**o+(0.825149714177)*x[0]+(0.300052096347)*x[1]**o+(-0.360690924033)*x[1]  
         s[1,4,2,1]=(0.944445188093)*x[0]**o+(-0.170511625527)*x[0]+(-0.333492913384)*x[1]**o+(0.907577674324)*x[1]  
         s[2,0,0,0]=(-0.942092595372)*x[0]**o+(-0.254482071505)*x[0]+(-0.0151488336686)*x[1]**o+(-0.0287652780384)*x[1]  
         s[2,0,0,1]=(0.0655506752825)*x[0]**o+(0.898719259761)*x[0]+(0.383024592178)*x[1]**o+(0.0989444595983)*x[1]  
         s[2,0,1,0]=(0.291304803618)*x[0]**o+(-0.720915295421)*x[0]+(0.138378684)*x[1]**o+(0.876226100573)*x[1]  
         s[2,0,1,1]=(0.0625773477714)*x[0]**o+(-0.0294480886227)*x[0]+(0.736449427619)*x[1]**o+(0.371697786988)*x[1]  
         s[2,0,2,0]=(-0.931044858876)*x[0]**o+(0.911308988417)*x[0]+(0.689775520125)*x[1]**o+(0.415135153045)*x[1]  
         s[2,0,2,1]=(-0.732200781532)*x[0]**o+(0.395135482591)*x[0]+(-0.619692129874)*x[1]**o+(-0.912759567625)*x[1]  
         s[2,1,0,0]=(-0.261557477097)*x[0]**o+(-0.933044351058)*x[0]+(0.0156599006787)*x[1]**o+(-0.082399909281)*x[1]  
         s[2,1,0,1]=(0.723444855088)*x[0]**o+(-0.216911506016)*x[0]+(0.604446335087)*x[1]**o+(0.947367685426)*x[1]  
         s[2,1,1,0]=(-0.606511927315)*x[0]**o+(0.825992890197)*x[0]+(0.757190663205)*x[1]**o+(-0.0991622858024)*x[1]  
         s[2,1,1,1]=(0.45110092033)*x[0]**o+(0.0571087683245)*x[0]+(-0.825169962155)*x[1]**o+(0.557059283915)*x[1]  
         s[2,1,2,0]=(-0.612806058565)*x[0]**o+(0.928772523716)*x[0]+(-0.288177463065)*x[1]**o+(0.341361092846)*x[1]  
         s[2,1,2,1]=(-0.746890321439)*x[0]**o+(0.893018453839)*x[0]+(0.0308905730956)*x[1]**o+(0.291585488925)*x[1]  
         s[2,2,0,0]=(-0.665223434533)*x[0]**o+(-0.997256499342)*x[0]+(-0.134118374176)*x[1]**o+(-0.930692055226)*x[1]  
         s[2,2,0,1]=(-0.478607794082)*x[0]**o+(0.0372165046416)*x[0]+(-0.149775511078)*x[1]**o+(-0.412243756318)*x[1]  
         s[2,2,1,0]=(-0.782692588953)*x[0]**o+(0.896152570987)*x[0]+(-0.265361365664)*x[1]**o+(0.0859566508122)*x[1]  
         s[2,2,1,1]=(0.141591460973)*x[0]**o+(0.399004634853)*x[0]+(0.351166595901)*x[1]**o+(-0.230314460514)*x[1]  
         s[2,2,2,0]=(-0.282452862833)*x[0]**o+(0.652348758087)*x[0]+(-0.006664462988)*x[1]**o+(0.115435922234)*x[1]  
         s[2,2,2,1]=(-0.108570066423)*x[0]**o+(0.536881567792)*x[0]+(-0.967086006781)*x[1]**o+(0.964315151846)*x[1]  
         s[2,3,0,0]=(-0.872481061987)*x[0]**o+(-0.152036048838)*x[0]+(0.714460711637)*x[1]**o+(-0.641192704763)*x[1]  
         s[2,3,0,1]=(-0.314322497313)*x[0]**o+(0.766601974446)*x[0]+(-0.304360730035)*x[1]**o+(-0.445351381604)*x[1]  
         s[2,3,1,0]=(0.364419198839)*x[0]**o+(-0.615166967343)*x[0]+(0.797973787987)*x[1]**o+(0.312408283718)*x[1]  
         s[2,3,1,1]=(-0.781147212189)*x[0]**o+(-0.549359753018)*x[0]+(0.235681715573)*x[1]**o+(-0.231862286881)*x[1]  
         s[2,3,2,0]=(-0.958493367772)*x[0]**o+(-0.775968770096)*x[0]+(-0.917090286139)*x[1]**o+(0.656115811881)*x[1]  
         s[2,3,2,1]=(0.572779229598)*x[0]**o+(-0.875089280859)*x[0]+(0.575188283953)*x[1]**o+(-0.617895968371)*x[1]  
         s[2,4,0,0]=(-0.178437300104)*x[0]**o+(-0.305311887897)*x[0]+(-0.362423234235)*x[1]**o+(-0.993155475703)*x[1]  
         s[2,4,0,1]=(-0.842863324823)*x[0]**o+(-0.334505517678)*x[0]+(-0.233874335956)*x[1]**o+(-0.280499554274)*x[1]  
         s[2,4,1,0]=(-0.396341438458)*x[0]**o+(0.605087475544)*x[0]+(-0.648099915852)*x[1]**o+(-0.338407917903)*x[1]  
         s[2,4,1,1]=(-0.359913098139)*x[0]**o+(0.80935120431)*x[0]+(-0.969248694111)*x[1]**o+(0.884624495846)*x[1]  
         s[2,4,2,0]=(0.965251612654)*x[0]**o+(-0.811340257859)*x[0]+(0.960012562229)*x[1]**o+(-0.825791870471)*x[1]  
         s[2,4,2,1]=(0.43888464177)*x[0]**o+(0.126116195477)*x[0]+(0.0455614359233)*x[1]**o+(0.387001710336)*x[1]  
         s[3,0,0,0]=(0.961744925179)*x[0]**o+(0.590267645729)*x[0]+(-0.657096083564)*x[1]**o+(-0.336931534761)*x[1]  
         s[3,0,0,1]=(0.0372329050631)*x[0]**o+(0.82966683846)*x[0]+(-0.537423647089)*x[1]**o+(0.13780696077)*x[1]  
         s[3,0,1,0]=(-0.762516609688)*x[0]**o+(-0.619904320036)*x[0]+(0.653234747183)*x[1]**o+(0.3188610791)*x[1]  
         s[3,0,1,1]=(-0.749684385643)*x[0]**o+(-0.30857008835)*x[0]+(0.066895978166)*x[1]**o+(-0.603289571527)*x[1]  
         s[3,0,2,0]=(-0.621186971872)*x[0]**o+(0.109237849031)*x[0]+(0.312234719711)*x[1]**o+(0.214139545654)*x[1]  
         s[3,0,2,1]=(-0.479630544493)*x[0]**o+(0.936515248516)*x[0]+(0.135913071464)*x[1]**o+(0.536193827105)*x[1]  
         s[3,1,0,0]=(-0.419606668612)*x[0]**o+(-0.825159184029)*x[0]+(-0.862279634673)*x[1]**o+(0.0205463968802)*x[1]  
         s[3,1,0,1]=(0.35798046036)*x[0]**o+(-0.599162907156)*x[0]+(0.174478509759)*x[1]**o+(-0.779627181611)*x[1]  
         s[3,1,1,0]=(-0.175201495388)*x[0]**o+(0.754090549688)*x[0]+(-0.131095703521)*x[1]**o+(-0.149892880631)*x[1]  
         s[3,1,1,1]=(-0.718173244947)*x[0]**o+(0.387119862798)*x[0]+(-0.190359128182)*x[1]**o+(0.71904977881)*x[1]  
         s[3,1,2,0]=(0.542104637274)*x[0]**o+(0.85151096271)*x[0]+(0.0402471065929)*x[1]**o+(-0.276985707209)*x[1]  
         s[3,1,2,1]=(-0.612520892999)*x[0]**o+(0.475838856018)*x[0]+(-0.524069927205)*x[1]**o+(-0.314728620326)*x[1]  
         s[3,2,0,0]=(0.853018031276)*x[0]**o+(0.783150840935)*x[0]+(-0.168512012086)*x[1]**o+(0.713965998504)*x[1]  
         s[3,2,0,1]=(0.253413905488)*x[0]**o+(-0.433043547194)*x[0]+(-0.775710938403)*x[1]**o+(-0.906939451854)*x[1]  
         s[3,2,1,0]=(0.6612655067)*x[0]**o+(0.959161354342)*x[0]+(-0.351925885901)*x[1]**o+(-0.542741000383)*x[1]  
         s[3,2,1,1]=(-0.651886826012)*x[0]**o+(0.799653456288)*x[0]+(0.482387863091)*x[1]**o+(-0.628626395493)*x[1]  
         s[3,2,2,0]=(-0.314962063276)*x[0]**o+(-0.237445058522)*x[0]+(0.983233001597)*x[1]**o+(0.105803386746)*x[1]  
         s[3,2,2,1]=(0.786422364797)*x[0]**o+(0.437192400732)*x[0]+(-0.238461142143)*x[1]**o+(0.696286963331)*x[1]  
         s[3,3,0,0]=(0.483733340742)*x[0]**o+(0.749644548963)*x[0]+(0.765700270847)*x[1]**o+(-0.470185526075)*x[1]  
         s[3,3,0,1]=(0.680316641067)*x[0]**o+(0.952443208592)*x[0]+(-0.0164617510632)*x[1]**o+(-0.234575904406)*x[1]  
         s[3,3,1,0]=(-0.993408262104)*x[0]**o+(-0.229008195245)*x[0]+(0.523753196917)*x[1]**o+(-0.318485891049)*x[1]  
         s[3,3,1,1]=(-0.748894192494)*x[0]**o+(-0.879841134058)*x[0]+(-0.650074035674)*x[1]**o+(0.07564873608)*x[1]  
         s[3,3,2,0]=(-0.0390185724072)*x[0]**o+(0.754358690288)*x[0]+(-0.961050878591)*x[1]**o+(-0.849404044511)*x[1]  
         s[3,3,2,1]=(0.483849885635)*x[0]**o+(0.168666402938)*x[0]+(-0.948399681695)*x[1]**o+(-0.923760856309)*x[1]  
         s[3,4,0,0]=(0.0487172550208)*x[0]**o+(-0.627393318222)*x[0]+(0.328198988132)*x[1]**o+(0.615434829581)*x[1]  
         s[3,4,0,1]=(0.294964552743)*x[0]**o+(0.593632204587)*x[0]+(-0.922244339835)*x[1]**o+(0.712032424818)*x[1]  
         s[3,4,1,0]=(-0.774393234162)*x[0]**o+(0.122655955494)*x[0]+(-0.993126331736)*x[1]**o+(0.553836798684)*x[1]  
         s[3,4,1,1]=(-0.46041945879)*x[0]**o+(-0.676034356031)*x[0]+(0.273980415493)*x[1]**o+(-0.190839002618)*x[1]  
         s[3,4,2,0]=(0.0439333449053)*x[0]**o+(-0.0796104621766)*x[0]+(0.479839558444)*x[1]**o+(-0.0221747154)*x[1]  
         s[3,4,2,1]=(-0.2108539974)*x[0]**o+(-0.743095604828)*x[0]+(-0.531276902705)*x[1]**o+(0.286137673119)*x[1]  
         ref[0,0,0,0]=(0.698846288116)/(o+1.)+(-0.345724213367)+(-0.829288219058)*0.5**o  
         ref[0,0,0,1]=(0.927490172078)/(o+1.)+(0.261832766866)+(-0.456023711562)*0.5**o  
         ref[0,0,1,0]=(-0.785186724625)/(o+1.)+(0.354264849894)+(-0.497067376291)*0.5**o  
         ref[0,0,1,1]=(0.203073455207)/(o+1.)+(0.841858493293)+(-0.290568226175)*0.5**o  
         ref[0,0,2,0]=(0.330466533936)/(o+1.)+(0.189002260987)+(0.00829962077999)*0.5**o  
         ref[0,0,2,1]=(0.847169623314)/(o+1.)+(-0.569874320329)+(-0.806092658508)*0.5**o  
         ref[0,1,0,0]=(0.0231278168453)/(o+1.)+(0.126026358657)+(-0.140461069383)*0.5**o  
         ref[0,1,0,1]=(-0.659235919696)/(o+1.)+(0.287272854295)+(0.587581627616)*0.5**o  
         ref[0,1,1,0]=(0.122921572782)/(o+1.)+(-0.0542100184667)+(-0.641654760801)*0.5**o  
         ref[0,1,1,1]=(-0.745741833491)/(o+1.)+(-0.328303894407)+(-0.380132178505)*0.5**o  
         ref[0,1,2,0]=(0.927407682128)/(o+1.)+(0.322753770553)+(0.126835269214)*0.5**o  
         ref[0,1,2,1]=(0.873696757566)/(o+1.)+(-0.745889199398)+(0.608413549196)*0.5**o  
         ref[0,2,0,0]=(0.11529432626)/(o+1.)+(0.354512600826)+(0.0488258290791)*0.5**o  
         ref[0,2,0,1]=(-0.0997128168301)/(o+1.)+(0.0415875101043)+(-0.780993161707)*0.5**o  
         ref[0,2,1,0]=(0.334264621015)/(o+1.)+(0.275860441029)+(0.305794159864)*0.5**o  
         ref[0,2,1,1]=(-0.159835910161)/(o+1.)+(0.237802557268)+(0.71588138307)*0.5**o  
         ref[0,2,2,0]=(-0.0558026806854)/(o+1.)+(0.296281715437)+(0.864605462382)*0.5**o  
         ref[0,2,2,1]=(-0.478543932177)/(o+1.)+(0.0697144719306)+(-0.0798994114092)*0.5**o  
         ref[0,3,0,0]=(0.181378057097)/(o+1.)+(0.105559457917)+(0.998019190199)*0.5**o  
         ref[0,3,0,1]=(0.58603690984)/(o+1.)+(0.336403441534)+(-0.724306549649)*0.5**o  
         ref[0,3,1,0]=(-0.590753603973)/(o+1.)+(-0.34443456489)+(0.776728843377)*0.5**o  
         ref[0,3,1,1]=(0.220692714675)/(o+1.)+(0.387318591606)+(0.285035031516)*0.5**o  
         ref[0,3,2,0]=(-0.158356936936)/(o+1.)+(0.0711281169143)+(-0.00286941650137)*0.5**o  
         ref[0,3,2,1]=(-0.446900268053)/(o+1.)+(0.0671332607043)+(0.37992478387)*0.5**o  
         ref[0,4,0,0]=(0.0552121131111)/(o+1.)+(-0.0282351797878)+(0.714232167791)*0.5**o  
         ref[0,4,0,1]=(0.321456277553)/(o+1.)+(0.374058464151)+(0.49556700372)*0.5**o  
         ref[0,4,1,0]=(0.0202839586672)/(o+1.)+(-0.0181538415026)+(0.841677614054)*0.5**o  
         ref[0,4,1,1]=(0.629772140166)/(o+1.)+(-0.062004936727)+(-0.504028346474)*0.5**o  
         ref[0,4,2,0]=(0.919945289519)/(o+1.)+(-0.0599949574834)+(0.434265669856)*0.5**o  
         ref[0,4,2,1]=(-0.834647694686)/(o+1.)+(0.2607949111)+(-0.86013960593)*0.5**o  
         ref[1,0,0,0]=(-0.430841927673)/(o+1.)+(-0.0855692261333)+(-0.437686950383)*0.5**o  
         ref[1,0,0,1]=(-0.172390658038)/(o+1.)+(-0.530724225027)+(0.323843044435)*0.5**o  
         ref[1,0,1,0]=(0.89008620109)/(o+1.)+(0.137947417602)+(-0.845882465152)*0.5**o  
         ref[1,0,1,1]=(-0.63801489002)/(o+1.)+(-0.566519240363)+(-0.405423425934)*0.5**o  
         ref[1,0,2,0]=(-0.908451202669)/(o+1.)+(0.317380457863)+(-0.216267078676)*0.5**o  
         ref[1,0,2,1]=(0.103177353457)/(o+1.)+(0.889853616974)+(-0.168907777516)*0.5**o  
         ref[1,1,0,0]=(-0.380355614494)/(o+1.)+(0.258490087112)+(-0.884189035361)*0.5**o  
         ref[1,1,0,1]=(-0.141666532996)/(o+1.)+(0.0854564858592)+(-0.983514772022)*0.5**o  
         ref[1,1,1,0]=(-0.202960085361)/(o+1.)+(-0.013654261655)+(0.723588279961)*0.5**o  
         ref[1,1,1,1]=(-0.292492437285)/(o+1.)+(0.846140725444)+(-0.809610385863)*0.5**o  
         ref[1,1,2,0]=(0.852180039142)/(o+1.)+(0.202930831904)+(0.831333270285)*0.5**o  
         ref[1,1,2,1]=(-0.505300606168)/(o+1.)+(0.135986920218)+(0.889635940128)*0.5**o  
         ref[1,2,0,0]=(0.385223744345)/(o+1.)+(-0.0139203658855)+(-0.479209867816)*0.5**o  
         ref[1,2,0,1]=(-0.111527008468)/(o+1.)+(0.0704755002279)+(-0.690494514078)*0.5**o  
         ref[1,2,1,0]=(-0.264211841662)/(o+1.)+(-0.055637376212)+(-0.65110579618)*0.5**o  
         ref[1,2,1,1]=(-0.0384737773817)/(o+1.)+(-0.066655252087)+(-0.495114108462)*0.5**o  
         ref[1,2,2,0]=(-0.998046573914)/(o+1.)+(0.255702835012)+(-0.846365789548)*0.5**o  
         ref[1,2,2,1]=(-0.366626482676)/(o+1.)+(0.00181631283349)+(0.4479853512)*0.5**o  
         ref[1,3,0,0]=(0.10440523429)/(o+1.)+(-0.443081912863)+(-0.677771809341)*0.5**o  
         ref[1,3,0,1]=(-0.424985507693)/(o+1.)+(0.0731777219764)+(0.549864901432)*0.5**o  
         ref[1,3,1,0]=(-0.158966662533)/(o+1.)+(0.412566023571)+(0.795465752618)*0.5**o  
         ref[1,3,1,1]=(-0.351127736099)/(o+1.)+(-0.745161477493)+(-0.395120222846)*0.5**o  
         ref[1,3,2,0]=(-0.988402656417)/(o+1.)+(0.422727202609)+(-0.244306249618)*0.5**o  
         ref[1,3,2,1]=(-0.873223112612)/(o+1.)+(0.366897431014)+(0.905866127894)*0.5**o  
         ref[1,4,0,0]=(-0.914462477805)/(o+1.)+(0.302865321753)+(0.171338765926)*0.5**o  
         ref[1,4,0,1]=(0.488643815471)/(o+1.)+(-0.792095498254)+(-0.188491880655)*0.5**o  
         ref[1,4,1,0]=(0.539656085813)/(o+1.)+(0.269301999264)+(0.252606322081)*0.5**o  
         ref[1,4,1,1]=(0.878910174211)/(o+1.)+(-0.0564831783457)+(0.148934160341)*0.5**o  
         ref[1,4,2,0]=(0.300052096347)/(o+1.)+(0.232229395072)+(-0.235447116973)*0.5**o  
         ref[1,4,2,1]=(-0.333492913384)/(o+1.)+(0.368533024398)+(0.944445188093)*0.5**o  
         ref[2,0,0,0]=(-0.0151488336686)/(o+1.)+(-0.141623674772)+(-0.942092595372)*0.5**o  
         ref[2,0,0,1]=(0.383024592178)/(o+1.)+(0.498831859679)+(0.0655506752825)*0.5**o  
         ref[2,0,1,0]=(0.138378684)/(o+1.)+(0.0776554025757)+(0.291304803618)*0.5**o  
         ref[2,0,1,1]=(0.736449427619)/(o+1.)+(0.171124849182)+(0.0625773477714)*0.5**o  
         ref[2,0,2,0]=(0.689775520125)/(o+1.)+(0.663222070731)+(-0.931044858876)*0.5**o  
         ref[2,0,2,1]=(-0.619692129874)/(o+1.)+(-0.258812042517)+(-0.732200781532)*0.5**o  
         ref[2,1,0,0]=(0.0156599006787)/(o+1.)+(-0.507722130169)+(-0.261557477097)*0.5**o  
         ref[2,1,0,1]=(0.604446335087)/(o+1.)+(0.365228089705)+(0.723444855088)*0.5**o  
         ref[2,1,1,0]=(0.757190663205)/(o+1.)+(0.363415302197)+(-0.606511927315)*0.5**o  
         ref[2,1,1,1]=(-0.825169962155)/(o+1.)+(0.30708402612)+(0.45110092033)*0.5**o  
         ref[2,1,2,0]=(-0.288177463065)/(o+1.)+(0.635066808281)+(-0.612806058565)*0.5**o  
         ref[2,1,2,1]=(0.0308905730956)/(o+1.)+(0.592301971382)+(-0.746890321439)*0.5**o  
         ref[2,2,0,0]=(-0.134118374176)/(o+1.)+(-0.963974277284)+(-0.665223434533)*0.5**o  
         ref[2,2,0,1]=(-0.149775511078)/(o+1.)+(-0.187513625838)+(-0.478607794082)*0.5**o  
         ref[2,2,1,0]=(-0.265361365664)/(o+1.)+(0.4910546109)+(-0.782692588953)*0.5**o  
         ref[2,2,1,1]=(0.351166595901)/(o+1.)+(0.0843450871693)+(0.141591460973)*0.5**o  
         ref[2,2,2,0]=(-0.006664462988)/(o+1.)+(0.383892340161)+(-0.282452862833)*0.5**o  
         ref[2,2,2,1]=(-0.967086006781)/(o+1.)+(0.750598359819)+(-0.108570066423)*0.5**o  
         ref[2,3,0,0]=(0.714460711637)/(o+1.)+(-0.3966143768)+(-0.872481061987)*0.5**o  
         ref[2,3,0,1]=(-0.304360730035)/(o+1.)+(0.160625296421)+(-0.314322497313)*0.5**o  
         ref[2,3,1,0]=(0.797973787987)/(o+1.)+(-0.151379341813)+(0.364419198839)*0.5**o  
         ref[2,3,1,1]=(0.235681715573)/(o+1.)+(-0.390611019949)+(-0.781147212189)*0.5**o  
         ref[2,3,2,0]=(-0.917090286139)/(o+1.)+(-0.0599264791076)+(-0.958493367772)*0.5**o  
         ref[2,3,2,1]=(0.575188283953)/(o+1.)+(-0.746492624615)+(0.572779229598)*0.5**o  
         ref[2,4,0,0]=(-0.362423234235)/(o+1.)+(-0.6492336818)+(-0.178437300104)*0.5**o  
         ref[2,4,0,1]=(-0.233874335956)/(o+1.)+(-0.307502535976)+(-0.842863324823)*0.5**o  
         ref[2,4,1,0]=(-0.648099915852)/(o+1.)+(0.133339778821)+(-0.396341438458)*0.5**o  
         ref[2,4,1,1]=(-0.969248694111)/(o+1.)+(0.846987850078)+(-0.359913098139)*0.5**o  
         ref[2,4,2,0]=(0.960012562229)/(o+1.)+(-0.818566064165)+(0.965251612654)*0.5**o  
         ref[2,4,2,1]=(0.0455614359233)/(o+1.)+(0.256558952907)+(0.43888464177)*0.5**o  
         ref[3,0,0,0]=(-0.657096083564)/(o+1.)+(0.126668055484)+(0.961744925179)*0.5**o  
         ref[3,0,0,1]=(-0.537423647089)/(o+1.)+(0.483736899615)+(0.0372329050631)*0.5**o  
         ref[3,0,1,0]=(0.653234747183)/(o+1.)+(-0.150521620468)+(-0.762516609688)*0.5**o  
         ref[3,0,1,1]=(0.066895978166)/(o+1.)+(-0.455929829939)+(-0.749684385643)*0.5**o  
         ref[3,0,2,0]=(0.312234719711)/(o+1.)+(0.161688697343)+(-0.621186971872)*0.5**o  
         ref[3,0,2,1]=(0.135913071464)/(o+1.)+(0.73635453781)+(-0.479630544493)*0.5**o  
         ref[3,1,0,0]=(-0.862279634673)/(o+1.)+(-0.402306393574)+(-0.419606668612)*0.5**o  
         ref[3,1,0,1]=(0.174478509759)/(o+1.)+(-0.689395044384)+(0.35798046036)*0.5**o  
         ref[3,1,1,0]=(-0.131095703521)/(o+1.)+(0.302098834529)+(-0.175201495388)*0.5**o  
         ref[3,1,1,1]=(-0.190359128182)/(o+1.)+(0.553084820804)+(-0.718173244947)*0.5**o  
         ref[3,1,2,0]=(0.0402471065929)/(o+1.)+(0.28726262775)+(0.542104637274)*0.5**o  
         ref[3,1,2,1]=(-0.524069927205)/(o+1.)+(0.0805551178455)+(-0.612520892999)*0.5**o  
         ref[3,2,0,0]=(-0.168512012086)/(o+1.)+(0.748558419719)+(0.853018031276)*0.5**o  
         ref[3,2,0,1]=(-0.775710938403)/(o+1.)+(-0.669991499524)+(0.253413905488)*0.5**o  
         ref[3,2,1,0]=(-0.351925885901)/(o+1.)+(0.20821017698)+(0.6612655067)*0.5**o  
         ref[3,2,1,1]=(0.482387863091)/(o+1.)+(0.0855135303978)+(-0.651886826012)*0.5**o  
         ref[3,2,2,0]=(0.983233001597)/(o+1.)+(-0.0658208358883)+(-0.314962063276)*0.5**o  
         ref[3,2,2,1]=(-0.238461142143)/(o+1.)+(0.566739682031)+(0.786422364797)*0.5**o  
         ref[3,3,0,0]=(0.765700270847)/(o+1.)+(0.139729511444)+(0.483733340742)*0.5**o  
         ref[3,3,0,1]=(-0.0164617510632)/(o+1.)+(0.358933652093)+(0.680316641067)*0.5**o  
         ref[3,3,1,0]=(0.523753196917)/(o+1.)+(-0.273747043147)+(-0.993408262104)*0.5**o  
         ref[3,3,1,1]=(-0.650074035674)/(o+1.)+(-0.402096198989)+(-0.748894192494)*0.5**o  
         ref[3,3,2,0]=(-0.961050878591)/(o+1.)+(-0.0475226771118)+(-0.0390185724072)*0.5**o  
         ref[3,3,2,1]=(-0.948399681695)/(o+1.)+(-0.377547226685)+(0.483849885635)*0.5**o  
         ref[3,4,0,0]=(0.328198988132)/(o+1.)+(-0.00597924432023)+(0.0487172550208)*0.5**o  
         ref[3,4,0,1]=(-0.922244339835)/(o+1.)+(0.652832314702)+(0.294964552743)*0.5**o  
         ref[3,4,1,0]=(-0.993126331736)/(o+1.)+(0.338246377089)+(-0.774393234162)*0.5**o  
         ref[3,4,1,1]=(0.273980415493)/(o+1.)+(-0.433436679324)+(-0.46041945879)*0.5**o  
         ref[3,4,2,0]=(0.479839558444)/(o+1.)+(-0.0508925887883)+(0.0439333449053)*0.5**o  
         ref[3,4,2,1]=(-0.531276902705)/(o+1.)+(-0.228478965855)+(-0.2108539974)*0.5**o  
       else:  
         s[0,0,0,0]=(-0.48893267678)*x[0]**o+(-0.276480532077)*x[0]+(0.774386441775)*x[1]**o+(-0.649500271111)*x[1]+(-0.0349902316269)*x[2]**o+(0.170017460369)*x[2]  
         s[0,0,0,1]=(0.271529548298)*x[0]**o+(-0.318825369645)*x[0]+(0.304421796509)*x[1]**o+(0.445685002224)*x[1]+(0.0335660627736)*x[2]**o+(-0.498125294129)*x[2]  
         s[0,0,1,0]=(0.217379546035)*x[0]**o+(0.0217166724721)*x[0]+(0.845692481133)*x[1]**o+(0.991062940209)*x[1]+(-0.504574922644)*x[2]**o+(-0.442660078459)*x[2]  
         s[0,0,1,1]=(0.042921886647)*x[0]**o+(0.223486944232)*x[0]+(0.0494176704553)*x[1]**o+(0.96519307605)*x[1]+(-0.138757753118)*x[2]**o+(0.0467978128441)*x[2]  
         s[0,0,2,0]=(-0.386813522991)*x[0]**o+(-0.460337705352)*x[0]+(0.868148506432)*x[1]**o+(-0.639578197438)*x[1]+(0.344241610414)*x[2]**o+(-0.340649859294)*x[2]  
         s[0,0,2,1]=(0.270966465259)*x[0]**o+(-0.921862313681)*x[0]+(0.419658509548)*x[1]**o+(0.382347312575)*x[1]+(-0.458089861176)*x[2]**o+(-0.680587978014)*x[2]  
         s[0,1,0,0]=(0.341922361346)*x[0]**o+(0.992862705739)*x[0]+(0.664064252002)*x[1]**o+(-0.976539711563)*x[1]+(-0.336860627327)*x[2]**o+(0.0351493378936)*x[2]  
         s[0,1,0,1]=(0.232432790902)*x[0]**o+(0.661576839972)*x[0]+(-0.0847723144646)*x[1]**o+(0.676452509633)*x[1]+(-0.523713339087)*x[2]**o+(-0.944537647834)*x[2]  
         s[0,1,1,0]=(-0.0195600321657)*x[0]**o+(0.548788073658)*x[0]+(0.732671243649)*x[1]**o+(-0.559596045627)*x[1]+(-0.821347880719)*x[2]**o+(0.523044807739)*x[2]  
         s[0,1,1,1]=(0.440682443808)*x[0]**o+(0.489252739473)*x[0]+(-0.0286407968844)*x[1]**o+(0.389892189545)*x[1]+(0.802377372742)*x[2]**o+(-0.848679176767)*x[2]  
         s[0,1,2,0]=(0.0308644963019)*x[0]**o+(-0.838818939488)*x[0]+(-0.923147289871)*x[1]**o+(-0.898497578423)*x[1]+(0.352358085546)*x[2]**o+(-0.0551880704817)*x[2]  
         s[0,1,2,1]=(0.964064258383)*x[0]**o+(0.889207476385)*x[0]+(-0.446058209666)*x[1]**o+(-0.410646592871)*x[1]+(-0.143876047927)*x[2]**o+(-0.231175626697)*x[2]  
         s[0,2,0,0]=(-0.378594793341)*x[0]**o+(0.45713093072)*x[0]+(-0.0164617155479)*x[1]**o+(-0.852502076132)*x[1]+(-0.445860749107)*x[2]**o+(0.718303558387)*x[2]  
         s[0,2,0,1]=(-0.24119818585)*x[0]**o+(-0.480829504364)*x[0]+(0.0483190702959)*x[1]**o+(-0.943891784533)*x[1]+(0.822005676991)*x[2]**o+(0.462965609893)*x[2]  
         s[0,2,1,0]=(0.260426222503)*x[0]**o+(0.801642256974)*x[0]+(-0.344027586708)*x[1]**o+(0.609754775626)*x[1]+(-0.614003273478)*x[2]**o+(0.254286708707)*x[2]  
         s[0,2,1,1]=(-0.585208459519)*x[0]**o+(0.409783580697)*x[0]+(0.675131095845)*x[1]**o+(0.962899493666)*x[1]+(-0.555202089686)*x[2]**o+(0.55800653582)*x[2]  
         s[0,2,2,0]=(0.926784535292)*x[0]**o+(0.366810833854)*x[0]+(0.280209292502)*x[1]**o+(0.455075782363)*x[1]+(0.315470862333)*x[2]**o+(0.804139765801)*x[2]  
         s[0,2,2,1]=(-0.182330163829)*x[0]**o+(0.137160802887)*x[0]+(0.50089868344)*x[1]**o+(0.457091587964)*x[1]+(0.661074305613)*x[2]**o+(-0.774463051929)*x[2]  
         s[0,3,0,0]=(0.251053015385)*x[0]**o+(-0.00252354996738)*x[0]+(0.219814741857)*x[1]**o+(-0.788960481779)*x[1]+(-0.628563574142)*x[2]**o+(0.238508420102)*x[2]  
         s[0,3,0,1]=(-0.885181589797)*x[0]**o+(0.524674512592)*x[0]+(-0.137981402257)*x[1]**o+(-0.57775224131)*x[1]+(-0.151536711237)*x[2]**o+(0.147483336195)*x[2]  
         s[0,3,1,0]=(0.464501690982)*x[0]**o+(0.477393661278)*x[0]+(-0.913546513036)*x[1]**o+(0.209928665471)*x[1]+(0.552522027491)*x[2]**o+(-0.200580731655)*x[2]  
         s[0,3,1,1]=(0.117929836206)*x[0]**o+(-0.973701486459)*x[0]+(-0.876411386461)*x[1]**o+(-0.511161888778)*x[1]+(0.213923028781)*x[2]**o+(0.620921035428)*x[2]  
         s[0,3,2,0]=(0.228255426058)*x[0]**o+(-0.135554118227)*x[0]+(0.607714808043)*x[1]**o+(0.522943351003)*x[1]+(-0.686514740068)*x[2]**o+(-0.238689322489)*x[2]  
         s[0,3,2,1]=(-0.155365105782)*x[0]**o+(0.28572413448)*x[0]+(-0.452657577548)*x[1]**o+(-0.884598572632)*x[1]+(0.279309317605)*x[2]**o+(-0.523804815006)*x[2]  
         s[0,4,0,0]=(-0.913401118579)*x[0]**o+(0.141999285441)*x[0]+(-0.0373272930617)*x[1]**o+(-0.907472677652)*x[1]+(0.648778084537)*x[2]**o+(0.905348717002)*x[2]  
         s[0,4,0,1]=(0.272596166342)*x[0]**o+(0.523354359959)*x[0]+(-0.597238366724)*x[1]**o+(-0.57955847031)*x[1]+(0.961129977909)*x[2]**o+(-0.539446933115)*x[2]  
         s[0,4,1,0]=(0.469445737741)*x[0]**o+(0.272602303288)*x[0]+(-0.168715269045)*x[1]**o+(-0.508483179891)*x[1]+(-0.0542883418628)*x[2]**o+(-0.549230857829)*x[2]  
         s[0,4,1,1]=(-0.727336869594)*x[0]**o+(0.501720827606)*x[0]+(0.0112875501961)*x[1]**o+(-0.195351938275)*x[1]+(0.477540723998)*x[2]**o+(0.314035857499)*x[2]  
         s[0,4,2,0]=(-0.826661708611)*x[0]**o+(-0.453403968062)*x[0]+(-0.424265582853)*x[1]**o+(0.850699490929)*x[1]+(0.869873737156)*x[2]**o+(0.512188794374)*x[2]  
         s[0,4,2,1]=(0.788019130522)*x[0]**o+(-0.38976086271)*x[0]+(0.450211292079)*x[1]**o+(-0.845896268738)*x[1]+(-0.944295444764)*x[2]**o+(0.49424688571)*x[2]  
         s[1,0,0,0]=(0.251841546653)*x[0]**o+(-0.262117658277)*x[0]+(-0.756023145868)*x[1]**o+(0.562918802897)*x[1]+(0.999897367962)*x[2]**o+(-0.438732703957)*x[2]  
         s[1,0,0,1]=(0.0702543485705)*x[0]**o+(0.553020799687)*x[0]+(0.129510978458)*x[1]**o+(-0.287781735231)*x[1]+(0.0962686272734)*x[2]**o+(-0.153713487101)*x[2]  
         s[1,0,1,0]=(0.0132145791001)*x[0]**o+(-0.747224756368)*x[0]+(0.533216099372)*x[1]**o+(0.651501143279)*x[1]+(0.275246126663)*x[2]**o+(0.564330219864)*x[2]  
         s[1,0,1,1]=(0.00555685773193)*x[0]**o+(-0.912265903466)*x[0]+(-0.165714475359)*x[1]**o+(-0.29550893963)*x[1]+(-0.834017179013)*x[2]**o+(-0.66051475999)*x[2]  
         s[1,0,2,0]=(-0.937628377428)*x[0]**o+(0.670046440332)*x[0]+(-0.836211833803)*x[1]**o+(0.294767128956)*x[1]+(-0.0831464801716)*x[2]**o+(0.173538164187)*x[2]  
         s[1,0,2,1]=(0.0853414413422)*x[0]**o+(0.332113726085)*x[0]+(-0.00785676889602)*x[1]**o+(-0.787517944282)*x[1]+(0.640692804663)*x[2]**o+(0.16190882793)*x[2]  
         s[1,1,0,0]=(-0.197717271419)*x[0]**o+(0.0875673864383)*x[0]+(0.303400667777)*x[1]**o+(0.561096499643)*x[1]+(-0.544100296942)*x[2]**o+(-0.236967889808)*x[2]  
         s[1,1,0,1]=(0.378319093831)*x[0]**o+(-0.173085814456)*x[0]+(-0.520972068858)*x[1]**o+(-0.0887121930691)*x[1]+(0.0219775149259)*x[2]**o+(-0.902192785902)*x[2]  
         s[1,1,1,0]=(-0.0852354427742)*x[0]**o+(-0.868052438949)*x[0]+(-0.962245566851)*x[1]**o+(-0.785773600296)*x[1]+(0.871469592508)*x[2]**o+(0.970335434685)*x[2]  
         s[1,1,1,1]=(0.543079304077)*x[0]**o+(0.563798729263)*x[0]+(-0.0684074924309)*x[1]**o+(-0.0846345417372)*x[1]+(-0.0409611114801)*x[2]**o+(0.064168518437)*x[2]  
         s[1,1,2,0]=(0.163126135652)*x[0]**o+(0.550910259467)*x[0]+(-0.838398060114)*x[1]**o+(0.20704094128)*x[1]+(-0.988745842471)*x[2]**o+(-0.238812411091)*x[2]  
         s[1,1,2,1]=(-0.4311680318)*x[0]**o+(-0.689268700879)*x[0]+(-0.478591190853)*x[1]**o+(-0.935785118221)*x[1]+(0.681916835809)*x[2]**o+(0.316911720884)*x[2]  
         s[1,2,0,0]=(-0.823741968282)*x[0]**o+(0.337348902553)*x[0]+(-0.773958391461)*x[1]**o+(0.319484407204)*x[1]+(-0.806392888327)*x[2]**o+(0.784342104197)*x[2]  
         s[1,2,0,1]=(-0.271373691068)*x[0]**o+(-0.674977315639)*x[0]+(-0.73119288706)*x[1]**o+(-0.822294334638)*x[1]+(-0.348777213792)*x[2]**o+(0.539498527057)*x[2]  
         s[1,2,1,0]=(-0.197804966703)*x[0]**o+(-0.000545898061773)*x[0]+(-0.477781076232)*x[1]**o+(-0.726309620722)*x[1]+(0.33565493623)*x[2]**o+(-0.472018740475)*x[2]  
         s[1,2,1,1]=(0.985473777724)*x[0]**o+(-0.905489956976)*x[0]+(0.542738966677)*x[1]**o+(0.405770678949)*x[1]+(0.742199205539)*x[2]**o+(-0.834198356515)*x[2]  
         s[1,2,2,0]=(0.0963375474866)*x[0]**o+(-0.702341975163)*x[0]+(-0.719805210146)*x[1]**o+(-0.573969955879)*x[1]+(0.849036302763)*x[2]**o+(-0.050325972969)*x[2]  
         s[1,2,2,1]=(-0.000809557040863)*x[0]**o+(-0.298554227357)*x[0]+(-0.257571070168)*x[1]**o+(0.902842431485)*x[1]+(-0.565532231171)*x[2]**o+(-0.0268976084038)*x[2]  
         s[1,3,0,0]=(-0.450224087014)*x[0]**o+(0.644911723614)*x[0]+(0.585908753859)*x[1]**o+(0.192087613433)*x[1]+(0.37463835574)*x[2]**o+(-0.858368552725)*x[2]  
         s[1,3,0,1]=(-0.211716554169)*x[0]**o+(0.133373638633)*x[0]+(-0.477897006462)*x[1]**o+(-0.856170108137)*x[1]+(0.709445201671)*x[2]**o+(0.999843178308)*x[2]  
         s[1,3,1,0]=(0.469992449976)*x[0]**o+(-0.547601912734)*x[0]+(-0.652917936853)*x[1]**o+(-0.973841854379)*x[1]+(0.346404346699)*x[2]**o+(0.960819995744)*x[2]  
         s[1,3,1,1]=(-0.9202597392)*x[0]**o+(0.476802978382)*x[0]+(-0.106899807732)*x[1]**o+(-0.704577566959)*x[1]+(-0.331549015764)*x[2]**o+(0.936043692204)*x[2]  
         s[1,3,2,0]=(0.724283786459)*x[0]**o+(0.822984194337)*x[0]+(0.705848034385)*x[1]**o+(-0.59858805565)*x[1]+(0.350635957833)*x[2]**o+(0.882807237348)*x[2]  
         s[1,3,2,1]=(-0.582421422441)*x[0]**o+(0.809035080665)*x[0]+(-0.457851306764)*x[1]**o+(-0.993328352221)*x[1]+(-0.576322826333)*x[2]**o+(-0.749512812669)*x[2]  
         s[1,4,0,0]=(0.268654181239)*x[0]**o+(-0.902343324019)*x[0]+(0.638580048206)*x[1]**o+(-0.832694904209)*x[1]+(-0.305201732282)*x[2]**o+(-0.867754959197)*x[2]  
         s[1,4,0,1]=(-0.526400834988)*x[0]**o+(-0.40198050654)*x[0]+(0.337289899423)*x[1]**o+(0.179314676284)*x[1]+(-0.931514578551)*x[2]**o+(-0.449197337162)*x[2]  
         s[1,4,1,0]=(0.912742445536)*x[0]**o+(-0.815137545811)*x[0]+(-0.38425815792)*x[1]**o+(-0.713804511416)*x[1]+(-0.0940645853762)*x[2]**o+(-0.184482970408)*x[2]  
         s[1,4,1,1]=(0.0912352323191)*x[0]**o+(0.990389316513)*x[0]+(-0.0350410457429)*x[1]**o+(0.80277947226)*x[1]+(0.35771085432)*x[2]**o+(0.704976740376)*x[2]  
         s[1,4,2,0]=(-0.212374984853)*x[0]**o+(0.115911507956)*x[0]+(0.743357884785)*x[1]**o+(-0.351179816129)*x[1]+(0.363783848165)*x[2]**o+(0.0667503905017)*x[2]  
         s[1,4,2,1]=(-0.192346087265)*x[0]**o+(-0.875505251594)*x[0]+(0.450972468787)*x[1]**o+(0.0441627318307)*x[1]+(-0.955445583779)*x[2]**o+(0.561351576194)*x[2]  
         s[2,0,0,0]=(0.646959412154)*x[0]**o+(0.49125803323)*x[0]+(-0.380573298578)*x[1]**o+(0.5795381042)*x[1]+(0.988167811553)*x[2]**o+(-0.848010513202)*x[2]  
         s[2,0,0,1]=(-0.116490832795)*x[0]**o+(-0.413497866427)*x[0]+(0.015263239692)*x[1]**o+(0.995022978956)*x[1]+(-0.606550379921)*x[2]**o+(0.480728880447)*x[2]  
         s[2,0,1,0]=(-0.656776412474)*x[0]**o+(0.105101642124)*x[0]+(-0.152043267549)*x[1]**o+(0.0397914854834)*x[1]+(0.907598907718)*x[2]**o+(0.55003346668)*x[2]  
         s[2,0,1,1]=(-0.244997314762)*x[0]**o+(-0.180839249852)*x[0]+(0.737654816515)*x[1]**o+(-0.316505218599)*x[1]+(-0.467254068865)*x[2]**o+(0.642411232963)*x[2]  
         s[2,0,2,0]=(0.427359531608)*x[0]**o+(0.0694309336993)*x[0]+(0.567819273901)*x[1]**o+(0.302951042003)*x[1]+(-0.652475445869)*x[2]**o+(-0.0604300175636)*x[2]  
         s[2,0,2,1]=(-0.28054117321)*x[0]**o+(-0.506627838493)*x[0]+(0.830518434434)*x[1]**o+(-0.878165796713)*x[1]+(-0.924137956967)*x[2]**o+(-0.542977024006)*x[2]  
         s[2,1,0,0]=(0.832323847638)*x[0]**o+(0.788814796981)*x[0]+(0.443003510301)*x[1]**o+(-0.692364079852)*x[1]+(-0.107112423673)*x[2]**o+(-0.42975252335)*x[2]  
         s[2,1,0,1]=(0.791743274331)*x[0]**o+(0.506185826171)*x[0]+(0.880323084905)*x[1]**o+(0.875445981105)*x[1]+(-0.988158636575)*x[2]**o+(0.0106467506338)*x[2]  
         s[2,1,1,0]=(-0.0716642151005)*x[0]**o+(0.184121338207)*x[0]+(0.563163918743)*x[1]**o+(-0.0476664508964)*x[1]+(-0.779735247644)*x[2]**o+(0.0532353296963)*x[2]  
         s[2,1,1,1]=(-0.487936865731)*x[0]**o+(0.910882234056)*x[0]+(0.0698617623832)*x[1]**o+(0.949481044342)*x[1]+(0.605781066129)*x[2]**o+(-0.961538763982)*x[2]  
         s[2,1,2,0]=(-0.865760152137)*x[0]**o+(0.98792005348)*x[0]+(-0.266208542741)*x[1]**o+(0.724207675193)*x[1]+(-0.431135420169)*x[2]**o+(-0.719606907727)*x[2]  
         s[2,1,2,1]=(-0.550134186201)*x[0]**o+(0.377678575292)*x[0]+(0.681637629077)*x[1]**o+(0.880510886804)*x[1]+(0.185916696615)*x[2]**o+(-0.561352445373)*x[2]  
         s[2,2,0,0]=(-0.0191940498302)*x[0]**o+(0.92499736077)*x[0]+(-0.457609595358)*x[1]**o+(0.295953391548)*x[1]+(-0.60039707059)*x[2]**o+(0.439541541552)*x[2]  
         s[2,2,0,1]=(-0.593353550722)*x[0]**o+(-0.262307597953)*x[0]+(0.0707406713996)*x[1]**o+(0.510104333108)*x[1]+(-0.325033325591)*x[2]**o+(-0.978979243989)*x[2]  
         s[2,2,1,0]=(0.758386313418)*x[0]**o+(-0.904849079285)*x[0]+(0.517417240328)*x[1]**o+(0.662794014603)*x[1]+(-0.9181308007)*x[2]**o+(0.545716036213)*x[2]  
         s[2,2,1,1]=(-0.0562030350565)*x[0]**o+(-0.187267436123)*x[0]+(-0.0666932679699)*x[1]**o+(-0.192661397505)*x[1]+(0.683795366538)*x[2]**o+(0.554493956469)*x[2]  
         s[2,2,2,0]=(0.632035307709)*x[0]**o+(-0.352426434378)*x[0]+(-0.572996524284)*x[1]**o+(-0.260948177348)*x[1]+(0.0781523669039)*x[2]**o+(-0.755607733499)*x[2]  
         s[2,2,2,1]=(0.877117460076)*x[0]**o+(-0.368983710962)*x[0]+(0.339499499347)*x[1]**o+(-0.74687226645)*x[1]+(-0.0236621043423)*x[2]**o+(-0.524200850201)*x[2]  
         s[2,3,0,0]=(0.868438479199)*x[0]**o+(-0.490384020524)*x[0]+(-0.348975370347)*x[1]**o+(0.0689779831612)*x[1]+(0.993171286973)*x[2]**o+(0.238168596199)*x[2]  
         s[2,3,0,1]=(0.58688914355)*x[0]**o+(-0.299012943187)*x[0]+(-0.475183593899)*x[1]**o+(-0.209284023343)*x[1]+(-0.128788417577)*x[2]**o+(0.88040263674)*x[2]  
         s[2,3,1,0]=(-0.491821145506)*x[0]**o+(0.28222061488)*x[0]+(-0.432027482169)*x[1]**o+(0.0843542963065)*x[1]+(0.179895461516)*x[2]**o+(0.26281058218)*x[2]  
         s[2,3,1,1]=(-0.68076808014)*x[0]**o+(0.966337829009)*x[0]+(-0.967714227169)*x[1]**o+(-0.511464770717)*x[1]+(-0.00173666009442)*x[2]**o+(0.418327208497)*x[2]  
         s[2,3,2,0]=(-0.981204168827)*x[0]**o+(-0.481006793801)*x[0]+(0.223651529206)*x[1]**o+(0.0692948204072)*x[1]+(0.833168651519)*x[2]**o+(-0.747962032571)*x[2]  
         s[2,3,2,1]=(-0.979594675181)*x[0]**o+(-0.793815945451)*x[0]+(-0.972489753584)*x[1]**o+(0.193666863184)*x[1]+(0.813999185145)*x[2]**o+(0.976350643493)*x[2]  
         s[2,4,0,0]=(0.160095467562)*x[0]**o+(-0.0596430245423)*x[0]+(0.421111483086)*x[1]**o+(-0.50368497144)*x[1]+(0.295956709432)*x[2]**o+(-0.547225692085)*x[2]  
         s[2,4,0,1]=(0.121233419707)*x[0]**o+(0.0796884300301)*x[0]+(0.63360038458)*x[1]**o+(-0.285793125165)*x[1]+(-0.322665608493)*x[2]**o+(0.144053221653)*x[2]  
         s[2,4,1,0]=(-0.327390540088)*x[0]**o+(-0.158990478104)*x[0]+(0.0417451752863)*x[1]**o+(0.0577661706274)*x[1]+(0.608054602266)*x[2]**o+(0.876076509191)*x[2]  
         s[2,4,1,1]=(-0.336090262681)*x[0]**o+(0.460831366224)*x[0]+(0.126375418917)*x[1]**o+(-0.0524791065196)*x[1]+(0.778197798934)*x[2]**o+(-0.938503586105)*x[2]  
         s[2,4,2,0]=(-0.157686815732)*x[0]**o+(-0.240464045969)*x[0]+(-0.610957847036)*x[1]**o+(-0.591812526831)*x[1]+(0.683562885502)*x[2]**o+(-0.575699253807)*x[2]  
         s[2,4,2,1]=(-0.591186612156)*x[0]**o+(0.952366931656)*x[0]+(0.563360859838)*x[1]**o+(-0.540973061762)*x[1]+(0.95638308424)*x[2]**o+(0.0810587285575)*x[2]  
         s[3,0,0,0]=(-0.777152282839)*x[0]**o+(0.0462962198971)*x[0]+(-0.989861157039)*x[1]**o+(-0.895147454926)*x[1]+(0.496304718705)*x[2]**o+(0.724664844743)*x[2]  
         s[3,0,0,1]=(-0.152045574171)*x[0]**o+(0.557429298004)*x[0]+(0.172100777056)*x[1]**o+(-0.762302216782)*x[1]+(0.0107560041439)*x[2]**o+(0.0984433240396)*x[2]  
         s[3,0,1,0]=(-0.300572515767)*x[0]**o+(-0.776096822514)*x[0]+(-0.304519070945)*x[1]**o+(0.222039297615)*x[1]+(0.42051246201)*x[2]**o+(0.875929404536)*x[2]  
         s[3,0,1,1]=(-0.832809662655)*x[0]**o+(-0.775869677688)*x[0]+(-0.548130481677)*x[1]**o+(-0.863910117253)*x[1]+(-0.708195298544)*x[2]**o+(-0.895809178957)*x[2]  
         s[3,0,2,0]=(0.417580286092)*x[0]**o+(-0.320463746468)*x[0]+(-0.780326066905)*x[1]**o+(-0.397006341179)*x[1]+(0.575088222676)*x[2]**o+(0.621841867422)*x[2]  
         s[3,0,2,1]=(0.266423263811)*x[0]**o+(0.782081751363)*x[0]+(-0.395723332933)*x[1]**o+(-0.474817183348)*x[1]+(0.483870682109)*x[2]**o+(-0.416708790303)*x[2]  
         s[3,1,0,0]=(0.364336403912)*x[0]**o+(0.4746091186)*x[0]+(0.419745216537)*x[1]**o+(0.906218032598)*x[1]+(-0.561381612354)*x[2]**o+(0.252977998753)*x[2]  
         s[3,1,0,1]=(-0.479065041103)*x[0]**o+(-0.727722678216)*x[0]+(0.298427986755)*x[1]**o+(0.391426108723)*x[1]+(-0.18371001783)*x[2]**o+(-0.298396916251)*x[2]  
         s[3,1,1,0]=(-0.456720853948)*x[0]**o+(-0.137192756988)*x[0]+(0.0387577082772)*x[1]**o+(0.0342816278)*x[1]+(0.287825957753)*x[2]**o+(-0.416093408739)*x[2]  
         s[3,1,1,1]=(-0.157773606009)*x[0]**o+(0.229634478596)*x[0]+(-0.100573203257)*x[1]**o+(-0.791674554355)*x[1]+(0.633139739302)*x[2]**o+(0.53643300369)*x[2]  
         s[3,1,2,0]=(-0.977094714538)*x[0]**o+(-0.980511324919)*x[0]+(-0.996777041114)*x[1]**o+(-0.135014608241)*x[1]+(0.171228488823)*x[2]**o+(-0.826149942234)*x[2]  
         s[3,1,2,1]=(0.40095895971)*x[0]**o+(-0.16005681048)*x[0]+(-0.110948052824)*x[1]**o+(-0.0657272460506)*x[1]+(-0.921326915659)*x[2]**o+(0.498246475577)*x[2]  
         s[3,2,0,0]=(-0.521393633448)*x[0]**o+(-0.442461853948)*x[0]+(0.882466157567)*x[1]**o+(-0.318640196818)*x[1]+(-0.454978258143)*x[2]**o+(-0.146713474073)*x[2]  
         s[3,2,0,1]=(-0.60584665741)*x[0]**o+(0.186330030473)*x[0]+(0.800412347134)*x[1]**o+(0.632355962829)*x[1]+(-0.577489166576)*x[2]**o+(0.288233513083)*x[2]  
         s[3,2,1,0]=(0.645974743024)*x[0]**o+(-0.463548979592)*x[0]+(0.454659333323)*x[1]**o+(-0.147068470329)*x[1]+(0.621612597429)*x[2]**o+(0.309226445731)*x[2]  
         s[3,2,1,1]=(0.142559408818)*x[0]**o+(0.568796102102)*x[0]+(-0.957487822488)*x[1]**o+(0.199695598234)*x[1]+(0.437309500275)*x[2]**o+(-0.608539956732)*x[2]  
         s[3,2,2,0]=(0.814258898685)*x[0]**o+(-0.0657073512095)*x[0]+(-0.675703123952)*x[1]**o+(-0.826924419864)*x[1]+(-0.202583280241)*x[2]**o+(0.556708057646)*x[2]  
         s[3,2,2,1]=(0.420183604639)*x[0]**o+(0.234120268268)*x[0]+(-0.690228330954)*x[1]**o+(0.0742691494912)*x[1]+(-0.542445114625)*x[2]**o+(-0.671138939877)*x[2]  
         s[3,3,0,0]=(-0.327300600039)*x[0]**o+(-0.883120008711)*x[0]+(-0.588356952373)*x[1]**o+(0.964702848682)*x[1]+(0.0983852055922)*x[2]**o+(-0.517082121951)*x[2]  
         s[3,3,0,1]=(0.808391338918)*x[0]**o+(0.413826885405)*x[0]+(-0.781923414495)*x[1]**o+(0.941400794201)*x[1]+(0.566387362748)*x[2]**o+(-0.361926999623)*x[2]  
         s[3,3,1,0]=(0.0408315227595)*x[0]**o+(0.00354329999935)*x[0]+(0.29340210554)*x[1]**o+(-0.129271597771)*x[1]+(0.85418604558)*x[2]**o+(0.972437132596)*x[2]  
         s[3,3,1,1]=(0.488110633719)*x[0]**o+(0.442243578548)*x[0]+(0.491915283822)*x[1]**o+(0.900808596947)*x[1]+(0.872340191832)*x[2]**o+(-0.821189941972)*x[2]  
         s[3,3,2,0]=(0.698445367492)*x[0]**o+(0.235000428999)*x[0]+(0.0231665862971)*x[1]**o+(0.175887750008)*x[1]+(0.285424647457)*x[2]**o+(-0.0889092865387)*x[2]  
         s[3,3,2,1]=(-0.619448487664)*x[0]**o+(-0.25845368795)*x[0]+(0.514713543216)*x[1]**o+(0.933603723018)*x[1]+(0.965553741692)*x[2]**o+(0.775325889348)*x[2]  
         s[3,4,0,0]=(0.653712053876)*x[0]**o+(0.397899343408)*x[0]+(-0.980528220216)*x[1]**o+(0.192768638146)*x[1]+(-0.131961987222)*x[2]**o+(0.294990291948)*x[2]  
         s[3,4,0,1]=(0.519872654154)*x[0]**o+(-0.523923706123)*x[0]+(-0.366056337857)*x[1]**o+(0.587286575656)*x[1]+(0.67858517405)*x[2]**o+(-0.528581733781)*x[2]  
         s[3,4,1,0]=(-0.561163638499)*x[0]**o+(0.834141187099)*x[0]+(0.101344553848)*x[1]**o+(-0.630659721656)*x[1]+(0.177616824366)*x[2]**o+(-0.702449367192)*x[2]  
         s[3,4,1,1]=(0.0594382754162)*x[0]**o+(-0.274398458709)*x[0]+(0.423874245449)*x[1]**o+(0.644709194846)*x[1]+(0.742592384867)*x[2]**o+(-0.00411951621579)*x[2]  
         s[3,4,2,0]=(0.0680763742436)*x[0]**o+(0.718014295363)*x[0]+(0.10166016369)*x[1]**o+(-0.308308565274)*x[1]+(0.529471669819)*x[2]**o+(0.371855430993)*x[2]  
         s[3,4,2,1]=(0.154883537954)*x[0]**o+(-0.727616949065)*x[0]+(0.685560277601)*x[1]**o+(0.0846298021044)*x[1]+(0.284159382541)*x[2]**o+(0.869297635219)*x[2]  
         ref[0,0,0,0]=(0.739396210148)/(o+1.)+(-0.377981671409)+(-0.48893267678)*0.5**o  
         ref[0,0,0,1]=(0.337987859283)/(o+1.)+(-0.185632830775)+(0.271529548298)*0.5**o  
         ref[0,0,1,0]=(0.341117558489)/(o+1.)+(0.285059767111)+(0.217379546035)*0.5**o  
         ref[0,0,1,1]=(-0.0893400826624)/(o+1.)+(0.617738916563)+(0.042921886647)*0.5**o  
         ref[0,0,2,0]=(1.21239011685)/(o+1.)+(-0.720282881042)+(-0.386813522991)*0.5**o  
         ref[0,0,2,1]=(-0.0384313516284)/(o+1.)+(-0.61005148956)+(0.270966465259)*0.5**o  
         ref[0,1,0,0]=(0.327203624676)/(o+1.)+(0.0257361660344)+(0.341922361346)*0.5**o  
         ref[0,1,0,1]=(-0.608485653551)/(o+1.)+(0.196745850885)+(0.232432790902)*0.5**o  
         ref[0,1,1,0]=(-0.0886766370694)/(o+1.)+(0.256118417885)+(-0.0195600321657)*0.5**o  
         ref[0,1,1,1]=(0.773736575857)/(o+1.)+(0.015232876126)+(0.440682443808)*0.5**o  
         ref[0,1,2,0]=(-0.570789204325)/(o+1.)+(-0.896252294196)+(0.0308644963019)*0.5**o  
         ref[0,1,2,1]=(-0.589934257593)/(o+1.)+(0.123692628409)+(0.964064258383)*0.5**o  
         ref[0,2,0,0]=(-0.462322464655)/(o+1.)+(0.161466206488)+(-0.378594793341)*0.5**o  
         ref[0,2,0,1]=(0.870324747287)/(o+1.)+(-0.480877839502)+(-0.24119818585)*0.5**o  
         ref[0,2,1,0]=(-0.958030860186)/(o+1.)+(0.832841870654)+(0.260426222503)*0.5**o  
         ref[0,2,1,1]=(0.119929006158)/(o+1.)+(0.965344805092)+(-0.585208459519)*0.5**o  
         ref[0,2,2,0]=(0.595680154835)/(o+1.)+(0.813013191009)+(0.926784535292)*0.5**o  
         ref[0,2,2,1]=(1.16197298905)/(o+1.)+(-0.0901053305394)+(-0.182330163829)*0.5**o  
         ref[0,3,0,0]=(-0.408748832285)/(o+1.)+(-0.276487805822)+(0.251053015385)*0.5**o  
         ref[0,3,0,1]=(-0.289518113494)/(o+1.)+(0.0472028037384)+(-0.885181589797)*0.5**o  
         ref[0,3,1,0]=(-0.361024485545)/(o+1.)+(0.243370797547)+(0.464501690982)*0.5**o  
         ref[0,3,1,1]=(-0.66248835768)/(o+1.)+(-0.431971169905)+(0.117929836206)*0.5**o  
         ref[0,3,2,0]=(-0.0787999320256)/(o+1.)+(0.0743499551435)+(0.228255426058)*0.5**o  
         ref[0,3,2,1]=(-0.173348259943)/(o+1.)+(-0.561339626579)+(-0.155365105782)*0.5**o  
         ref[0,4,0,0]=(0.611450791476)/(o+1.)+(0.0699376623952)+(-0.913401118579)*0.5**o  
         ref[0,4,0,1]=(0.363891611185)/(o+1.)+(-0.297825521733)+(0.272596166342)*0.5**o  
         ref[0,4,1,0]=(-0.223003610908)/(o+1.)+(-0.392555867216)+(0.469445737741)*0.5**o  
         ref[0,4,1,1]=(0.488828274194)/(o+1.)+(0.310202373415)+(-0.727336869594)*0.5**o  
         ref[0,4,2,0]=(0.445608154304)/(o+1.)+(0.454742158621)+(-0.826661708611)*0.5**o  
         ref[0,4,2,1]=(-0.494084152685)/(o+1.)+(-0.370705122869)+(0.788019130522)*0.5**o  
         ref[1,0,0,0]=(0.243874222094)/(o+1.)+(-0.0689657796687)+(0.251841546653)*0.5**o  
         ref[1,0,0,1]=(0.225779605731)/(o+1.)+(0.0557627886771)+(0.0702543485705)*0.5**o  
         ref[1,0,1,0]=(0.808462226036)/(o+1.)+(0.234303303388)+(0.0132145791001)*0.5**o  
         ref[1,0,1,1]=(-0.999731654372)/(o+1.)+(-0.934144801543)+(0.00555685773193)*0.5**o  
         ref[1,0,2,0]=(-0.919358313974)/(o+1.)+(0.569175866738)+(-0.937628377428)*0.5**o  
         ref[1,0,2,1]=(0.632836035767)/(o+1.)+(-0.146747695134)+(0.0853414413422)*0.5**o  
         ref[1,1,0,0]=(-0.240699629165)/(o+1.)+(0.205847998136)+(-0.197717271419)*0.5**o  
         ref[1,1,0,1]=(-0.498994553932)/(o+1.)+(-0.581995396714)+(0.378319093831)*0.5**o  
         ref[1,1,1,0]=(-0.0907759743431)/(o+1.)+(-0.34174530228)+(-0.0852354427742)*0.5**o  
         ref[1,1,1,1]=(-0.109368603911)/(o+1.)+(0.271666352981)+(0.543079304077)*0.5**o  
         ref[1,1,2,0]=(-1.82714390258)/(o+1.)+(0.259569394828)+(0.163126135652)*0.5**o  
         ref[1,1,2,1]=(0.203325644955)/(o+1.)+(-0.654071049108)+(-0.4311680318)*0.5**o  
         ref[1,2,0,0]=(-1.58035127979)/(o+1.)+(0.720587706977)+(-0.823741968282)*0.5**o  
         ref[1,2,0,1]=(-1.07997010085)/(o+1.)+(-0.47888656161)+(-0.271373691068)*0.5**o  
         ref[1,2,1,0]=(-0.142126140002)/(o+1.)+(-0.599437129629)+(-0.197804966703)*0.5**o  
         ref[1,2,1,1]=(1.28493817222)/(o+1.)+(-0.666958817271)+(0.985473777724)*0.5**o  
         ref[1,2,2,0]=(0.129231092617)/(o+1.)+(-0.663318952006)+(0.0963375474866)*0.5**o  
         ref[1,2,2,1]=(-0.823103301339)/(o+1.)+(0.288695297862)+(-0.000809557040863)*0.5**o  
         ref[1,3,0,0]=(0.960547109599)/(o+1.)+(-0.010684607839)+(-0.450224087014)*0.5**o  
         ref[1,3,0,1]=(0.231548195209)/(o+1.)+(0.138523354402)+(-0.211716554169)*0.5**o  
         ref[1,3,1,0]=(-0.306513590154)/(o+1.)+(-0.280311885684)+(0.469992449976)*0.5**o  
         ref[1,3,1,1]=(-0.438448823496)/(o+1.)+(0.354134551813)+(-0.9202597392)*0.5**o  
         ref[1,3,2,0]=(1.05648399222)/(o+1.)+(0.553601688018)+(0.724283786459)*0.5**o  
         ref[1,3,2,1]=(-1.0341741331)/(o+1.)+(-0.466903042112)+(-0.582421422441)*0.5**o  
         ref[1,4,0,0]=(0.333378315924)/(o+1.)+(-1.30139659371)+(0.268654181239)*0.5**o  
         ref[1,4,0,1]=(-0.594224679128)/(o+1.)+(-0.335931583709)+(-0.526400834988)*0.5**o  
         ref[1,4,1,0]=(-0.478322743296)/(o+1.)+(-0.856712513818)+(0.912742445536)*0.5**o  
         ref[1,4,1,1]=(0.322669808577)/(o+1.)+(1.24907276457)+(0.0912352323191)*0.5**o  
         ref[1,4,2,0]=(1.10714173295)/(o+1.)+(-0.0842589588357)+(-0.212374984853)*0.5**o  
         ref[1,4,2,1]=(-0.504473114993)/(o+1.)+(-0.134995471785)+(-0.192346087265)*0.5**o  
         ref[2,0,0,0]=(0.607594512975)/(o+1.)+(0.111392812114)+(0.646959412154)*0.5**o  
         ref[2,0,0,1]=(-0.59128714023)/(o+1.)+(0.531126996488)+(-0.116490832795)*0.5**o  
         ref[2,0,1,0]=(0.755555640169)/(o+1.)+(0.347463297144)+(-0.656776412474)*0.5**o  
         ref[2,0,1,1]=(0.27040074765)/(o+1.)+(0.0725333822557)+(-0.244997314762)*0.5**o  
         ref[2,0,2,0]=(-0.0846561719678)/(o+1.)+(0.155975979069)+(0.427359531608)*0.5**o  
         ref[2,0,2,1]=(-0.0936195225336)/(o+1.)+(-0.963885329606)+(-0.28054117321)*0.5**o  
         ref[2,1,0,0]=(0.335891086628)/(o+1.)+(-0.166650903111)+(0.832323847638)*0.5**o  
         ref[2,1,0,1]=(-0.10783555167)/(o+1.)+(0.696139278955)+(0.791743274331)*0.5**o  
         ref[2,1,1,0]=(-0.2165713289)/(o+1.)+(0.0948451085032)+(-0.0716642151005)*0.5**o  
         ref[2,1,1,1]=(0.675642828512)/(o+1.)+(0.449412257208)+(-0.487936865731)*0.5**o  
         ref[2,1,2,0]=(-0.69734396291)/(o+1.)+(0.496260410473)+(-0.865760152137)*0.5**o  
         ref[2,1,2,1]=(0.867554325692)/(o+1.)+(0.348418508362)+(-0.550134186201)*0.5**o  
         ref[2,2,0,0]=(-1.05800666595)/(o+1.)+(0.830246146935)+(-0.0191940498302)*0.5**o  
         ref[2,2,0,1]=(-0.254292654192)/(o+1.)+(-0.365591254417)+(-0.593353550722)*0.5**o  
         ref[2,2,1,0]=(-0.400713560372)/(o+1.)+(0.151830485765)+(0.758386313418)*0.5**o  
         ref[2,2,1,1]=(0.617102098568)/(o+1.)+(0.0872825614209)+(-0.0562030350565)*0.5**o  
         ref[2,2,2,0]=(-0.49484415738)/(o+1.)+(-0.684491172613)+(0.632035307709)*0.5**o  
         ref[2,2,2,1]=(0.315837395005)/(o+1.)+(-0.820028413806)+(0.877117460076)*0.5**o  
         ref[2,3,0,0]=(0.644195916625)/(o+1.)+(-0.0916187205818)+(0.868438479199)*0.5**o  
         ref[2,3,0,1]=(-0.603972011476)/(o+1.)+(0.186052835105)+(0.58688914355)*0.5**o  
         ref[2,3,1,0]=(-0.252132020652)/(o+1.)+(0.314692746683)+(-0.491821145506)*0.5**o  
         ref[2,3,1,1]=(-0.969450887263)/(o+1.)+(0.436600133394)+(-0.68076808014)*0.5**o  
         ref[2,3,2,0]=(1.05682018072)/(o+1.)+(-0.579837002982)+(-0.981204168827)*0.5**o  
         ref[2,3,2,1]=(-0.15849056844)/(o+1.)+(0.188100780613)+(-0.979594675181)*0.5**o  
         ref[2,4,0,0]=(0.717068192518)/(o+1.)+(-0.555276844034)+(0.160095467562)*0.5**o  
         ref[2,4,0,1]=(0.310934776087)/(o+1.)+(-0.031025736741)+(0.121233419707)*0.5**o  
         ref[2,4,1,0]=(0.649799777552)/(o+1.)+(0.387426100857)+(-0.327390540088)*0.5**o  
         ref[2,4,1,1]=(0.904573217851)/(o+1.)+(-0.2650756632)+(-0.336090262681)*0.5**o  
         ref[2,4,2,0]=(0.0726050384664)/(o+1.)+(-0.703987913303)+(-0.157686815732)*0.5**o  
         ref[2,4,2,1]=(1.51974394408)/(o+1.)+(0.246226299226)+(-0.591186612156)*0.5**o  
         ref[3,0,0,0]=(-0.493556438334)/(o+1.)+(-0.0620931951433)+(-0.777152282839)*0.5**o  
         ref[3,0,0,1]=(0.1828567812)/(o+1.)+(-0.0532147973691)+(-0.152045574171)*0.5**o  
         ref[3,0,1,0]=(0.115993391065)/(o+1.)+(0.160935939818)+(-0.300572515767)*0.5**o  
         ref[3,0,1,1]=(-1.25632578022)/(o+1.)+(-1.26779448695)+(-0.832809662655)*0.5**o  
         ref[3,0,2,0]=(-0.205237844229)/(o+1.)+(-0.0478141101127)+(0.417580286092)*0.5**o  
         ref[3,0,2,1]=(0.088147349176)/(o+1.)+(-0.0547221111442)+(0.266423263811)*0.5**o  
         ref[3,1,0,0]=(-0.141636395817)/(o+1.)+(0.816902574975)+(0.364336403912)*0.5**o  
         ref[3,1,0,1]=(0.114717968925)/(o+1.)+(-0.317346742872)+(-0.479065041103)*0.5**o  
         ref[3,1,1,0]=(0.32658366603)/(o+1.)+(-0.259502268963)+(-0.456720853948)*0.5**o  
         ref[3,1,1,1]=(0.532566536046)/(o+1.)+(-0.0128035360346)+(-0.157773606009)*0.5**o  
         ref[3,1,2,0]=(-0.825548552291)/(o+1.)+(-0.970837937697)+(-0.977094714538)*0.5**o  
         ref[3,1,2,1]=(-1.03227496848)/(o+1.)+(0.136231209523)+(0.40095895971)*0.5**o  
         ref[3,2,0,0]=(0.427487899424)/(o+1.)+(-0.453907762419)+(-0.521393633448)*0.5**o  
         ref[3,2,0,1]=(0.222923180558)/(o+1.)+(0.553459753192)+(-0.60584665741)*0.5**o  
         ref[3,2,1,0]=(1.07627193075)/(o+1.)+(-0.150695502095)+(0.645974743024)*0.5**o  
         ref[3,2,1,1]=(-0.520178322214)/(o+1.)+(0.0799758718026)+(0.142559408818)*0.5**o  
         ref[3,2,2,0]=(-0.878286404193)/(o+1.)+(-0.167961856714)+(0.814258898685)*0.5**o  
         ref[3,2,2,1]=(-1.23267344558)/(o+1.)+(-0.181374761059)+(0.420183604639)*0.5**o  
         ref[3,3,0,0]=(-0.489971746781)/(o+1.)+(-0.21774964099)+(-0.327300600039)*0.5**o  
         ref[3,3,0,1]=(-0.215536051747)/(o+1.)+(0.496650339992)+(0.808391338918)*0.5**o  
         ref[3,3,1,0]=(1.14758815112)/(o+1.)+(0.423354417412)+(0.0408315227595)*0.5**o  
         ref[3,3,1,1]=(1.36425547565)/(o+1.)+(0.260931116761)+(0.488110633719)*0.5**o  
         ref[3,3,2,0]=(0.308591233754)/(o+1.)+(0.160989446234)+(0.698445367492)*0.5**o  
         ref[3,3,2,1]=(1.48026728491)/(o+1.)+(0.725237962208)+(-0.619448487664)*0.5**o  
         ref[3,4,0,0]=(-1.11249020744)/(o+1.)+(0.442829136751)+(0.653712053876)*0.5**o  
         ref[3,4,0,1]=(0.312528836193)/(o+1.)+(-0.232609432124)+(0.519872654154)*0.5**o  
         ref[3,4,1,0]=(0.278961378214)/(o+1.)+(-0.249483950874)+(-0.561163638499)*0.5**o  
         ref[3,4,1,1]=(1.16646663032)/(o+1.)+(0.183095609961)+(0.0594382754162)*0.5**o  
         ref[3,4,2,0]=(0.631131833509)/(o+1.)+(0.390780580541)+(0.0680763742436)*0.5**o  
         ref[3,4,2,1]=(0.969719660142)/(o+1.)+(0.113155244129)+(0.154883537954)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(4, 5, 3, 2),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onReducedFunctionOnContactZero_fromSymbol_Solution_rank0(self):  
       """  
       tests integral of rank 0 Symbol on the ReducedFunctionOnContactZero  
   
       assumptions: Solution(self.domain) exists  
                    self.domain supports integral on ReducedFunctionOnContactZero  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=ReducedFunctionOnContactZero(self.domain)  
       w=Solution(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=())  
       s=Data(0,(),w)  
       if dim==2:  
         s=(0.551831061348)*x[0]**o+(-0.711823790733)*x[0]+(0.766098862021)*x[1]**o+(0.348439108965)*x[1]  
         ref=(0.766098862021)/(o+1.)+(-0.181692340884)+(0.551831061348)*0.5**o  
       else:  
         s=(-0.534750207803)*x[0]**o+(0.67975160623)*x[0]+(0.747517712959)*x[1]**o+(0.392190678153)*x[1]+(-0.586558763208)*x[2]**o+(0.67325251011)*x[2]  
         ref=(0.160958949751)/(o+1.)+(0.872597397246)+(-0.534750207803)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onReducedFunctionOnContactZero_fromSymbol_Solution_rank1(self):  
       """  
       tests integral of rank 1 Symbol on the ReducedFunctionOnContactZero  
   
       assumptions: Solution(self.domain) exists  
                    self.domain supports integral on ReducedFunctionOnContactZero  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=ReducedFunctionOnContactZero(self.domain)  
       w=Solution(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(2,))  
       s=Data(0,(2,),w)  
       ref=numpy.zeros((2,),numpy.float_)  
       if dim==2:  
         s[0]=(0.824614999579)*x[0]**o+(-0.92501072999)*x[0]+(-0.164852435473)*x[1]**o+(0.625787035398)*x[1]  
         s[1]=(0.933187313904)*x[0]**o+(-0.76410941839)*x[0]+(-0.924559271586)*x[1]**o+(-0.951797707375)*x[1]  
         ref[0]=(-0.164852435473)/(o+1.)+(-0.149611847296)+(0.824614999579)*0.5**o  
         ref[1]=(-0.924559271586)/(o+1.)+(-0.857953562883)+(0.933187313904)*0.5**o  
       else:  
         s[0]=(-0.73247014084)*x[0]**o+(-0.447784692568)*x[0]+(-0.206145797624)*x[1]**o+(0.800549366557)*x[1]+(0.0980004782263)*x[2]**o+(0.68684151518)*x[2]  
         s[1]=(0.734011170766)*x[0]**o+(-0.718028398303)*x[0]+(0.768940123369)*x[1]**o+(0.410156990187)*x[1]+(0.6562835776)*x[2]**o+(-0.899108897402)*x[2]  
         ref[0]=(-0.108145319398)/(o+1.)+(0.519803094585)+(-0.73247014084)*0.5**o  
         ref[1]=(1.42522370097)/(o+1.)+(-0.603490152759)+(0.734011170766)*0.5**o  
       res=integrate(arg,where=w_ref)  
       sub=res.substitute({arg:s})  
       self.assertTrue(isinstance(res,Symbol),"wrong type of result.")  
       self.assertEqual(res.getShape(),(2,),"wrong shape of result.")  
       self.assertTrue(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
    def test_integrate_onReducedFunctionOnContactZero_fromSymbol_Solution_rank2(self):  
       """  
       tests integral of rank 2 Symbol on the ReducedFunctionOnContactZero  
   
       assumptions: Solution(self.domain) exists  
                    self.domain supports integral on ReducedFunctionOnContactZero  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=ReducedFunctionOnContactZero(self.domain)  
       w=Solution(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=(4, 5))  
       s=Data(0,(4, 5),w)  
       ref=numpy.zeros((4, 5),numpy.float_)  
       if dim==2:  
         s[0,0]=(0.860004136579)*x[0]**o+(-0.117366140441)*x[0]+(0.0876424200904)*x[1]**o+(0.0578427219547)*x[1]  
         s[0,1]=(-0.934262599682)*x[0]**o+(-0.834391940774)*x[0]+(-0.37703046074)*x[1]**o+(0.571779357388)*x[1]  
         s[0,2]=(-0.524417646775)*x[0]**o+(-0.562788330473)*x[0]+(-0.454146889642)*x[1]**o+(0.382147150671)*x[1]  
         s[0,3]=(0.53752054491)*x[0]**o+(0.52118522583)*x[0]+(0.196117385249)*x[1]**o+(0.968096844135)*x[1]  
         s[0,4]=(-0.346245303793)*x[0]**o+(0.169183126761)*x[0]+(0.35430553025)*x[1]**o+(-0.1953526461)*x[1]  
         s[1,0]=(0.110897459128)*x[0]**o+(-0.189310140801)*x[0]+(-0.503153929692)*x[1]**o+(-0.776512889143)*x[1]  
         s[1,1]=(0.0773234920212)*x[0]**o+(-0.323298685849)*x[0]+(0.956652842652)*x[1]**o+(-0.834584362886)*x[1]  
         s[1,2]=(0.725330064304)*x[0]**o+(-0.761117907603)*x[0]+(-0.161152622185)*x[1]**o+(0.633185715895)*x[1]  
         s[1,3]=(0.399871656297)*x[0]**o+(-0.831922720579)*x[0]+(0.125957093778)*x[1]**o+(0.909312599897)*x[1]  
         s[1,4]=(0.450333632811)*x[0]**o+(-0.914467685845)*x[0]+(-0.71553040823)*x[1]**o+(-0.806957497854)*x[1]  
         s[2,0]=(-0.596111663177)*x[0]**o+(-0.896500016447)*x[0]+(-0.175137342743)*x[1]**o+(-0.519618663869)*x[1]  
         s[2,1]=(0.219789961005)*x[0]**o+(0.394778437788)*x[0]+(0.516359075868)*x[1]**o+(0.158719123393)*x[1]  
         s[2,2]=(-0.202978715302)*x[0]**o+(0.326528455071)*x[0]+(-0.475802171068)*x[1]**o+(-0.470892970453)*x[1]  
         s[2,3]=(0.34431665114)*x[0]**o+(0.847623303071)*x[0]+(-0.300788565801)*x[1]**o+(0.623946324835)*x[1]  
         s[2,4]=(-0.482716534989)*x[0]**o+(0.610848202802)*x[0]+(-0.618220314271)*x[1]**o+(-0.270417044737)*x[1]  
         s[3,0]=(0.323084711653)*x[0]**o+(0.870297617987)*x[0]+(-0.817231621484)*x[1]**o+(0.599137155405)*x[1]  
         s[3,1]=(-0.464413485909)*x[0]**o+(-0.948296858226)*x[0]+(-0.872776322969)*x[1]**o+(0.0058301771792)*x[1]  
         s[3,2]=(-0.920685763376)*x[0]**o+(-0.429364041758)*x[0]+(0.211630014364)*x[1]**o+(-0.311548404071)*x[1]  
         s[3,3]=(-0.175827412744)*x[0]**o+(-0.687378086381)*x[0]+(0.265852072745)*x[1]**o+(0.799115907363)*x[1]  
         s[3,4]=(-0.99517403847)*x[0]**o+(0.746397561862)*x[0]+(-0.747340816778)*x[1]**o+(-0.57474910244)*x[1]  
         ref[0,0]=(0.0876424200904)/(o+1.)+(-0.0297617092432)+(0.860004136579)*0.5**o  
         ref[0,1]=(-0.37703046074)/(o+1.)+(-0.131306291693)+(-0.934262599682)*0.5**o  
         ref[0,2]=(-0.454146889642)/(o+1.)+(-0.0903205899012)+(-0.524417646775)*0.5**o  
         ref[0,3]=(0.196117385249)/(o+1.)+(0.744641034982)+(0.53752054491)*0.5**o  
         ref[0,4]=(0.35430553025)/(o+1.)+(-0.0130847596698)+(-0.346245303793)*0.5**o  
         ref[1,0]=(-0.503153929692)/(o+1.)+(-0.482911514972)+(0.110897459128)*0.5**o  
         ref[1,1]=(0.956652842652)/(o+1.)+(-0.578941524367)+(0.0773234920212)*0.5**o  
         ref[1,2]=(-0.161152622185)/(o+1.)+(-0.063966095854)+(0.725330064304)*0.5**o  
         ref[1,3]=(0.125957093778)/(o+1.)+(0.0386949396593)+(0.399871656297)*0.5**o  
         ref[1,4]=(-0.71553040823)/(o+1.)+(-0.860712591849)+(0.450333632811)*0.5**o  
         ref[2,0]=(-0.175137342743)/(o+1.)+(-0.708059340158)+(-0.596111663177)*0.5**o  
         ref[2,1]=(0.516359075868)/(o+1.)+(0.27674878059)+(0.219789961005)*0.5**o  
         ref[2,2]=(-0.475802171068)/(o+1.)+(-0.072182257691)+(-0.202978715302)*0.5**o  
         ref[2,3]=(-0.300788565801)/(o+1.)+(0.735784813953)+(0.34431665114)*0.5**o  
         ref[2,4]=(-0.618220314271)/(o+1.)+(0.170215579033)+(-0.482716534989)*0.5**o  
         ref[3,0]=(-0.817231621484)/(o+1.)+(0.734717386696)+(0.323084711653)*0.5**o  
         ref[3,1]=(-0.872776322969)/(o+1.)+(-0.471233340523)+(-0.464413485909)*0.5**o  
         ref[3,2]=(0.211630014364)/(o+1.)+(-0.370456222914)+(-0.920685763376)*0.5**o  
         ref[3,3]=(0.265852072745)/(o+1.)+(0.0558689104915)+(-0.175827412744)*0.5**o  
         ref[3,4]=(-0.747340816778)/(o+1.)+(0.0858242297109)+(-0.99517403847)*0.5**o  
       else:  
         s[0,0]=(0.578101616539)*x[0]**o+(-0.941355465542)*x[0]+(-0.661840086733)*x[1]**o+(-0.574686372209)*x[1]+(-0.488980453488)*x[2]**o+(0.8057154356)*x[2]  
         s[0,1]=(0.188043130009)*x[0]**o+(-0.53795144833)*x[0]+(0.585611542575)*x[1]**o+(-0.394354708911)*x[1]+(-0.753395938984)*x[2]**o+(-0.775038773873)*x[2]  
         s[0,2]=(-0.0069454884707)*x[0]**o+(0.925798676533)*x[0]+(-0.617492289762)*x[1]**o+(-0.412950379597)*x[1]+(0.530650448811)*x[2]**o+(-0.882156765835)*x[2]  
         s[0,3]=(-0.109411491583)*x[0]**o+(0.794417685565)*x[0]+(0.395199315447)*x[1]**o+(0.221963288858)*x[1]+(0.944618017853)*x[2]**o+(0.710576727198)*x[2]  
         s[0,4]=(0.0376370205208)*x[0]**o+(-0.387469327476)*x[0]+(0.989435100596)*x[1]**o+(-0.697198283115)*x[1]+(0.705109597826)*x[2]**o+(0.00235357316422)*x[2]  
         s[1,0]=(-0.861013305772)*x[0]**o+(-0.117175144313)*x[0]+(-0.851114880006)*x[1]**o+(0.830657298231)*x[1]+(0.897872709447)*x[2]**o+(-0.500434787953)*x[2]  
         s[1,1]=(-0.659762659407)*x[0]**o+(-0.293584253789)*x[0]+(-0.549133974878)*x[1]**o+(0.124482383522)*x[1]+(-0.71415106775)*x[2]**o+(-0.452353669527)*x[2]  
         s[1,2]=(-0.944798023011)*x[0]**o+(0.352545190549)*x[0]+(-0.950981266242)*x[1]**o+(-0.338339076366)*x[1]+(-0.385100481358)*x[2]**o+(-0.751511160424)*x[2]  
         s[1,3]=(-0.514889491143)*x[0]**o+(-0.0573778568353)*x[0]+(0.189167569167)*x[1]**o+(-0.122152801538)*x[1]+(-0.075952059447)*x[2]**o+(-0.575271878121)*x[2]  
         s[1,4]=(0.092128759086)*x[0]**o+(-0.391395765897)*x[0]+(0.621302034853)*x[1]**o+(-0.169193910488)*x[1]+(0.895953307228)*x[2]**o+(-0.171715374513)*x[2]  
         s[2,0]=(-0.896341445352)*x[0]**o+(0.55427420625)*x[0]+(-0.68618123058)*x[1]**o+(0.586997200722)*x[1]+(-0.16193062027)*x[2]**o+(0.47614229102)*x[2]