/[escript]/trunk/escript/test/python/test_util_spatial_functions1.py
ViewVC logotype

Diff of /trunk/escript/test/python/test_util_spatial_functions1.py

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

revision 3974 by jfenwick, Thu Jun 14 01:01:03 2012 UTC revision 3975 by caltinay, Thu Sep 20 01:54:06 2012 UTC
# Line 3984  class Test_Util_SpatialFunctions_noGradO Line 3984  class Test_Util_SpatialFunctions_noGradO
3984        self.assertEqual(res.shape,(4, 5, 3, 2),"wrong shape of result.")        self.assertEqual(res.shape,(4, 5, 3, 2),"wrong shape of result.")
3985        self.assertTrue(Lsup(res-ref)<=self.RES_TOL*Lsup(ref),"wrong result")        self.assertTrue(Lsup(res-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
3986     #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++     #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    def test_integrate_onFunction_fromSymbol_ContinuousFunction_rank0(self):  
       """  
       tests integral of rank 0 Symbol on the Function  
   
       assumptions: ContinuousFunction(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=Function(self.domain)  
       w=ContinuousFunction(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=())  
       s=Data(0,(),w)  
       if dim==2:  
         s=(-0.640162884104)*x[0]**o+(-0.686170347303)*x[0]+(0.0531418393824)*x[1]**o+(-0.0288840863965)*x[1]  
         ref=(-0.587021044721)/(o+1.)+(-0.35752721685)  
       else:  
         s=(0.835059122976)*x[0]**o+(-0.876192510448)*x[0]+(0.229125107737)*x[1]**o+(-0.378923833918)*x[1]+(0.734383439043)*x[2]**o+(0.987756783011)*x[2]  
         ref=(1.79856766975)/(o+1.)+(-0.133679780678)  
       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_onFunction_fromSymbol_ContinuousFunction_rank1(self):  
       """  
       tests integral of rank 1 Symbol on the Function  
   
       assumptions: ContinuousFunction(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=Function(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.292137623974)*x[0]**o+(0.75950865395)*x[0]+(-0.205837757637)*x[1]**o+(0.90443054103)*x[1]  
         s[1]=(0.407997882771)*x[0]**o+(0.335693471916)*x[0]+(0.755336837856)*x[1]**o+(0.218679559306)*x[1]  
         ref[0]=(-0.497975381612)/(o+1.)+(0.83196959749)  
         ref[1]=(1.16333472063)/(o+1.)+(0.277186515611)  
       else:  
         s[0]=(-0.393835090841)*x[0]**o+(-0.474828597107)*x[0]+(0.465782088981)*x[1]**o+(-0.882630637032)*x[1]+(0.849599914303)*x[2]**o+(0.737421732808)*x[2]  
         s[1]=(-0.589146617652)*x[0]**o+(-0.412139119114)*x[0]+(0.970406630484)*x[1]**o+(0.363942463909)*x[1]+(-0.372574721521)*x[2]**o+(-0.798081163974)*x[2]  
         ref[0]=(0.921546912444)/(o+1.)+(-0.310018750665)  
         ref[1]=(0.00868529131054)/(o+1.)+(-0.42313890959)  
       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_onFunction_fromSymbol_ContinuousFunction_rank2(self):  
       """  
       tests integral of rank 2 Symbol on the Function  
   
       assumptions: ContinuousFunction(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=Function(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.542564643665)*x[0]**o+(0.869139399504)*x[0]+(-0.918464318956)*x[1]**o+(0.258557879364)*x[1]  
         s[0,1]=(0.797108788422)*x[0]**o+(-0.200368785173)*x[0]+(-0.518597299854)*x[1]**o+(-0.647852667874)*x[1]  
         s[0,2]=(0.692223658744)*x[0]**o+(-0.103586429107)*x[0]+(0.282165531986)*x[1]**o+(-0.191815912482)*x[1]  
         s[0,3]=(-0.370167730862)*x[0]**o+(-0.822713005318)*x[0]+(-0.00317012401339)*x[1]**o+(-0.848121245241)*x[1]  
         s[0,4]=(-0.52733376174)*x[0]**o+(-0.314966701977)*x[0]+(0.755974759737)*x[1]**o+(-0.483207203205)*x[1]  
         s[1,0]=(-0.709714610043)*x[0]**o+(0.647231907198)*x[0]+(-0.577474021122)*x[1]**o+(-0.124504757353)*x[1]  
         s[1,1]=(-0.723690611716)*x[0]**o+(-0.617424586153)*x[0]+(-0.536447933353)*x[1]**o+(0.255892253884)*x[1]  
         s[1,2]=(-0.201052994401)*x[0]**o+(-0.519971533366)*x[0]+(0.515314592901)*x[1]**o+(0.831783913039)*x[1]  
         s[1,3]=(0.505769313912)*x[0]**o+(-0.460235423669)*x[0]+(0.982458353968)*x[1]**o+(0.479022475503)*x[1]  
         s[1,4]=(0.624910824579)*x[0]**o+(0.563956018517)*x[0]+(0.0129379080194)*x[1]**o+(-0.634601977633)*x[1]  
         s[2,0]=(-0.765921383834)*x[0]**o+(0.0199045688425)*x[0]+(-0.0666443330576)*x[1]**o+(-0.929035862007)*x[1]  
         s[2,1]=(0.698423948822)*x[0]**o+(-0.529311289681)*x[0]+(-0.563339072497)*x[1]**o+(-0.494985449663)*x[1]  
         s[2,2]=(0.101812328764)*x[0]**o+(-0.922547259485)*x[0]+(-0.45388897835)*x[1]**o+(0.357458826452)*x[1]  
         s[2,3]=(0.643691149734)*x[0]**o+(-0.791395473264)*x[0]+(-0.919285047298)*x[1]**o+(-0.732314921151)*x[1]  
         s[2,4]=(0.770509137995)*x[0]**o+(-0.399023743738)*x[0]+(-0.0887239237676)*x[1]**o+(0.846766840231)*x[1]  
         s[3,0]=(-0.258188916476)*x[0]**o+(-0.192762172857)*x[0]+(-0.291360534186)*x[1]**o+(-0.828483492861)*x[1]  
         s[3,1]=(-0.180563503871)*x[0]**o+(0.411356882323)*x[0]+(0.144166964346)*x[1]**o+(-0.817750491386)*x[1]  
         s[3,2]=(-0.56008111033)*x[0]**o+(-0.903908126304)*x[0]+(-0.795710525329)*x[1]**o+(0.42957467817)*x[1]  
         s[3,3]=(-0.435823321725)*x[0]**o+(-0.687506280092)*x[0]+(0.512172892719)*x[1]**o+(0.624268656549)*x[1]  
         s[3,4]=(0.0995998270974)*x[0]**o+(0.54337587883)*x[0]+(-0.589282344971)*x[1]**o+(0.551709444954)*x[1]  
         ref[0,0]=(-0.375899675291)/(o+1.)+(0.563848639434)  
         ref[0,1]=(0.278511488568)/(o+1.)+(-0.424110726524)  
         ref[0,2]=(0.97438919073)/(o+1.)+(-0.147701170794)  
         ref[0,3]=(-0.373337854876)/(o+1.)+(-0.835417125279)  
         ref[0,4]=(0.228640997997)/(o+1.)+(-0.399086952591)  
         ref[1,0]=(-1.28718863116)/(o+1.)+(0.261363574923)  
         ref[1,1]=(-1.26013854507)/(o+1.)+(-0.180766166134)  
         ref[1,2]=(0.3142615985)/(o+1.)+(0.155906189837)  
         ref[1,3]=(1.48822766788)/(o+1.)+(0.00939352591692)  
         ref[1,4]=(0.637848732599)/(o+1.)+(-0.0353229795581)  
         ref[2,0]=(-0.832565716891)/(o+1.)+(-0.454565646582)  
         ref[2,1]=(0.135084876326)/(o+1.)+(-0.512148369672)  
         ref[2,2]=(-0.352076649587)/(o+1.)+(-0.282544216517)  
         ref[2,3]=(-0.275593897564)/(o+1.)+(-0.761855197208)  
         ref[2,4]=(0.681785214228)/(o+1.)+(0.223871548247)  
         ref[3,0]=(-0.549549450662)/(o+1.)+(-0.510622832859)  
         ref[3,1]=(-0.0363965395244)/(o+1.)+(-0.203196804532)  
         ref[3,2]=(-1.35579163566)/(o+1.)+(-0.237166724067)  
         ref[3,3]=(0.0763495709944)/(o+1.)+(-0.0316188117717)  
         ref[3,4]=(-0.489682517873)/(o+1.)+(0.547542661892)  
       else:  
         s[0,0]=(-0.547777970569)*x[0]**o+(-0.644569779184)*x[0]+(-0.247447574507)*x[1]**o+(-0.165674972238)*x[1]+(0.492011982518)*x[2]**o+(0.824373100652)*x[2]  
         s[0,1]=(0.714120627471)*x[0]**o+(-0.343344240726)*x[0]+(0.846874965081)*x[1]**o+(0.955417725709)*x[1]+(-0.462347625853)*x[2]**o+(0.236518016678)*x[2]  
         s[0,2]=(0.649286582806)*x[0]**o+(-0.712764590386)*x[0]+(-0.364435855331)*x[1]**o+(0.529624579838)*x[1]+(-0.478005452391)*x[2]**o+(0.79676822654)*x[2]  
         s[0,3]=(0.186538430487)*x[0]**o+(0.873009863028)*x[0]+(-0.617246224023)*x[1]**o+(0.212670710234)*x[1]+(-0.568924203263)*x[2]**o+(-0.591868989872)*x[2]  
         s[0,4]=(0.0764403834746)*x[0]**o+(0.580116472215)*x[0]+(-0.964832163438)*x[1]**o+(0.146621202039)*x[1]+(0.303667547632)*x[2]**o+(-0.572109268772)*x[2]  
         s[1,0]=(0.0466497527173)*x[0]**o+(-0.660397185235)*x[0]+(0.314235627776)*x[1]**o+(-0.0219053335847)*x[1]+(0.0341017375209)*x[2]**o+(-0.138388505919)*x[2]  
         s[1,1]=(-0.306253609605)*x[0]**o+(-0.274894845016)*x[0]+(0.590915613652)*x[1]**o+(0.466423547973)*x[1]+(-0.65224024787)*x[2]**o+(0.011478276889)*x[2]  
         s[1,2]=(-0.850811667442)*x[0]**o+(-0.362611692783)*x[0]+(-0.132198189858)*x[1]**o+(0.613225855964)*x[1]+(-0.995844863385)*x[2]**o+(-0.00228774595319)*x[2]  
         s[1,3]=(-0.331021120468)*x[0]**o+(0.262316324101)*x[0]+(0.693647465307)*x[1]**o+(-0.758663328061)*x[1]+(0.563291863323)*x[2]**o+(-0.464786381036)*x[2]  
         s[1,4]=(-0.297063926313)*x[0]**o+(0.258694451069)*x[0]+(0.453986223203)*x[1]**o+(0.516652862875)*x[1]+(-0.119453447306)*x[2]**o+(0.13369866553)*x[2]  
         s[2,0]=(0.895304992051)*x[0]**o+(-0.581521556328)*x[0]+(-0.102534354406)*x[1]**o+(-0.312191328622)*x[1]+(0.00625028874943)*x[2]**o+(0.455967398752)*x[2]  
         s[2,1]=(0.0129094351309)*x[0]**o+(-0.284360799298)*x[0]+(0.254610787505)*x[1]**o+(0.232923077121)*x[1]+(0.884382417671)*x[2]**o+(0.879710026011)*x[2]  
         s[2,2]=(0.978354808904)*x[0]**o+(0.45417061753)*x[0]+(-0.617831296441)*x[1]**o+(-0.540161947193)*x[1]+(0.749817874967)*x[2]**o+(0.85276098284)*x[2]  
         s[2,3]=(0.790036783517)*x[0]**o+(-0.461944315129)*x[0]+(0.0177930616139)*x[1]**o+(0.827267186021)*x[1]+(-0.5681970366)*x[2]**o+(0.0800529373343)*x[2]  
         s[2,4]=(0.320372577784)*x[0]**o+(-0.988843069534)*x[0]+(0.366830399498)*x[1]**o+(0.0749365557309)*x[1]+(-0.964416326732)*x[2]**o+(0.0589434543979)*x[2]  
         s[3,0]=(-0.143156890467)*x[0]**o+(0.665143613007)*x[0]+(0.324524292861)*x[1]**o+(0.573292071297)*x[1]+(0.55975986068)*x[2]**o+(-0.703161304253)*x[2]  
         s[3,1]=(0.827768123756)*x[0]**o+(-0.565184841493)*x[0]+(0.724124619351)*x[1]**o+(-0.375933144184)*x[1]+(-0.186573364344)*x[2]**o+(0.174303241336)*x[2]  
         s[3,2]=(0.19505934899)*x[0]**o+(-0.378308488179)*x[0]+(-0.542115440091)*x[1]**o+(-0.864956237152)*x[1]+(0.0489116293809)*x[2]**o+(0.149786871599)*x[2]  
         s[3,3]=(-0.151225736973)*x[0]**o+(-0.491229793833)*x[0]+(-0.704529608083)*x[1]**o+(-0.790051884866)*x[1]+(-0.202633581578)*x[2]**o+(0.0769118984781)*x[2]  
         s[3,4]=(0.523527337562)*x[0]**o+(0.266094832079)*x[0]+(-0.147028009699)*x[1]**o+(-0.683770701764)*x[1]+(0.794443408406)*x[2]**o+(-0.0536824425549)*x[2]  
         ref[0,0]=(-0.303213562559)/(o+1.)+(0.00706417461518)  
         ref[0,1]=(1.0986479667)/(o+1.)+(0.42429575083)  
         ref[0,2]=(-0.193154724916)/(o+1.)+(0.306814107996)  
         ref[0,3]=(-0.999631996799)/(o+1.)+(0.246905791695)  
         ref[0,4]=(-0.584724232331)/(o+1.)+(0.0773142027411)  
         ref[1,0]=(0.394987118014)/(o+1.)+(-0.410345512369)  
         ref[1,1]=(-0.367578243823)/(o+1.)+(0.101503489923)  
         ref[1,2]=(-1.97885472069)/(o+1.)+(0.124163208614)  
         ref[1,3]=(0.925918208162)/(o+1.)+(-0.480566692498)  
         ref[1,4]=(0.0374688495844)/(o+1.)+(0.454522989737)  
         ref[2,0]=(0.799020926395)/(o+1.)+(-0.218872743099)  
         ref[2,1]=(1.15190264031)/(o+1.)+(0.414136151917)  
         ref[2,2]=(1.11034138743)/(o+1.)+(0.383384826588)  
         ref[2,3]=(0.239632808531)/(o+1.)+(0.222687904113)  
         ref[2,4]=(-0.27721334945)/(o+1.)+(-0.427481529703)  
         ref[3,0]=(0.741127263073)/(o+1.)+(0.267637190026)  
         ref[3,1]=(1.36531937876)/(o+1.)+(-0.383407372171)  
         ref[3,2]=(-0.29814446172)/(o+1.)+(-0.546738926866)  
         ref[3,3]=(-1.05838892663)/(o+1.)+(-0.602184890111)  
         ref[3,4]=(1.17094273627)/(o+1.)+(-0.23567915612)  
       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_onFunction_fromSymbol_ContinuousFunction_rank3(self):  
       """  
       tests integral of rank 3 Symbol on the Function  
   
       assumptions: ContinuousFunction(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=Function(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.630010583318)*x[0]**o+(0.0494796640212)*x[0]+(0.471665362166)*x[1]**o+(0.392459033784)*x[1]  
         s[0,0,1]=(-0.423295675063)*x[0]**o+(0.24240367131)*x[0]+(-0.724581249901)*x[1]**o+(-0.131295119605)*x[1]  
         s[0,1,0]=(-0.410928342692)*x[0]**o+(-0.541418037237)*x[0]+(-0.232546576693)*x[1]**o+(-0.0784119675747)*x[1]  
         s[0,1,1]=(0.789988066595)*x[0]**o+(-0.243498836345)*x[0]+(0.368561675765)*x[1]**o+(-0.747610528524)*x[1]  
         s[1,0,0]=(-0.326293541804)*x[0]**o+(0.101066389163)*x[0]+(-0.184367851)*x[1]**o+(0.568769737008)*x[1]  
         s[1,0,1]=(-0.015503180143)*x[0]**o+(0.819464848547)*x[0]+(0.979976262017)*x[1]**o+(-0.0389216169058)*x[1]  
         s[1,1,0]=(-0.542766421816)*x[0]**o+(-0.373053336375)*x[0]+(-0.938010294052)*x[1]**o+(-0.399667401896)*x[1]  
         s[1,1,1]=(0.0200936228416)*x[0]**o+(0.770519603961)*x[0]+(0.620955090369)*x[1]**o+(-0.330894822252)*x[1]  
         s[2,0,0]=(-0.171145765903)*x[0]**o+(0.612313985433)*x[0]+(0.0479528062441)*x[1]**o+(-0.281058939492)*x[1]  
         s[2,0,1]=(-0.332826833153)*x[0]**o+(0.944629304493)*x[0]+(-0.487576018254)*x[1]**o+(-0.904875326977)*x[1]  
         s[2,1,0]=(-0.00808555466364)*x[0]**o+(0.245367446684)*x[0]+(-0.164397692869)*x[1]**o+(-0.198574049753)*x[1]  
         s[2,1,1]=(-0.0469077421177)*x[0]**o+(0.89449436367)*x[0]+(-0.802161009378)*x[1]**o+(-0.0767107312174)*x[1]  
         s[3,0,0]=(0.530561159497)*x[0]**o+(-0.0909174483134)*x[0]+(0.159443779335)*x[1]**o+(-0.178020813545)*x[1]  
         s[3,0,1]=(-0.216531776351)*x[0]**o+(-0.531806095078)*x[0]+(0.653531437331)*x[1]**o+(0.21339193674)*x[1]  
         s[3,1,0]=(0.254391857637)*x[0]**o+(0.619393713071)*x[0]+(-0.260306661561)*x[1]**o+(-0.473743696717)*x[1]  
         s[3,1,1]=(-0.921367458187)*x[0]**o+(-0.69212037605)*x[0]+(0.6216551239)*x[1]**o+(0.7963578436)*x[1]  
         s[4,0,0]=(-0.506208138693)*x[0]**o+(-0.103718686465)*x[0]+(0.771724985573)*x[1]**o+(0.815749872065)*x[1]  
         s[4,0,1]=(-0.21355375924)*x[0]**o+(0.635638481649)*x[0]+(0.274581141313)*x[1]**o+(-0.947357183419)*x[1]  
         s[4,1,0]=(0.35658463006)*x[0]**o+(-0.351876832623)*x[0]+(-0.0999414279107)*x[1]**o+(0.212979499129)*x[1]  
         s[4,1,1]=(0.494190940488)*x[0]**o+(0.0851596543145)*x[0]+(-0.433440340709)*x[1]**o+(-0.0173667523032)*x[1]  
         s[5,0,0]=(0.53169691054)*x[0]**o+(0.952395156793)*x[0]+(-0.127903378991)*x[1]**o+(-0.605192547481)*x[1]  
         s[5,0,1]=(0.795535841954)*x[0]**o+(-0.615332450079)*x[0]+(0.764586784938)*x[1]**o+(0.420251114523)*x[1]  
         s[5,1,0]=(-0.699722370082)*x[0]**o+(0.608404015259)*x[0]+(-0.166384830092)*x[1]**o+(-0.0611871373695)*x[1]  
         s[5,1,1]=(0.545721411662)*x[0]**o+(-0.426115151805)*x[0]+(-0.438291880099)*x[1]**o+(0.0686028790393)*x[1]  
         ref[0,0,0]=(1.10167594548)/(o+1.)+(0.220969348903)  
         ref[0,0,1]=(-1.14787692496)/(o+1.)+(0.055554275852)  
         ref[0,1,0]=(-0.643474919385)/(o+1.)+(-0.309915002406)  
         ref[0,1,1]=(1.15854974236)/(o+1.)+(-0.495554682434)  
         ref[1,0,0]=(-0.510661392804)/(o+1.)+(0.334918063085)  
         ref[1,0,1]=(0.964473081874)/(o+1.)+(0.390271615821)  
         ref[1,1,0]=(-1.48077671587)/(o+1.)+(-0.386360369136)  
         ref[1,1,1]=(0.64104871321)/(o+1.)+(0.219812390854)  
         ref[2,0,0]=(-0.123192959659)/(o+1.)+(0.16562752297)  
         ref[2,0,1]=(-0.820402851406)/(o+1.)+(0.0198769887578)  
         ref[2,1,0]=(-0.172483247533)/(o+1.)+(0.0233966984659)  
         ref[2,1,1]=(-0.849068751496)/(o+1.)+(0.408891816226)  
         ref[3,0,0]=(0.690004938832)/(o+1.)+(-0.134469130929)  
         ref[3,0,1]=(0.43699966098)/(o+1.)+(-0.159207079169)  
         ref[3,1,0]=(-0.00591480392415)/(o+1.)+(0.0728250081768)  
         ref[3,1,1]=(-0.299712334287)/(o+1.)+(0.0521187337749)  
         ref[4,0,0]=(0.265516846879)/(o+1.)+(0.3560155928)  
         ref[4,0,1]=(0.0610273820724)/(o+1.)+(-0.155859350885)  
         ref[4,1,0]=(0.256643202149)/(o+1.)+(-0.0694486667468)  
         ref[4,1,1]=(0.0607505997785)/(o+1.)+(0.0338964510057)  
         ref[5,0,0]=(0.403793531549)/(o+1.)+(0.173601304656)  
         ref[5,0,1]=(1.56012262689)/(o+1.)+(-0.0975406677777)  
         ref[5,1,0]=(-0.866107200175)/(o+1.)+(0.273608438945)  
         ref[5,1,1]=(0.107429531563)/(o+1.)+(-0.178756136383)  
       else:  
         s[0,0,0]=(0.584550224653)*x[0]**o+(-0.106569322848)*x[0]+(0.728893354651)*x[1]**o+(0.237029650377)*x[1]+(-0.546491966553)*x[2]**o+(0.0390698430932)*x[2]  
         s[0,0,1]=(0.0636227774465)*x[0]**o+(0.934881844205)*x[0]+(-0.545166942655)*x[1]**o+(0.08148757249)*x[1]+(-0.179461185461)*x[2]**o+(0.641018091939)*x[2]  
         s[0,1,0]=(0.325463516488)*x[0]**o+(-0.620730155784)*x[0]+(0.154991661017)*x[1]**o+(0.245046216313)*x[1]+(0.645726837044)*x[2]**o+(-0.230093713841)*x[2]  
         s[0,1,1]=(-0.321016164146)*x[0]**o+(-0.0509943423674)*x[0]+(-0.479999557029)*x[1]**o+(0.569709724552)*x[1]+(0.190221146753)*x[2]**o+(-0.919477787005)*x[2]  
         s[1,0,0]=(0.929113150774)*x[0]**o+(-0.733802947668)*x[0]+(0.8108269457)*x[1]**o+(-0.488163027335)*x[1]+(-0.745575620351)*x[2]**o+(-0.486955144862)*x[2]  
         s[1,0,1]=(-0.017329684129)*x[0]**o+(0.147982077718)*x[0]+(-0.144958156543)*x[1]**o+(-0.300572864309)*x[1]+(0.00787918928353)*x[2]**o+(-0.532824168573)*x[2]  
         s[1,1,0]=(0.685828903913)*x[0]**o+(-0.567114040704)*x[0]+(-0.0471407827804)*x[1]**o+(0.511415127351)*x[1]+(-0.554086444893)*x[2]**o+(-0.226435378121)*x[2]  
         s[1,1,1]=(-0.415793464117)*x[0]**o+(-0.777707665965)*x[0]+(-0.846630968003)*x[1]**o+(0.389596880295)*x[1]+(-0.213682650766)*x[2]**o+(-0.0851017843465)*x[2]  
         s[2,0,0]=(0.932561239744)*x[0]**o+(0.0615709255597)*x[0]+(0.634288279118)*x[1]**o+(0.293277319848)*x[1]+(-0.429481015254)*x[2]**o+(0.778577347672)*x[2]  
         s[2,0,1]=(0.857123773566)*x[0]**o+(-0.47446916241)*x[0]+(0.951211790713)*x[1]**o+(0.443028899356)*x[1]+(0.0861361311835)*x[2]**o+(0.597277083437)*x[2]  
         s[2,1,0]=(0.874693704519)*x[0]**o+(-0.920294692148)*x[0]+(-0.03228863342)*x[1]**o+(0.248843294667)*x[1]+(-0.926343823806)*x[2]**o+(0.15109837142)*x[2]  
         s[2,1,1]=(0.840368685645)*x[0]**o+(-0.200563324888)*x[0]+(0.88039674632)*x[1]**o+(-0.349512401298)*x[1]+(0.25915053789)*x[2]**o+(-0.48356523029)*x[2]  
         s[3,0,0]=(0.758393510867)*x[0]**o+(0.666093057943)*x[0]+(-0.453617931299)*x[1]**o+(-0.134152843992)*x[1]+(-0.0117598390465)*x[2]**o+(-0.730981155782)*x[2]  
         s[3,0,1]=(0.205572845432)*x[0]**o+(0.46935055342)*x[0]+(-0.415086164167)*x[1]**o+(0.276709685737)*x[1]+(0.341889576347)*x[2]**o+(0.170610214566)*x[2]  
         s[3,1,0]=(0.926107056617)*x[0]**o+(-0.928101461122)*x[0]+(-0.639162904468)*x[1]**o+(-0.787501002441)*x[1]+(0.615156638997)*x[2]**o+(0.444030323472)*x[2]  
         s[3,1,1]=(0.458304153272)*x[0]**o+(0.119383772473)*x[0]+(-0.816833779036)*x[1]**o+(0.428980054603)*x[1]+(0.176196071727)*x[2]**o+(0.294498083663)*x[2]  
         s[4,0,0]=(-0.184477855098)*x[0]**o+(-0.281312358692)*x[0]+(-0.259869292769)*x[1]**o+(0.670877642172)*x[1]+(0.710140723846)*x[2]**o+(-0.738455024569)*x[2]  
         s[4,0,1]=(0.790994543706)*x[0]**o+(0.594490423343)*x[0]+(0.737641957747)*x[1]**o+(-0.974154697219)*x[1]+(-0.228328212417)*x[2]**o+(-0.870422565759)*x[2]  
         s[4,1,0]=(0.538277719545)*x[0]**o+(0.0405414212643)*x[0]+(-0.340695322783)*x[1]**o+(-0.925052511534)*x[1]+(0.77026668428)*x[2]**o+(0.872129470246)*x[2]  
         s[4,1,1]=(0.35315629997)*x[0]**o+(-0.581808852999)*x[0]+(-0.506082324541)*x[1]**o+(-0.979298372486)*x[1]+(0.269130557602)*x[2]**o+(0.0297188290624)*x[2]  
         s[5,0,0]=(0.13627346547)*x[0]**o+(-0.634005099347)*x[0]+(0.413163361533)*x[1]**o+(-0.445924057754)*x[1]+(0.317763103856)*x[2]**o+(-0.0934833794122)*x[2]  
         s[5,0,1]=(0.775864446863)*x[0]**o+(0.647005517482)*x[0]+(-0.922488575786)*x[1]**o+(0.592973645448)*x[1]+(0.752015212966)*x[2]**o+(-0.700335290015)*x[2]  
         s[5,1,0]=(0.376707292205)*x[0]**o+(-0.185352369466)*x[0]+(0.701616000772)*x[1]**o+(-0.496738161848)*x[1]+(-0.722103675479)*x[2]**o+(-0.124090359996)*x[2]  
         s[5,1,1]=(-0.070302198698)*x[0]**o+(-0.701418359643)*x[0]+(0.131136807633)*x[1]**o+(-0.0581346703562)*x[1]+(0.378664686889)*x[2]**o+(0.785268912587)*x[2]  
         ref[0,0,0]=(0.766951612751)/(o+1.)+(0.0847650853109)  
         ref[0,0,1]=(-0.66100535067)/(o+1.)+(0.828693754317)  
         ref[0,1,0]=(1.12618201455)/(o+1.)+(-0.302888826656)  
         ref[0,1,1]=(-0.610794574422)/(o+1.)+(-0.20038120241)  
         ref[1,0,0]=(0.994364476124)/(o+1.)+(-0.854460559932)  
         ref[1,0,1]=(-0.154408651388)/(o+1.)+(-0.342707477582)  
         ref[1,1,0]=(0.0846016762395)/(o+1.)+(-0.141067145737)  
         ref[1,1,1]=(-1.47610708289)/(o+1.)+(-0.236606285008)  
         ref[2,0,0]=(1.13736850361)/(o+1.)+(0.56671279654)  
         ref[2,0,1]=(1.89447169546)/(o+1.)+(0.282918410191)  
         ref[2,1,0]=(-0.0839387527076)/(o+1.)+(-0.260176513031)  
         ref[2,1,1]=(1.97991596985)/(o+1.)+(-0.516820478238)  
         ref[3,0,0]=(0.293015740521)/(o+1.)+(-0.0995204709152)  
         ref[3,0,1]=(0.132376257612)/(o+1.)+(0.458335226861)  
         ref[3,1,0]=(0.902100791146)/(o+1.)+(-0.635786070046)  
         ref[3,1,1]=(-0.182333554037)/(o+1.)+(0.421430955369)  
         ref[4,0,0]=(0.265793575979)/(o+1.)+(-0.174444870545)  
         ref[4,0,1]=(1.30030828904)/(o+1.)+(-0.625043419818)  
         ref[4,1,0]=(0.967849081042)/(o+1.)+(-0.00619081001188)  
         ref[4,1,1]=(0.116204533031)/(o+1.)+(-0.765694198211)  
         ref[5,0,0]=(0.867199930859)/(o+1.)+(-0.586706268257)  
         ref[5,0,1]=(0.605391084042)/(o+1.)+(0.269821936457)  
         ref[5,1,0]=(0.356219617498)/(o+1.)+(-0.403090445655)  
         ref[5,1,1]=(0.439499295823)/(o+1.)+(0.0128579412935)  
       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_onFunction_fromSymbol_ContinuousFunction_rank4(self):  
       """  
       tests integral of rank 4 Symbol on the Function  
   
       assumptions: ContinuousFunction(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=Function(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.904602515522)*x[0]**o+(-0.371521279208)*x[0]+(-0.452933934201)*x[1]**o+(-0.202117873586)*x[1]  
         s[0,0,0,1]=(0.046504512522)*x[0]**o+(-0.23169139456)*x[0]+(0.260745907068)*x[1]**o+(-0.280939854842)*x[1]  
         s[0,0,1,0]=(0.150287081226)*x[0]**o+(-0.62438094501)*x[0]+(-0.617182852213)*x[1]**o+(0.0366613552193)*x[1]  
         s[0,0,1,1]=(0.0710288489579)*x[0]**o+(-0.111273065295)*x[0]+(0.41817519756)*x[1]**o+(0.792759228517)*x[1]  
         s[0,0,2,0]=(-0.00835504723814)*x[0]**o+(-0.928910786463)*x[0]+(-0.830115466368)*x[1]**o+(0.117896100163)*x[1]  
         s[0,0,2,1]=(0.178088696257)*x[0]**o+(0.378404605517)*x[0]+(-0.0609283403081)*x[1]**o+(-0.0543695218661)*x[1]  
         s[0,1,0,0]=(-0.0689997578822)*x[0]**o+(-0.632975314677)*x[0]+(0.817036198517)*x[1]**o+(0.83235818794)*x[1]  
         s[0,1,0,1]=(0.307747809333)*x[0]**o+(-0.119316653583)*x[0]+(-0.962502450634)*x[1]**o+(0.730005736334)*x[1]  
         s[0,1,1,0]=(0.474932601365)*x[0]**o+(-0.672778327766)*x[0]+(0.0931366097943)*x[1]**o+(0.441430893263)*x[1]  
         s[0,1,1,1]=(-0.688077109622)*x[0]**o+(-0.0904781446959)*x[0]+(0.75334586689)*x[1]**o+(0.64166855195)*x[1]  
         s[0,1,2,0]=(-0.445313569413)*x[0]**o+(0.0860176511221)*x[0]+(0.816569466868)*x[1]**o+(-0.716517326506)*x[1]  
         s[0,1,2,1]=(-0.282441352341)*x[0]**o+(-0.63704220861)*x[0]+(-0.0493662512733)*x[1]**o+(0.568004633808)*x[1]  
         s[0,2,0,0]=(-0.39629286578)*x[0]**o+(-0.930416708861)*x[0]+(0.426475002251)*x[1]**o+(-0.156685168112)*x[1]  
         s[0,2,0,1]=(-0.932671691096)*x[0]**o+(-0.918584855074)*x[0]+(0.820320229167)*x[1]**o+(0.39108460143)*x[1]  
         s[0,2,1,0]=(0.904161654788)*x[0]**o+(0.580424354995)*x[0]+(0.901999297026)*x[1]**o+(0.16227344306)*x[1]  
         s[0,2,1,1]=(0.80438774629)*x[0]**o+(0.132549332211)*x[0]+(0.799348114478)*x[1]**o+(-0.22361807585)*x[1]  
         s[0,2,2,0]=(-0.561135188306)*x[0]**o+(0.584405140552)*x[0]+(0.655074058246)*x[1]**o+(0.145893780708)*x[1]  
         s[0,2,2,1]=(-0.252147320901)*x[0]**o+(0.798853343056)*x[0]+(0.615093018404)*x[1]**o+(0.394704774949)*x[1]  
         s[0,3,0,0]=(0.36142643768)*x[0]**o+(0.307386971305)*x[0]+(-0.294243769289)*x[1]**o+(-0.516116390793)*x[1]  
         s[0,3,0,1]=(-0.258524392445)*x[0]**o+(-0.955667526515)*x[0]+(-0.268164834645)*x[1]**o+(-0.0982143901681)*x[1]  
         s[0,3,1,0]=(-0.363719831483)*x[0]**o+(0.542839794876)*x[0]+(-0.591176577173)*x[1]**o+(-0.885630814734)*x[1]  
         s[0,3,1,1]=(-0.857066901153)*x[0]**o+(0.146459811163)*x[0]+(0.167525505888)*x[1]**o+(-0.823988951028)*x[1]  
         s[0,3,2,0]=(-0.67987029357)*x[0]**o+(0.484426195638)*x[0]+(0.357896203022)*x[1]**o+(-0.225752357797)*x[1]  
         s[0,3,2,1]=(-0.580488963435)*x[0]**o+(-0.561249356735)*x[0]+(0.383669718576)*x[1]**o+(0.657077607148)*x[1]  
         s[0,4,0,0]=(0.69915173204)*x[0]**o+(-0.98282597178)*x[0]+(-0.107525636764)*x[1]**o+(0.860091695416)*x[1]  
         s[0,4,0,1]=(-0.52652663231)*x[0]**o+(0.0466888351687)*x[0]+(0.490026321752)*x[1]**o+(0.694751470792)*x[1]  
         s[0,4,1,0]=(0.824302118883)*x[0]**o+(0.00719006856334)*x[0]+(-0.539797289173)*x[1]**o+(0.690123831564)*x[1]  
         s[0,4,1,1]=(-0.472128229772)*x[0]**o+(-0.648689330166)*x[0]+(0.391117917633)*x[1]**o+(-0.162627834297)*x[1]  
         s[0,4,2,0]=(0.225959403713)*x[0]**o+(-0.955982321286)*x[0]+(0.98648257289)*x[1]**o+(0.685606762198)*x[1]  
         s[0,4,2,1]=(0.344295953653)*x[0]**o+(0.0937724197016)*x[0]+(0.334346155325)*x[1]**o+(0.240553977121)*x[1]  
         s[1,0,0,0]=(0.195329436142)*x[0]**o+(-0.391787107203)*x[0]+(0.282744654065)*x[1]**o+(0.525383075525)*x[1]  
         s[1,0,0,1]=(0.0500438294543)*x[0]**o+(0.91622484244)*x[0]+(-0.678531170299)*x[1]**o+(-0.992341400238)*x[1]  
         s[1,0,1,0]=(0.297013531565)*x[0]**o+(-0.11033494708)*x[0]+(-0.0204768747597)*x[1]**o+(0.911044821444)*x[1]  
         s[1,0,1,1]=(-0.318409579239)*x[0]**o+(-0.0397282629607)*x[0]+(0.126590560999)*x[1]**o+(-0.583058191524)*x[1]  
         s[1,0,2,0]=(-0.928353567554)*x[0]**o+(-0.290772724182)*x[0]+(0.114112299004)*x[1]**o+(0.320854358475)*x[1]  
         s[1,0,2,1]=(-0.570768568717)*x[0]**o+(-0.824979336359)*x[0]+(-0.521612560762)*x[1]**o+(0.892935684254)*x[1]  
         s[1,1,0,0]=(0.409271921712)*x[0]**o+(0.656688417546)*x[0]+(-0.552252115532)*x[1]**o+(-0.252684939643)*x[1]  
         s[1,1,0,1]=(0.650926797031)*x[0]**o+(0.937738666477)*x[0]+(-0.280790296797)*x[1]**o+(0.214208558313)*x[1]  
         s[1,1,1,0]=(0.1256718371)*x[0]**o+(0.261580183407)*x[0]+(-0.57943553377)*x[1]**o+(-0.746871082838)*x[1]  
         s[1,1,1,1]=(0.935864480093)*x[0]**o+(-0.438674963211)*x[0]+(0.18368021533)*x[1]**o+(-0.694240108689)*x[1]  
         s[1,1,2,0]=(-0.0397072007891)*x[0]**o+(-0.745343758112)*x[0]+(0.641693619013)*x[1]**o+(-0.658786784991)*x[1]  
         s[1,1,2,1]=(-0.695558285084)*x[0]**o+(-0.650222199462)*x[0]+(-0.386725498078)*x[1]**o+(-0.674446830484)*x[1]  
         s[1,2,0,0]=(0.905187721767)*x[0]**o+(-0.415012814051)*x[0]+(0.797167315255)*x[1]**o+(-0.80569654981)*x[1]  
         s[1,2,0,1]=(-0.425831083968)*x[0]**o+(-0.306155499216)*x[0]+(0.878423386932)*x[1]**o+(-0.204033374375)*x[1]  
         s[1,2,1,0]=(0.0315352399527)*x[0]**o+(-0.0864621608168)*x[0]+(0.953279645196)*x[1]**o+(-0.350121337825)*x[1]  
         s[1,2,1,1]=(0.30461258451)*x[0]**o+(-0.825063058949)*x[0]+(0.512058260572)*x[1]**o+(0.748809814194)*x[1]  
         s[1,2,2,0]=(-0.739360626393)*x[0]**o+(-0.163606333648)*x[0]+(0.0928076120668)*x[1]**o+(0.720798765678)*x[1]  
         s[1,2,2,1]=(0.199986177011)*x[0]**o+(-0.355098022147)*x[0]+(-0.429976374764)*x[1]**o+(-0.333973984813)*x[1]  
         s[1,3,0,0]=(0.245099889527)*x[0]**o+(-0.272006414876)*x[0]+(0.19038825631)*x[1]**o+(0.141537376325)*x[1]  
         s[1,3,0,1]=(0.964892470064)*x[0]**o+(0.266000699533)*x[0]+(0.281992883406)*x[1]**o+(0.0470036363258)*x[1]  
         s[1,3,1,0]=(-0.406024010771)*x[0]**o+(0.211515087571)*x[0]+(-0.139150083168)*x[1]**o+(0.694931678647)*x[1]  
         s[1,3,1,1]=(0.719958915132)*x[0]**o+(0.425474993616)*x[0]+(0.381998339685)*x[1]**o+(-0.587210328527)*x[1]  
         s[1,3,2,0]=(-0.446628131313)*x[0]**o+(0.147944239049)*x[0]+(0.858318344908)*x[1]**o+(0.141912002794)*x[1]  
         s[1,3,2,1]=(0.123237888525)*x[0]**o+(0.609628760233)*x[0]+(-0.0997977880881)*x[1]**o+(0.776602457692)*x[1]  
         s[1,4,0,0]=(-0.205992404955)*x[0]**o+(0.95994896532)*x[0]+(-0.668831643097)*x[1]**o+(0.400688887056)*x[1]  
         s[1,4,0,1]=(-0.551761785809)*x[0]**o+(-0.188933577465)*x[0]+(-0.445368366446)*x[1]**o+(-0.487934192641)*x[1]  
         s[1,4,1,0]=(0.806637485565)*x[0]**o+(-0.912751633205)*x[0]+(-0.0317735780285)*x[1]**o+(0.397954044901)*x[1]  
         s[1,4,1,1]=(0.321015788412)*x[0]**o+(0.0387288594742)*x[0]+(0.924286425546)*x[1]**o+(0.636709951581)*x[1]  
         s[1,4,2,0]=(0.822453145379)*x[0]**o+(-0.763204841293)*x[0]+(-0.821998150153)*x[1]**o+(-0.0455190284992)*x[1]  
         s[1,4,2,1]=(-0.769855780302)*x[0]**o+(0.175243832232)*x[0]+(0.643564391513)*x[1]**o+(0.167745614405)*x[1]  
         s[2,0,0,0]=(-0.703387009485)*x[0]**o+(-0.165672894741)*x[0]+(-0.593523456406)*x[1]**o+(-0.953916267625)*x[1]  
         s[2,0,0,1]=(0.189269691722)*x[0]**o+(0.0650904594513)*x[0]+(-0.972603715891)*x[1]**o+(0.632748799808)*x[1]  
         s[2,0,1,0]=(-0.355043086131)*x[0]**o+(0.223886836405)*x[0]+(0.0812465154386)*x[1]**o+(-0.123342881585)*x[1]  
         s[2,0,1,1]=(0.111949886338)*x[0]**o+(0.333936233092)*x[0]+(-0.726855801653)*x[1]**o+(-0.410644679001)*x[1]  
         s[2,0,2,0]=(-0.514134171061)*x[0]**o+(-0.920122884271)*x[0]+(-0.257750657117)*x[1]**o+(-0.920243692547)*x[1]  
         s[2,0,2,1]=(-0.845077655219)*x[0]**o+(-0.208901924124)*x[0]+(0.337378697599)*x[1]**o+(0.801979415473)*x[1]  
         s[2,1,0,0]=(0.193043677084)*x[0]**o+(-0.0599530199511)*x[0]+(0.43567411879)*x[1]**o+(0.500546331575)*x[1]  
         s[2,1,0,1]=(0.599088933494)*x[0]**o+(-0.468604163828)*x[0]+(0.429967954899)*x[1]**o+(-0.492384378174)*x[1]  
         s[2,1,1,0]=(-0.720574232874)*x[0]**o+(0.821661207615)*x[0]+(0.724662820892)*x[1]**o+(0.753198897961)*x[1]  
         s[2,1,1,1]=(-0.448359465447)*x[0]**o+(0.693373974155)*x[0]+(-0.484872729016)*x[1]**o+(-0.192659481547)*x[1]  
         s[2,1,2,0]=(0.703509253973)*x[0]**o+(-0.0365462091464)*x[0]+(0.240885950313)*x[1]**o+(-0.321055059013)*x[1]  
         s[2,1,2,1]=(0.247817476916)*x[0]**o+(-0.138605619124)*x[0]+(0.697567286153)*x[1]**o+(0.727793395093)*x[1]  
         s[2,2,0,0]=(0.0419479009665)*x[0]**o+(0.66706255286)*x[0]+(-0.330849950899)*x[1]**o+(-0.600398002711)*x[1]  
         s[2,2,0,1]=(0.0302303643583)*x[0]**o+(0.851488267489)*x[0]+(-0.568849620793)*x[1]**o+(-0.363234175722)*x[1]  
         s[2,2,1,0]=(-0.0230217508795)*x[0]**o+(0.118232576333)*x[0]+(0.0810817815326)*x[1]**o+(-0.58292650684)*x[1]  
         s[2,2,1,1]=(-0.372568177431)*x[0]**o+(-0.613455954736)*x[0]+(0.223650823501)*x[1]**o+(-0.310111084313)*x[1]  
         s[2,2,2,0]=(-0.297770107968)*x[0]**o+(0.334407378326)*x[0]+(0.0820495048815)*x[1]**o+(0.670675755602)*x[1]  
         s[2,2,2,1]=(-0.884675664948)*x[0]**o+(-0.141329306491)*x[0]+(0.125135636826)*x[1]**o+(-0.911348264716)*x[1]  
         s[2,3,0,0]=(0.538935527955)*x[0]**o+(0.513300520882)*x[0]+(0.850744598079)*x[1]**o+(0.751590880335)*x[1]  
         s[2,3,0,1]=(-0.821182874204)*x[0]**o+(-0.186188144846)*x[0]+(-0.107871578183)*x[1]**o+(0.462281422576)*x[1]  
         s[2,3,1,0]=(0.699998387809)*x[0]**o+(0.497080130045)*x[0]+(-0.876146393883)*x[1]**o+(-0.966792776701)*x[1]  
         s[2,3,1,1]=(-0.755486256523)*x[0]**o+(0.482429742628)*x[0]+(0.64207235708)*x[1]**o+(0.792668637521)*x[1]  
         s[2,3,2,0]=(0.480810051431)*x[0]**o+(0.526844732935)*x[0]+(0.358083926997)*x[1]**o+(0.975251790749)*x[1]  
         s[2,3,2,1]=(-0.71380930491)*x[0]**o+(0.321062714102)*x[0]+(-0.393765851515)*x[1]**o+(0.758037335781)*x[1]  
         s[2,4,0,0]=(0.799658695022)*x[0]**o+(-0.970884788767)*x[0]+(-0.909912887472)*x[1]**o+(-0.118569854978)*x[1]  
         s[2,4,0,1]=(0.22665071178)*x[0]**o+(-0.866764191923)*x[0]+(0.760310143236)*x[1]**o+(0.979622869213)*x[1]  
         s[2,4,1,0]=(-0.639860894248)*x[0]**o+(-0.254761334846)*x[0]+(0.844133251872)*x[1]**o+(-0.0823600617007)*x[1]  
         s[2,4,1,1]=(0.699864723463)*x[0]**o+(-0.941417107514)*x[0]+(-0.939935969783)*x[1]**o+(0.307212220608)*x[1]  
         s[2,4,2,0]=(-0.597501168242)*x[0]**o+(-0.855810189779)*x[0]+(-0.616246893869)*x[1]**o+(0.862508316402)*x[1]  
         s[2,4,2,1]=(0.279133829297)*x[0]**o+(-0.963434838906)*x[0]+(-0.927999672088)*x[1]**o+(-0.633147829562)*x[1]  
         s[3,0,0,0]=(-0.228495811891)*x[0]**o+(-0.253261426268)*x[0]+(-0.487641848136)*x[1]**o+(0.321239316844)*x[1]  
         s[3,0,0,1]=(-0.226385127812)*x[0]**o+(-0.903861474811)*x[0]+(0.0285492108309)*x[1]**o+(0.199168585275)*x[1]  
         s[3,0,1,0]=(-0.0670214317839)*x[0]**o+(-0.169290931005)*x[0]+(0.859675236893)*x[1]**o+(0.673436325782)*x[1]  
         s[3,0,1,1]=(0.589201260546)*x[0]**o+(-0.931566266675)*x[0]+(0.127884139041)*x[1]**o+(-0.0831271642138)*x[1]  
         s[3,0,2,0]=(-0.228265145653)*x[0]**o+(-0.449360641451)*x[0]+(0.0895266621221)*x[1]**o+(0.516248722513)*x[1]  
         s[3,0,2,1]=(0.726271772612)*x[0]**o+(-0.834727339534)*x[0]+(0.779809207203)*x[1]**o+(-0.2745165742)*x[1]  
         s[3,1,0,0]=(-0.528300011184)*x[0]**o+(0.0728636912947)*x[0]+(-0.953454233615)*x[1]**o+(0.582219621875)*x[1]  
         s[3,1,0,1]=(0.196609308635)*x[0]**o+(0.162717112564)*x[0]+(0.449469968326)*x[1]**o+(-0.174119135554)*x[1]  
         s[3,1,1,0]=(-0.261855816805)*x[0]**o+(0.607391359963)*x[0]+(-0.793775568608)*x[1]**o+(-0.950278043961)*x[1]  
         s[3,1,1,1]=(0.240905287034)*x[0]**o+(-0.204299485241)*x[0]+(-0.825848364133)*x[1]**o+(-0.00971732871232)*x[1]  
         s[3,1,2,0]=(0.798049323787)*x[0]**o+(0.0710454406309)*x[0]+(0.990006532214)*x[1]**o+(0.711055965038)*x[1]  
         s[3,1,2,1]=(-0.406803353709)*x[0]**o+(0.120946506707)*x[0]+(-0.410263830047)*x[1]**o+(0.988997635486)*x[1]  
         s[3,2,0,0]=(0.181718966759)*x[0]**o+(-0.0262352524424)*x[0]+(-0.1917125307)*x[1]**o+(-0.169130797999)*x[1]  
         s[3,2,0,1]=(-0.00378400436872)*x[0]**o+(-0.970892218185)*x[0]+(-0.563995443607)*x[1]**o+(0.906996441633)*x[1]  
         s[3,2,1,0]=(-0.858412521643)*x[0]**o+(-0.133539980742)*x[0]+(-0.692474245554)*x[1]**o+(0.0128241106616)*x[1]  
         s[3,2,1,1]=(-0.272651295849)*x[0]**o+(-0.185053306751)*x[0]+(-0.034278709119)*x[1]**o+(-0.201998293805)*x[1]  
         s[3,2,2,0]=(-0.0376999069998)*x[0]**o+(-0.895215920335)*x[0]+(0.944947071273)*x[1]**o+(-0.732964572204)*x[1]  
         s[3,2,2,1]=(0.0771318167573)*x[0]**o+(0.051862360377)*x[0]+(-0.837260137737)*x[1]**o+(-0.770673420806)*x[1]  
         s[3,3,0,0]=(-0.258989060244)*x[0]**o+(-0.699818576225)*x[0]+(-0.311518509076)*x[1]**o+(0.517397173211)*x[1]  
         s[3,3,0,1]=(-0.443559295683)*x[0]**o+(-0.0544611458142)*x[0]+(0.983503123196)*x[1]**o+(0.248879114721)*x[1]  
         s[3,3,1,0]=(0.626729673965)*x[0]**o+(0.347363767931)*x[0]+(0.956080389131)*x[1]**o+(0.429076008118)*x[1]  
         s[3,3,1,1]=(-0.508758891471)*x[0]**o+(0.616615567996)*x[0]+(0.221644986884)*x[1]**o+(-0.904935728116)*x[1]  
         s[3,3,2,0]=(0.254341631925)*x[0]**o+(-0.908688314004)*x[0]+(-0.0449719498093)*x[1]**o+(0.871189405684)*x[1]  
         s[3,3,2,1]=(0.506459636421)*x[0]**o+(0.978066502797)*x[0]+(-0.212934438396)*x[1]**o+(-0.355665670198)*x[1]  
         s[3,4,0,0]=(0.0152292845756)*x[0]**o+(-0.400615592376)*x[0]+(0.264352702586)*x[1]**o+(-0.0677780689342)*x[1]  
         s[3,4,0,1]=(0.734077033298)*x[0]**o+(-0.171218476666)*x[0]+(-0.399285387071)*x[1]**o+(-0.589596788961)*x[1]  
         s[3,4,1,0]=(-0.903602643334)*x[0]**o+(0.0527455440694)*x[0]+(-0.973273256059)*x[1]**o+(0.76054623312)*x[1]  
         s[3,4,1,1]=(0.368219867735)*x[0]**o+(0.857361275285)*x[0]+(0.297273583978)*x[1]**o+(0.243120582563)*x[1]  
         s[3,4,2,0]=(0.518637118464)*x[0]**o+(-0.961371552746)*x[0]+(0.283809772558)*x[1]**o+(-0.947184379737)*x[1]  
         s[3,4,2,1]=(-0.514398206056)*x[0]**o+(-0.499373736713)*x[0]+(-0.756154352548)*x[1]**o+(0.814078333554)*x[1]  
         ref[0,0,0,0]=(0.451668581322)/(o+1.)+(-0.286819576397)  
         ref[0,0,0,1]=(0.30725041959)/(o+1.)+(-0.256315624701)  
         ref[0,0,1,0]=(-0.466895770987)/(o+1.)+(-0.293859794895)  
         ref[0,0,1,1]=(0.489204046518)/(o+1.)+(0.340743081611)  
         ref[0,0,2,0]=(-0.838470513606)/(o+1.)+(-0.40550734315)  
         ref[0,0,2,1]=(0.117160355949)/(o+1.)+(0.162017541826)  
         ref[0,1,0,0]=(0.748036440634)/(o+1.)+(0.0996914366319)  
         ref[0,1,0,1]=(-0.654754641301)/(o+1.)+(0.305344541376)  
         ref[0,1,1,0]=(0.568069211159)/(o+1.)+(-0.115673717252)  
         ref[0,1,1,1]=(0.0652687572678)/(o+1.)+(0.275595203627)  
         ref[0,1,2,0]=(0.371255897455)/(o+1.)+(-0.315249837692)  
         ref[0,1,2,1]=(-0.331807603614)/(o+1.)+(-0.0345187874006)  
         ref[0,2,0,0]=(0.0301821364712)/(o+1.)+(-0.543550938487)  
         ref[0,2,0,1]=(-0.112351461929)/(o+1.)+(-0.263750126822)  
         ref[0,2,1,0]=(1.80616095181)/(o+1.)+(0.371348899028)  
         ref[0,2,1,1]=(1.60373586077)/(o+1.)+(-0.0455343718196)  
         ref[0,2,2,0]=(0.0939388699401)/(o+1.)+(0.36514946063)  
         ref[0,2,2,1]=(0.362945697503)/(o+1.)+(0.596779059003)  
         ref[0,3,0,0]=(0.0671826683913)/(o+1.)+(-0.104364709744)  
         ref[0,3,0,1]=(-0.52668922709)/(o+1.)+(-0.526940958341)  
         ref[0,3,1,0]=(-0.954896408656)/(o+1.)+(-0.171395509929)  
         ref[0,3,1,1]=(-0.689541395265)/(o+1.)+(-0.338764569932)  
         ref[0,3,2,0]=(-0.321974090548)/(o+1.)+(0.12933691892)  
         ref[0,3,2,1]=(-0.196819244859)/(o+1.)+(0.0479141252065)  
         ref[0,4,0,0]=(0.591626095276)/(o+1.)+(-0.061367138182)  
         ref[0,4,0,1]=(-0.0365003105586)/(o+1.)+(0.37072015298)  
         ref[0,4,1,0]=(0.28450482971)/(o+1.)+(0.348656950064)  
         ref[0,4,1,1]=(-0.0810103121392)/(o+1.)+(-0.405658582232)  
         ref[0,4,2,0]=(1.2124419766)/(o+1.)+(-0.135187779544)  
         ref[0,4,2,1]=(0.678642108977)/(o+1.)+(0.167163198411)  
         ref[1,0,0,0]=(0.478074090207)/(o+1.)+(0.066797984161)  
         ref[1,0,0,1]=(-0.628487340845)/(o+1.)+(-0.0380582788988)  
         ref[1,0,1,0]=(0.276536656806)/(o+1.)+(0.400354937182)  
         ref[1,0,1,1]=(-0.191819018239)/(o+1.)+(-0.311393227243)  
         ref[1,0,2,0]=(-0.81424126855)/(o+1.)+(0.0150408171462)  
         ref[1,0,2,1]=(-1.09238112948)/(o+1.)+(0.0339781739475)  
         ref[1,1,0,0]=(-0.142980193819)/(o+1.)+(0.202001738951)  
         ref[1,1,0,1]=(0.370136500233)/(o+1.)+(0.575973612395)  
         ref[1,1,1,0]=(-0.45376369667)/(o+1.)+(-0.242645449715)  
         ref[1,1,1,1]=(1.11954469542)/(o+1.)+(-0.56645753595)  
         ref[1,1,2,0]=(0.601986418224)/(o+1.)+(-0.702065271552)  
         ref[1,1,2,1]=(-1.08228378316)/(o+1.)+(-0.662334514973)  
         ref[1,2,0,0]=(1.70235503702)/(o+1.)+(-0.61035468193)  
         ref[1,2,0,1]=(0.452592302963)/(o+1.)+(-0.255094436796)  
         ref[1,2,1,0]=(0.984814885149)/(o+1.)+(-0.218291749321)  
         ref[1,2,1,1]=(0.816670845082)/(o+1.)+(-0.0381266223775)  
         ref[1,2,2,0]=(-0.646553014327)/(o+1.)+(0.278596216015)  
         ref[1,2,2,1]=(-0.229990197753)/(o+1.)+(-0.34453600348)  
         ref[1,3,0,0]=(0.435488145837)/(o+1.)+(-0.0652345192758)  
         ref[1,3,0,1]=(1.24688535347)/(o+1.)+(0.15650216793)  
         ref[1,3,1,0]=(-0.545174093939)/(o+1.)+(0.453223383109)  
         ref[1,3,1,1]=(1.10195725482)/(o+1.)+(-0.0808676674551)  
         ref[1,3,2,0]=(0.411690213595)/(o+1.)+(0.144928120921)  
         ref[1,3,2,1]=(0.0234401004369)/(o+1.)+(0.693115608963)  
         ref[1,4,0,0]=(-0.874824048052)/(o+1.)+(0.680318926188)  
         ref[1,4,0,1]=(-0.997130152255)/(o+1.)+(-0.338433885053)  
         ref[1,4,1,0]=(0.774863907537)/(o+1.)+(-0.257398794152)  
         ref[1,4,1,1]=(1.24530221396)/(o+1.)+(0.337719405527)  
         ref[1,4,2,0]=(0.000454995225935)/(o+1.)+(-0.404361934896)  
         ref[1,4,2,1]=(-0.126291388789)/(o+1.)+(0.171494723319)  
         ref[2,0,0,0]=(-1.29691046589)/(o+1.)+(-0.559794581183)  
         ref[2,0,0,1]=(-0.783334024169)/(o+1.)+(0.348919629629)  
         ref[2,0,1,0]=(-0.273796570692)/(o+1.)+(0.0502719774097)  
         ref[2,0,1,1]=(-0.614905915315)/(o+1.)+(-0.0383542229546)  
         ref[2,0,2,0]=(-0.771884828178)/(o+1.)+(-0.920183288409)  
         ref[2,0,2,1]=(-0.50769895762)/(o+1.)+(0.296538745675)  
         ref[2,1,0,0]=(0.628717795874)/(o+1.)+(0.220296655812)  
         ref[2,1,0,1]=(1.02905688839)/(o+1.)+(-0.480494271001)  
         ref[2,1,1,0]=(0.00408858801768)/(o+1.)+(0.787430052788)  
         ref[2,1,1,1]=(-0.933232194463)/(o+1.)+(0.250357246304)  
         ref[2,1,2,0]=(0.944395204286)/(o+1.)+(-0.17880063408)  
         ref[2,1,2,1]=(0.945384763069)/(o+1.)+(0.294593887985)  
         ref[2,2,0,0]=(-0.288902049932)/(o+1.)+(0.0333322750744)  
         ref[2,2,0,1]=(-0.538619256435)/(o+1.)+(0.244127045883)  
         ref[2,2,1,0]=(0.0580600306531)/(o+1.)+(-0.232346965253)  
         ref[2,2,1,1]=(-0.148917353929)/(o+1.)+(-0.461783519524)  
         ref[2,2,2,0]=(-0.215720603086)/(o+1.)+(0.502541566964)  
         ref[2,2,2,1]=(-0.759540028122)/(o+1.)+(-0.526338785603)  
         ref[2,3,0,0]=(1.38968012603)/(o+1.)+(0.632445700608)  
         ref[2,3,0,1]=(-0.929054452386)/(o+1.)+(0.138046638865)  
         ref[2,3,1,0]=(-0.176148006073)/(o+1.)+(-0.234856323328)  
         ref[2,3,1,1]=(-0.113413899443)/(o+1.)+(0.637549190074)  
         ref[2,3,2,0]=(0.838893978428)/(o+1.)+(0.751048261842)  
         ref[2,3,2,1]=(-1.10757515642)/(o+1.)+(0.539550024941)  
         ref[2,4,0,0]=(-0.11025419245)/(o+1.)+(-0.544727321873)  
         ref[2,4,0,1]=(0.986960855016)/(o+1.)+(0.056429338645)  
         ref[2,4,1,0]=(0.204272357624)/(o+1.)+(-0.168560698273)  
         ref[2,4,1,1]=(-0.24007124632)/(o+1.)+(-0.317102443453)  
         ref[2,4,2,0]=(-1.21374806211)/(o+1.)+(0.00334906331113)  
         ref[2,4,2,1]=(-0.648865842791)/(o+1.)+(-0.798291334234)  
         ref[3,0,0,0]=(-0.716137660027)/(o+1.)+(0.033988945288)  
         ref[3,0,0,1]=(-0.197835916981)/(o+1.)+(-0.352346444768)  
         ref[3,0,1,0]=(0.792653805109)/(o+1.)+(0.252072697388)  
         ref[3,0,1,1]=(0.717085399588)/(o+1.)+(-0.507346715445)  
         ref[3,0,2,0]=(-0.138738483531)/(o+1.)+(0.0334440405313)  
         ref[3,0,2,1]=(1.50608097982)/(o+1.)+(-0.554621956867)  
         ref[3,1,0,0]=(-1.4817542448)/(o+1.)+(0.327541656585)  
         ref[3,1,0,1]=(0.64607927696)/(o+1.)+(-0.00570101149523)  
         ref[3,1,1,0]=(-1.05563138541)/(o+1.)+(-0.171443341999)  
         ref[3,1,1,1]=(-0.5849430771)/(o+1.)+(-0.107008406977)  
         ref[3,1,2,0]=(1.788055856)/(o+1.)+(0.391050702835)  
         ref[3,1,2,1]=(-0.817067183756)/(o+1.)+(0.554972071097)  
         ref[3,2,0,0]=(-0.00999356394068)/(o+1.)+(-0.0976830252209)  
         ref[3,2,0,1]=(-0.567779447976)/(o+1.)+(-0.031947888276)  
         ref[3,2,1,0]=(-1.5508867672)/(o+1.)+(-0.0603579350402)  
         ref[3,2,1,1]=(-0.306930004968)/(o+1.)+(-0.193525800278)  
         ref[3,2,2,0]=(0.907247164273)/(o+1.)+(-0.81409024627)  
         ref[3,2,2,1]=(-0.76012832098)/(o+1.)+(-0.359405530215)  
         ref[3,3,0,0]=(-0.57050756932)/(o+1.)+(-0.0912107015068)  
         ref[3,3,0,1]=(0.539943827514)/(o+1.)+(0.0972089844535)  
         ref[3,3,1,0]=(1.5828100631)/(o+1.)+(0.388219888025)  
         ref[3,3,1,1]=(-0.287113904587)/(o+1.)+(-0.14416008006)  
         ref[3,3,2,0]=(0.209369682116)/(o+1.)+(-0.01874945416)  
         ref[3,3,2,1]=(0.293525198025)/(o+1.)+(0.311200416299)  
         ref[3,4,0,0]=(0.279581987162)/(o+1.)+(-0.234196830655)  
         ref[3,4,0,1]=(0.334791646227)/(o+1.)+(-0.380407632814)  
         ref[3,4,1,0]=(-1.87687589939)/(o+1.)+(0.406645888595)  
         ref[3,4,1,1]=(0.665493451713)/(o+1.)+(0.550240928924)  
         ref[3,4,2,0]=(0.802446891023)/(o+1.)+(-0.954277966241)  
         ref[3,4,2,1]=(-1.2705525586)/(o+1.)+(0.15735229842)  
       else:  
         s[0,0,0,0]=(0.641376947921)*x[0]**o+(-0.761647983943)*x[0]+(0.1869803104)*x[1]**o+(-0.325986059158)*x[1]+(-0.0520537723186)*x[2]**o+(-0.242075762859)*x[2]  
         s[0,0,0,1]=(0.774456605418)*x[0]**o+(0.321485563379)*x[0]+(0.0248450395096)*x[1]**o+(-0.425638835963)*x[1]+(-0.0622024423983)*x[2]**o+(0.0431057597271)*x[2]  
         s[0,0,1,0]=(0.661432460103)*x[0]**o+(-0.653382716149)*x[0]+(0.596912471264)*x[1]**o+(-0.375947479542)*x[1]+(0.370999295823)*x[2]**o+(0.791872078833)*x[2]  
         s[0,0,1,1]=(0.258860589295)*x[0]**o+(-0.802340135742)*x[0]+(0.569149399765)*x[1]**o+(-0.505649920225)*x[1]+(0.384267048627)*x[2]**o+(-0.791015249057)*x[2]  
         s[0,0,2,0]=(0.219942214071)*x[0]**o+(0.360851774828)*x[0]+(-0.456714182675)*x[1]**o+(0.0965079164275)*x[1]+(-0.752467360132)*x[2]**o+(-0.285016148963)*x[2]  
         s[0,0,2,1]=(0.227249920303)*x[0]**o+(-0.63371992192)*x[0]+(-0.751996139921)*x[1]**o+(-0.804517033328)*x[1]+(-0.0202988256583)*x[2]**o+(0.531173510334)*x[2]  
         s[0,1,0,0]=(0.530838912723)*x[0]**o+(0.230970767172)*x[0]+(-0.424131392941)*x[1]**o+(-0.606417012546)*x[1]+(-0.318937522783)*x[2]**o+(0.179390519765)*x[2]  
         s[0,1,0,1]=(-0.776569569832)*x[0]**o+(0.918265838431)*x[0]+(-0.091878191762)*x[1]**o+(0.698951377419)*x[1]+(0.244940000061)*x[2]**o+(0.0452610075428)*x[2]  
         s[0,1,1,0]=(0.435082117831)*x[0]**o+(0.889881605799)*x[0]+(-0.219619308431)*x[1]**o+(-0.672303092957)*x[1]+(0.987619326906)*x[2]**o+(0.220516905778)*x[2]  
         s[0,1,1,1]=(-0.118683589446)*x[0]**o+(0.965421464735)*x[0]+(-0.863562140452)*x[1]**o+(-0.231242073932)*x[1]+(0.568240493507)*x[2]**o+(0.734578820791)*x[2]  
         s[0,1,2,0]=(0.511447709837)*x[0]**o+(-0.274507694143)*x[0]+(0.576288098696)*x[1]**o+(0.655476727813)*x[1]+(0.602315737594)*x[2]**o+(0.817938429306)*x[2]  
         s[0,1,2,1]=(-0.319953701981)*x[0]**o+(-0.0816890923671)*x[0]+(0.84471771093)*x[1]**o+(0.216072534675)*x[1]+(0.782233227772)*x[2]**o+(0.761080396806)*x[2]  
         s[0,2,0,0]=(0.371971964019)*x[0]**o+(-0.914300658178)*x[0]+(-0.421914056897)*x[1]**o+(-0.366900498221)*x[1]+(-0.224742744541)*x[2]**o+(0.718117565395)*x[2]  
         s[0,2,0,1]=(0.390948765614)*x[0]**o+(0.523332138936)*x[0]+(0.207458000485)*x[1]**o+(0.704266764721)*x[1]+(0.194539635633)*x[2]**o+(-0.0310558120915)*x[2]  
         s[0,2,1,0]=(-0.00308409831643)*x[0]**o+(0.0874338943679)*x[0]+(0.792479180633)*x[1]**o+(-0.840935676827)*x[1]+(0.183535198853)*x[2]**o+(-0.632484318094)*x[2]  
         s[0,2,1,1]=(0.93055010195)*x[0]**o+(-0.592883255994)*x[0]+(-0.293724124968)*x[1]**o+(-0.532867438247)*x[1]+(-0.731629824662)*x[2]**o+(-0.926457959344)*x[2]  
         s[0,2,2,0]=(-0.410766259996)*x[0]**o+(0.153463001676)*x[0]+(-0.22434101683)*x[1]**o+(0.792184946048)*x[1]+(0.217569318007)*x[2]**o+(-0.746503700782)*x[2]  
         s[0,2,2,1]=(-0.48097027987)*x[0]**o+(-0.855259653713)*x[0]+(0.297296031945)*x[1]**o+(0.486702064445)*x[1]+(-0.15982283079)*x[2]**o+(0.943473459324)*x[2]  
         s[0,3,0,0]=(0.440444162838)*x[0]**o+(-0.411163880392)*x[0]+(0.434891712314)*x[1]**o+(0.421032339491)*x[1]+(0.185417751167)*x[2]**o+(0.774341796864)*x[2]  
         s[0,3,0,1]=(0.418605026678)*x[0]**o+(0.697823127475)*x[0]+(-0.490471272795)*x[1]**o+(0.889959972523)*x[1]+(-0.935571921221)*x[2]**o+(-0.477163919777)*x[2]  
         s[0,3,1,0]=(0.240863375001)*x[0]**o+(0.171535577067)*x[0]+(-0.798318413682)*x[1]**o+(0.165523160187)*x[1]+(-0.793244034855)*x[2]**o+(-0.639277575041)*x[2]  
         s[0,3,1,1]=(0.202212256877)*x[0]**o+(0.387471670954)*x[0]+(-0.198376856629)*x[1]**o+(-0.679099770813)*x[1]+(-0.213566318573)*x[2]**o+(-0.591165980661)*x[2]  
         s[0,3,2,0]=(0.764050063724)*x[0]**o+(-0.921472809292)*x[0]+(-0.483029501792)*x[1]**o+(0.198096560699)*x[1]+(-0.161449532882)*x[2]**o+(-0.854460510477)*x[2]  
         s[0,3,2,1]=(0.491500019407)*x[0]**o+(0.830069678076)*x[0]+(-0.597452015974)*x[1]**o+(-0.893928655959)*x[1]+(0.940149982314)*x[2]**o+(0.17300719331)*x[2]  
         s[0,4,0,0]=(0.0798620352831)*x[0]**o+(0.0237937127416)*x[0]+(-0.086351109139)*x[1]**o+(0.729882388424)*x[1]+(-0.7065299588)*x[2]**o+(-0.632673206138)*x[2]  
         s[0,4,0,1]=(-0.809989577091)*x[0]**o+(0.0981392253023)*x[0]+(0.831656529801)*x[1]**o+(0.0337424060561)*x[1]+(-0.210067786784)*x[2]**o+(-0.0549477247313)*x[2]  
         s[0,4,1,0]=(-0.0632498403207)*x[0]**o+(-0.992515766051)*x[0]+(0.579065868983)*x[1]**o+(0.201496477221)*x[1]+(0.147678629343)*x[2]**o+(0.396978535826)*x[2]  
         s[0,4,1,1]=(0.538470621207)*x[0]**o+(0.125447714672)*x[0]+(0.345561739505)*x[1]**o+(-0.898311293341)*x[1]+(0.695965393051)*x[2]**o+(0.456779053964)*x[2]  
         s[0,4,2,0]=(-0.461938934992)*x[0]**o+(0.815268894146)*x[0]+(0.529702893063)*x[1]**o+(0.106752164506)*x[1]+(-0.892819156049)*x[2]**o+(-0.540251931665)*x[2]  
         s[0,4,2,1]=(-0.890961526208)*x[0]**o+(-0.0522965595586)*x[0]+(-0.166811931177)*x[1]**o+(-0.32795191314)*x[1]+(0.827693520674)*x[2]**o+(-0.858862162004)*x[2]  
         s[1,0,0,0]=(0.0341612512071)*x[0]**o+(0.704407020254)*x[0]+(-0.0212728069872)*x[1]**o+(-0.360120370601)*x[1]+(0.0355417904312)*x[2]**o+(-0.899016835477)*x[2]  
         s[1,0,0,1]=(-0.254336879728)*x[0]**o+(-0.749583807992)*x[0]+(-0.822540014653)*x[1]**o+(0.321686636614)*x[1]+(-0.110121756691)*x[2]**o+(0.995172970249)*x[2]  
         s[1,0,1,0]=(0.538783330989)*x[0]**o+(0.425931208203)*x[0]+(0.808850719257)*x[1]**o+(-0.616824777466)*x[1]+(-0.999643426203)*x[2]**o+(0.206956920828)*x[2]  
         s[1,0,1,1]=(0.92122724205)*x[0]**o+(-0.0077578775328)*x[0]+(-0.455369944999)*x[1]**o+(0.069992464289)*x[1]+(-0.625922232223)*x[2]**o+(0.308582889054)*x[2]  
         s[1,0,2,0]=(0.812275176702)*x[0]**o+(-0.0737918971904)*x[0]+(-0.352834721968)*x[1]**o+(-0.485715856695)*x[1]+(0.893012104541)*x[2]**o+(-0.50277227482)*x[2]  
         s[1,0,2,1]=(0.327001325412)*x[0]**o+(0.248420422978)*x[0]+(0.934489184596)*x[1]**o+(0.645665157141)*x[1]+(-0.125952174434)*x[2]**o+(-0.589610796444)*x[2]  
         s[1,1,0,0]=(-0.19439618112)*x[0]**o+(-0.473153238554)*x[0]+(0.441593313035)*x[1]**o+(0.560223203285)*x[1]+(0.744701337265)*x[2]**o+(0.588942879247)*x[2]  
         s[1,1,0,1]=(0.956622537359)*x[0]**o+(0.388369191252)*x[0]+(-0.912880779816)*x[1]**o+(-0.930624449932)*x[1]+(-0.0693131490103)*x[2]**o+(0.79864169138)*x[2]  
         s[1,1,1,0]=(0.0802315160845)*x[0]**o+(0.360021747567)*x[0]+(-0.838148172909)*x[1]**o+(0.974574791036)*x[1]+(0.134930445828)*x[2]**o+(-0.224819866647)*x[2]  
         s[1,1,1,1]=(0.0408467896812)*x[0]**o+(-0.527931565684)*x[0]+(-0.294779051686)*x[1]**o+(0.655648246879)*x[1]+(0.206641334088)*x[2]**o+(0.244207224731)*x[2]  
         s[1,1,2,0]=(-0.695324333815)*x[0]**o+(-0.76302643793)*x[0]+(-0.445448086412)*x[1]**o+(0.387620295728)*x[1]+(0.410986742302)*x[2]**o+(-0.903330791078)*x[2]  
         s[1,1,2,1]=(0.725983511781)*x[0]**o+(-0.55616923731)*x[0]+(0.694922396401)*x[1]**o+(0.969679789365)*x[1]+(0.390140728655)*x[2]**o+(0.616506146743)*x[2]  
         s[1,2,0,0]=(-0.847983007272)*x[0]**o+(-0.21379616326)*x[0]+(-0.221990648875)*x[1]**o+(0.542144543115)*x[1]+(-0.476016238668)*x[2]**o+(0.239835257111)*x[2]  
         s[1,2,0,1]=(0.382592141805)*x[0]**o+(-0.547322693057)*x[0]+(0.207135932694)*x[1]**o+(0.479160574257)*x[1]+(-0.406772807762)*x[2]**o+(0.0827537744696)*x[2]  
         s[1,2,1,0]=(0.385177578855)*x[0]**o+(-0.96749949076)*x[0]+(-0.980528334919)*x[1]**o+(0.846145425556)*x[1]+(0.663229596459)*x[2]**o+(0.234589730098)*x[2]  
         s[1,2,1,1]=(0.326538279652)*x[0]**o+(0.864444241537)*x[0]+(0.925715710223)*x[1]**o+(0.901973119241)*x[1]+(0.489827899451)*x[2]**o+(-0.446654474045)*x[2]  
         s[1,2,2,0]=(0.623521048768)*x[0]**o+(0.00694630100059)*x[0]+(-0.316266037281)*x[1]**o+(-0.296669528851)*x[1]+(-0.345499066232)*x[2]**o+(-0.781251040298)*x[2]  
         s[1,2,2,1]=(-0.564332000062)*x[0]**o+(-0.838410587038)*x[0]+(0.105923226211)*x[1]**o+(0.027080971794)*x[1]+(0.656502442527)*x[2]**o+(-0.968700980875)*x[2]  
         s[1,3,0,0]=(0.28297404936)*x[0]**o+(0.906254282744)*x[0]+(0.426459225459)*x[1]**o+(0.474780047643)*x[1]+(0.915469451254)*x[2]**o+(0.150014279679)*x[2]  
         s[1,3,0,1]=(0.417919974897)*x[0]**o+(0.118528892402)*x[0]+(0.456086489559)*x[1]**o+(0.407436737785)*x[1]+(-0.594040737087)*x[2]**o+(-0.0968244395915)*x[2]  
         s[1,3,1,0]=(-0.00608149061984)*x[0]**o+(0.279861847458)*x[0]+(0.622153448276)*x[1]**o+(0.307580940395)*x[1]+(-0.311958042371)*x[2]**o+(0.951637572927)*x[2]  
         s[1,3,1,1]=(0.0620010964861)*x[0]**o+(0.694489586135)*x[0]+(-0.397214573709)*x[1]**o+(0.816641484229)*x[1]+(-0.55010098877)*x[2]**o+(-0.252677099684)*x[2]  
         s[1,3,2,0]=(0.347469613465)*x[0]**o+(-0.793025539854)*x[0]+(0.340939082154)*x[1]**o+(0.00135134646417)*x[1]+(-0.253753620216)*x[2]**o+(-0.795217820163)*x[2]  
         s[1,3,2,1]=(-0.77663362989)*x[0]**o+(-0.0454794482729)*x[0]+(0.0346722039087)*x[1]**o+(-0.137241685281)*x[1]+(0.984186419894)*x[2]**o+(0.884865835233)*x[2]  
         s[1,4,0,0]=(-0.344544201299)*x[0]**o+(0.118604431816)*x[0]+(0.735491059587)*x[1]**o+(-0.474594418844)*x[1]+(-0.160183641095)*x[2]**o+(0.0442675403903)*x[2]  
         s[1,4,0,1]=(0.159437065336)*x[0]**o+(0.357454800453)*x[0]+(0.0623836301056)*x[1]**o+(0.255296236156)*x[1]+(0.586460110084)*x[2]**o+(-0.557870816384)*x[2]  
         s[1,4,1,0]=(0.272212988717)*x[0]**o+(-0.00218257591936)*x[0]+(0.637653920938)*x[1]**o+(0.474154612654)*x[1]+(0.0927963495169)*x[2]**o+(0.688169553045)*x[2]  
         s[1,4,1,1]=(-0.296752052135)*x[0]**o+(0.222825403373)*x[0]+(-0.61297870931)*x[1]**o+(-0.772169949259)*x[1]+(0.267924738357)*x[2]**o+(-0.98640521973)*x[2]  
         s[1,4,2,0]=(-0.528327447355)*x[0]**o+(-0.13640459815)*x[0]+(-0.839608161898)*x[1]**o+(0.79996626812)*x[1]+(0.0889785028146)*x[2]**o+(0.483698551365)*x[2]  
         s[1,4,2,1]=(-0.888180576683)*x[0]**o+(-0.243274686308)*x[0]+(-0.459488747018)*x[1]**o+(0.770881162569)*x[1]+(-0.502642334958)*x[2]**o+(-0.0596414308521)*x[2]  
         s[2,0,0,0]=(-0.765317614505)*x[0]**o+(-0.220818348989)*x[0]+(-0.185228616416)*x[1]**o+(-0.0787003843488)*x[1]+(-0.412520273332)*x[2]**o+(0.192760450932)*x[2]  
         s[2,0,0,1]=(0.913449879489)*x[0]**o+(-0.219345049089)*x[0]+(0.54504962001)*x[1]**o+(0.623236284643)*x[1]+(-0.350717162156)*x[2]**o+(-0.623681076852)*x[2]  
         s[2,0,1,0]=(-0.940664057127)*x[0]**o+(0.251319839352)*x[0]+(0.877556299495)*x[1]**o+(0.016160084659)*x[1]+(-0.544235646954)*x[2]**o+(-0.343760171279)*x[2]  
         s[2,0,1,1]=(0.324227271021)*x[0]**o+(-0.380692454159)*x[0]+(-0.727849414028)*x[1]**o+(0.955281983149)*x[1]+(-0.898073831095)*x[2]**o+(0.858127409364)*x[2]  
         s[2,0,2,0]=(-0.111449036516)*x[0]**o+(0.928827923826)*x[0]+(-0.992899512514)*x[1]**o+(0.0150334039442)*x[1]+(-0.552135666421)*x[2]**o+(0.406949591012)*x[2]  
         s[2,0,2,1]=(0.241832900797)*x[0]**o+(0.684688614786)*x[0]+(0.842064214069)*x[1]**o+(-0.718696633586)*x[1]+(0.352196331118)*x[2]**o+(-0.260343576356)*x[2]  
         s[2,1,0,0]=(0.426302002061)*x[0]**o+(0.573786857786)*x[0]+(0.909827742357)*x[1]**o+(0.34656984965)*x[1]+(0.379863389758)*x[2]**o+(0.0322921482901)*x[2]  
         s[2,1,0,1]=(0.34423098891)*x[0]**o+(0.959825965873)*x[0]+(-0.458147326954)*x[1]**o+(-0.190830182513)*x[1]+(-0.0836184656488)*x[2]**o+(0.711921183181)*x[2]  
         s[2,1,1,0]=(0.813184534496)*x[0]**o+(-0.551568400877)*x[0]+(0.0282287303962)*x[1]**o+(0.421838849382)*x[1]+(0.312118130223)*x[2]**o+(-0.276104599646)*x[2]  
         s[2,1,1,1]=(0.39842349776)*x[0]**o+(0.0505250495963)*x[0]+(-0.398145839899)*x[1]**o+(0.712110112191)*x[1]+(-0.646997386195)*x[2]**o+(-0.584123612783)*x[2]  
         s[2,1,2,0]=(-0.722790769831)*x[0]**o+(0.850227076858)*x[0]+(0.204013681627)*x[1]**o+(0.924250450519)*x[1]+(-0.0736995922058)*x[2]**o+(-0.597799712798)*x[2]  
         s[2,1,2,1]=(0.314644875138)*x[0]**o+(-0.636988948936)*x[0]+(-0.641641656145)*x[1]**o+(0.788809853074)*x[1]+(0.993531553111)*x[2]**o+(-0.495755039677)*x[2]  
         s[2,2,0,0]=(0.633851639171)*x[0]**o+(0.523452525521)*x[0]+(-0.382111999068)*x[1]**o+(-0.63124196783)*x[1]+(-0.147565214833)*x[2]**o+(0.0331370104049)*x[2]  
         s[2,2,0,1]=(0.526384634874)*x[0]**o+(0.133282991706)*x[0]+(0.805017307077)*x[1]**o+(-0.266487317047)*x[1]+(0.33606063535)*x[2]**o+(0.805493533241)*x[2]  
         s[2,2,1,0]=(0.346357232135)*x[0]**o+(-0.787017955245)*x[0]+(0.30877740144)*x[1]**o+(0.451911959523)*x[1]+(0.747842891938)*x[2]**o+(-0.44945658191)*x[2]  
         s[2,2,1,1]=(-0.546211248475)*x[0]**o+(0.247263733668)*x[0]+(-0.594514097121)*x[1]**o+(-0.264637607913)*x[1]+(0.418219952147)*x[2]**o+(-0.816923592759)*x[2]  
         s[2,2,2,0]=(0.0563761896319)*x[0]**o+(-0.736507329679)*x[0]+(0.470349998404)*x[1]**o+(-0.932042349224)*x[1]+(0.462401759004)*x[2]**o+(-0.714392002134)*x[2]  
         s[2,2,2,1]=(0.240181845755)*x[0]**o+(-0.55763353473)*x[0]+(0.285496776429)*x[1]**o+(0.842557595355)*x[1]+(-0.672368632752)*x[2]**o+(0.298762100435)*x[2]  
         s[2,3,0,0]=(0.316677723523)*x[0]**o+(-0.637036430356)*x[0]+(0.00972363132121)*x[1]**o+(-0.30937691623)*x[1]+(-0.757958054703)*x[2]**o+(0.261972786754)*x[2]  
         s[2,3,0,1]=(-0.0111918506129)*x[0]**o+(-0.79939173162)*x[0]+(0.237847735286)*x[1]**o+(-0.78668226084)*x[1]+(0.707378088836)*x[2]**o+(-0.934201311773)*x[2]  
         s[2,3,1,0]=(-0.0276842306357)*x[0]**o+(0.353182001738)*x[0]+(0.458929280756)*x[1]**o+(0.845593054688)*x[1]+(-0.0437171694787)*x[2]**o+(-0.75271342809)*x[2]  
         s[2,3,1,1]=(0.752394290258)*x[0]**o+(-0.179837111909)*x[0]+(0.939093046468)*x[1]**o+(0.460733186456)*x[1]+(0.747517309414)*x[2]**o+(-0.58266983679)*x[2]  
         s[2,3,2,0]=(-0.951300235705)*x[0]**o+(-0.350444110401)*x[0]+(-0.904564312825)*x[1]**o+(0.356471509479)*x[1]+(0.0971202512406)*x[2]**o+(0.227621817712)*x[2]  
         s[2,3,2,1]=(0.404143843413)*x[0]**o+(-0.911041017819)*x[0]+(-0.567863808091)*x[1]**o+(0.228161895607)*x[1]+(-0.160584718896)*x[2]**o+(-0.951937728172)*x[2]  
         s[2,4,0,0]=(-0.284708280204)*x[0]**o+(-0.225655800044)*x[0]+(0.0189816391307)*x[1]**o+(-0.847695463473)*x[1]+(-0.603035310159)*x[2]**o+(0.878440760667)*x[2]  
         s[2,4,0,1]=(0.249580969821)*x[0]**o+(0.00196364400716)*x[0]+(-0.580222966198)*x[1]**o+(0.266039411545)*x[1]+(-0.0857426202045)*x[2]**o+(0.297517844516)*x[2]  
         s[2,4,1,0]=(-0.847202130689)*x[0]**o+(-0.409645962819)*x[0]+(-0.914867914136)*x[1]**o+(0.464829575727)*x[1]+(0.2358554853)*x[2]**o+(-0.951825555951)*x[2]  
         s[2,4,1,1]=(-0.925109552513)*x[0]**o+(0.57253113036)*x[0]+(0.531590407505)*x[1]**o+(-0.812964837422)*x[1]+(-0.354555503225)*x[2]**o+(-0.453054364223)*x[2]  
         s[2,4,2,0]=(0.669533379208)*x[0]**o+(0.147512160447)*x[0]+(0.730871788446)*x[1]**o+(-0.2646655671)*x[1]+(-0.890950482274)*x[2]**o+(0.28244962845)*x[2]  
         s[2,4,2,1]=(-0.11059763341)*x[0]**o+(0.276920644999)*x[0]+(-0.869145286116)*x[1]**o+(-0.403772968269)*x[1]+(0.319872723054)*x[2]**o+(-0.172168932529)*x[2]  
         s[3,0,0,0]=(-0.309323319641)*x[0]**o+(-0.520023896018)*x[0]+(-0.91435931387)*x[1]**o+(-0.994973476595)*x[1]+(-0.372209395986)*x[2]**o+(0.980356617984)*x[2]  
         s[3,0,0,1]=(0.741365113034)*x[0]**o+(-0.42466697031)*x[0]+(-0.800148478866)*x[1]**o+(0.891726804851)*x[1]+(0.173578031033)*x[2]**o+(-0.830047254257)*x[2]  
         s[3,0,1,0]=(0.292501009071)*x[0]**o+(-0.643570264019)*x[0]+(0.549854764281)*x[1]**o+(-0.359686767247)*x[1]+(-0.242285567291)*x[2]**o+(-0.905609679312)*x[2]  
         s[3,0,1,1]=(-0.340043108142)*x[0]**o+(0.654957588422)*x[0]+(-0.709296972181)*x[1]**o+(0.997889126174)*x[1]+(-0.0231005104624)*x[2]**o+(0.736312548493)*x[2]  
         s[3,0,2,0]=(-0.724460864229)*x[0]**o+(-0.367115506582)*x[0]+(0.932338820643)*x[1]**o+(0.386420866744)*x[1]+(0.0937739144019)*x[2]**o+(0.980197176095)*x[2]  
         s[3,0,2,1]=(-0.123268193799)*x[0]**o+(0.775389790643)*x[0]+(0.374761099968)*x[1]**o+(-0.410566663234)*x[1]+(0.61390455683)*x[2]**o+(-0.424980785321)*x[2]  
         s[3,1,0,0]=(-0.931705529761)*x[0]**o+(-0.883420554924)*x[0]+(0.364171802711)*x[1]**o+(-0.120720945763)*x[1]+(-0.264662446682)*x[2]**o+(0.694245672188)*x[2]  
         s[3,1,0,1]=(0.507167558745)*x[0]**o+(0.41310141465)*x[0]+(0.951808421277)*x[1]**o+(0.194810425697)*x[1]+(0.656365011417)*x[2]**o+(-0.869365458629)*x[2]  
         s[3,1,1,0]=(-0.00813347718406)*x[0]**o+(0.410334738969)*x[0]+(0.749864796873)*x[1]**o+(-0.592730297251)*x[1]+(-0.739489287628)*x[2]**o+(0.620937075039)*x[2]  
         s[3,1,1,1]=(-0.598495133204)*x[0]**o+(0.933561890579)*x[0]+(0.711594544245)*x[1]**o+(-0.307136681784)*x[1]+(-0.391014626741)*x[2]**o+(0.237572771088)*x[2]  
         s[3,1,2,0]=(0.0815836502329)*x[0]**o+(0.265301269129)*x[0]+(0.151163193573)*x[1]**o+(0.734126505497)*x[1]+(-0.607886397818)*x[2]**o+(-0.96735041904)*x[2]  
         s[3,1,2,1]=(0.264092716207)*x[0]**o+(-0.0674826292731)*x[0]+(0.163729761978)*x[1]**o+(-0.76481590065)*x[1]+(0.23022017141)*x[2]**o+(0.0749358120678)*x[2]  
         s[3,2,0,0]=(-0.0551562544206)*x[0]**o+(0.529626011841)*x[0]+(0.394111309195)*x[1]**o+(-0.315588836981)*x[1]+(-0.821692537082)*x[2]**o+(0.687214393749)*x[2]  
         s[3,2,0,1]=(-0.400905852693)*x[0]**o+(-0.588175641647)*x[0]+(-0.759129469971)*x[1]**o+(-0.234537321811)*x[1]+(-0.506929882395)*x[2]**o+(-0.354376736058)*x[2]  
         s[3,2,1,0]=(0.517928718456)*x[0]**o+(0.340801973663)*x[0]+(0.648735816398)*x[1]**o+(0.566053973455)*x[1]+(0.42463576352)*x[2]**o+(0.0873509981339)*x[2]  
         s[3,2,1,1]=(0.452898115077)*x[0]**o+(0.122517234268)*x[0]+(-0.98577530096)*x[1]**o+(-0.353319422026)*x[1]+(0.926541753948)*x[2]**o+(-0.393031058333)*x[2]  
         s[3,2,2,0]=(0.667750444088)*x[0]**o+(0.00375536977016)*x[0]+(0.268195379568)*x[1]**o+(0.50950653377)*x[1]+(-0.262580606419)*x[2]**o+(-0.417690499605)*x[2]  
         s[3,2,2,1]=(-0.16803158003)*x[0]**o+(0.186259658616)*x[0]+(-0.200850683296)*x[1]**o+(-0.443680999529)*x[1]+(0.0208407252003)*x[2]**o+(-0.724292481324)*x[2]  
         s[3,3,0,0]=(-0.35345741052)*x[0]**o+(0.217412970886)*x[0]+(0.27307889565)*x[1]**o+(0.267600255726)*x[1]+(-0.973212265009)*x[2]**o+(-0.129667297553)*x[2]  
         s[3,3,0,1]=(-0.891104426101)*x[0]**o+(-0.613334258669)*x[0]+(-0.373828493642)*x[1]**o+(-0.0702748602911)*x[1]+(0.236710052698)*x[2]**o+(-0.358872144334)*x[2]  
         s[3,3,1,0]=(-0.0928125660128)*x[0]**o+(0.413580667461)*x[0]+(0.8369960454)*x[1]**o+(0.77176338641)*x[1]+(-0.0577873035722)*x[2]**o+(-0.702932886813)*x[2]  
         s[3,3,1,1]=(-0.241426495256)*x[0]**o+(0.525912190909)*x[0]+(-0.428192935989)*x[1]**o+(0.892165668837)*x[1]+(0.0334032549752)*x[2]**o+(0.882084846304)*x[2]  
         s[3,3,2,0]=(-0.891362453397)*x[0]**o+(-0.339599362928)*x[0]+(0.473329812864)*x[1]**o+(-0.371616732026)*x[1]+(0.660699523287)*x[2]**o+(-0.119309478457)*x[2]  
         s[3,3,2,1]=(0.243522118981)*x[0]**o+(0.155411321418)*x[0]+(-0.230275201921)*x[1]**o+(0.63515968566)*x[1]+(0.794898971569)*x[2]**o+(0.409779242619)*x[2]  
         s[3,4,0,0]=(-0.854632433212)*x[0]**o+(-0.195836100347)*x[0]+(-0.437665256019)*x[1]**o+(0.576362236865)*x[1]+(-0.0965898541616)*x[2]**o+(0.477972926354)*x[2]  
         s[3,4,0,1]=(0.570617061345)*x[0]**o+(-0.0667297487904)*x[0]+(0.81823573301)*x[1]**o+(-0.721189008734)*x[1]+(0.314807619532)*x[2]**o+(-0.376322628683)*x[2]  
         s[3,4,1,0]=(-0.580668389702)*x[0]**o+(-0.60760839523)*x[0]+(0.686535934072)*x[1]**o+(0.0779142152446)*x[1]+(0.373571653006)*x[2]**o+(-0.88636603136)*x[2]  
         s[3,4,1,1]=(0.987949055842)*x[0]**o+(-0.370309316213)*x[0]+(0.491077591851)*x[1]**o+(0.544978214302)*x[1]+(0.0979248628028)*x[2]**o+(0.0838359159228)*x[2]  
         s[3,4,2,0]=(-0.0541483763088)*x[0]**o+(0.491394550602)*x[0]+(0.492110322334)*x[1]**o+(-0.113182373476)*x[1]+(0.807657591761)*x[2]**o+(0.387085950646)*x[2]  
         s[3,4,2,1]=(-0.420727803772)*x[0]**o+(-0.105139523222)*x[0]+(-0.51755674286)*x[1]**o+(-0.219056797552)*x[1]+(-0.0414122967561)*x[2]**o+(-0.161491064048)*x[2]  
         ref[0,0,0,0]=(0.776303486002)/(o+1.)+(-0.66485490298)  
         ref[0,0,0,1]=(0.73709920253)/(o+1.)+(-0.0305237564282)  
         ref[0,0,1,0]=(1.62934422719)/(o+1.)+(-0.118729058429)  
         ref[0,0,1,1]=(1.21227703769)/(o+1.)+(-1.04950265251)  
         ref[0,0,2,0]=(-0.989239328736)/(o+1.)+(0.0861717711464)  
         ref[0,0,2,1]=(-0.545045045276)/(o+1.)+(-0.453531722457)  
         ref[0,1,0,0]=(-0.212230003001)/(o+1.)+(-0.0980278628049)  
         ref[0,1,0,1]=(-0.623507761533)/(o+1.)+(0.831239111696)  
         ref[0,1,1,0]=(1.20308213631)/(o+1.)+(0.21904770931)  
         ref[0,1,1,1]=(-0.414005236391)/(o+1.)+(0.734379105797)  
         ref[0,1,2,0]=(1.69005154613)/(o+1.)+(0.599453731488)  
         ref[0,1,2,1]=(1.30699723672)/(o+1.)+(0.447731919557)  
         ref[0,2,0,0]=(-0.274684837419)/(o+1.)+(-0.281541795502)  
         ref[0,2,0,1]=(0.792946401732)/(o+1.)+(0.598271545783)  
         ref[0,2,1,0]=(0.972930281169)/(o+1.)+(-0.692993050277)  
         ref[0,2,1,1]=(-0.0948038476807)/(o+1.)+(-1.02610432679)  
         ref[0,2,2,0]=(-0.417537958819)/(o+1.)+(0.0995721234709)  
         ref[0,2,2,1]=(-0.343497078715)/(o+1.)+(0.287457935028)  
         ref[0,3,0,0]=(1.06075362632)/(o+1.)+(0.392105127981)  
         ref[0,3,0,1]=(-1.00743816734)/(o+1.)+(0.55530959011)  
         ref[0,3,1,0]=(-1.35069907354)/(o+1.)+(-0.151109418893)  
         ref[0,3,1,1]=(-0.209730918326)/(o+1.)+(-0.44139704026)  
         ref[0,3,2,0]=(0.119571029049)/(o+1.)+(-0.788918379535)  
         ref[0,3,2,1]=(0.834197985747)/(o+1.)+(0.0545741077131)  
         ref[0,4,0,0]=(-0.713019032656)/(o+1.)+(0.0605014475136)  
         ref[0,4,0,1]=(-0.188400834074)/(o+1.)+(0.0384669533136)  
         ref[0,4,1,0]=(0.663494658006)/(o+1.)+(-0.197020376502)  
         ref[0,4,1,1]=(1.57999775376)/(o+1.)+(-0.158042262352)  
         ref[0,4,2,0]=(-0.825055197978)/(o+1.)+(0.190884563494)  
         ref[0,4,2,1]=(-0.230079936711)/(o+1.)+(-0.619555317351)  
         ref[1,0,0,0]=(0.0484302346511)/(o+1.)+(-0.277365092912)  
         ref[1,0,0,1]=(-1.18699865107)/(o+1.)+(0.283637899436)  
         ref[1,0,1,0]=(0.347990624042)/(o+1.)+(0.00803167578244)  
         ref[1,0,1,1]=(-0.160064935171)/(o+1.)+(0.185408737905)  
         ref[1,0,2,0]=(1.35245255927)/(o+1.)+(-0.531140014353)  
         ref[1,0,2,1]=(1.13553833557)/(o+1.)+(0.152237391837)  
         ref[1,1,0,0]=(0.99189846918)/(o+1.)+(0.338006421989)  
         ref[1,1,0,1]=(-0.0255713914667)/(o+1.)+(0.12819321635)  
         ref[1,1,1,0]=(-0.622986210996)/(o+1.)+(0.554888335978)  
         ref[1,1,1,1]=(-0.0472909279168)/(o+1.)+(0.185961952963)  
         ref[1,1,2,0]=(-0.729785677925)/(o+1.)+(-0.63936846664)  
         ref[1,1,2,1]=(1.81104663684)/(o+1.)+(0.515008349399)  
         ref[1,2,0,0]=(-1.54598989482)/(o+1.)+(0.284091818483)  
         ref[1,2,0,1]=(0.182955266737)/(o+1.)+(0.00729582783438)  
         ref[1,2,1,0]=(0.0678788403948)/(o+1.)+(0.0566178324469)  
         ref[1,2,1,1]=(1.74208188933)/(o+1.)+(0.659881443367)  
         ref[1,2,2,0]=(-0.0382440547455)/(o+1.)+(-0.535487134074)  
         ref[1,2,2,1]=(0.198093668675)/(o+1.)+(-0.89001529806)  
         ref[1,3,0,0]=(1.62490272607)/(o+1.)+(0.765524305033)  
         ref[1,3,0,1]=(0.279965727369)/(o+1.)+(0.214570595298)  
         ref[1,3,1,0]=(0.304113915286)/(o+1.)+(0.76954018039)  
         ref[1,3,1,1]=(-0.885314465993)/(o+1.)+(0.62922698534)  
         ref[1,3,2,0]=(0.434655075403)/(o+1.)+(-0.793446006776)  
         ref[1,3,2,1]=(0.242224993913)/(o+1.)+(0.35107235084)  
         ref[1,4,0,0]=(0.230763217193)/(o+1.)+(-0.155861223318)  
         ref[1,4,0,1]=(0.808280805525)/(o+1.)+(0.0274401101125)  
         ref[1,4,1,0]=(1.00266325917)/(o+1.)+(0.58007079489)  
         ref[1,4,1,1]=(-0.641806023088)/(o+1.)+(-0.767874882808)  
         ref[1,4,2,0]=(-1.27895710644)/(o+1.)+(0.573630110668)  
         ref[1,4,2,1]=(-1.85031165866)/(o+1.)+(0.233982522704)  
         ref[2,0,0,0]=(-1.36306650425)/(o+1.)+(-0.0533791412027)  
         ref[2,0,0,1]=(1.10778233734)/(o+1.)+(-0.109894920649)  
         ref[2,0,1,0]=(-0.607343404586)/(o+1.)+(-0.0381401236341)  
         ref[2,0,1,1]=(-1.3016959741)/(o+1.)+(0.716358469177)  
         ref[2,0,2,0]=(-1.65648421545)/(o+1.)+(0.675405459391)  
         ref[2,0,2,1]=(1.43609344598)/(o+1.)+(-0.147175797578)  
         ref[2,1,0,0]=(1.71599313418)/(o+1.)+(0.476324427863)  
         ref[2,1,0,1]=(-0.197534803692)/(o+1.)+(0.74045848327)  
         ref[2,1,1,0]=(1.15353139511)/(o+1.)+(-0.202917075571)  
         ref[2,1,1,1]=(-0.646719728334)/(o+1.)+(0.089255774502)  
         ref[2,1,2,0]=(-0.59247668041)/(o+1.)+(0.588338907289)  
         ref[2,1,2,1]=(0.666534772105)/(o+1.)+(-0.171967067769)  
         ref[2,2,0,0]=(0.10417442527)/(o+1.)+(-0.0373262159521)  
         ref[2,2,0,1]=(1.6674625773)/(o+1.)+(0.33614460395)  
         ref[2,2,1,0]=(1.40297752551)/(o+1.)+(-0.392281288816)  
         ref[2,2,1,1]=(-0.72250539345)/(o+1.)+(-0.417148733502)  
         ref[2,2,2,0]=(0.98912794704)/(o+1.)+(-1.19147084052)  
         ref[2,2,2,1]=(-0.146690010568)/(o+1.)+(0.29184308053)  
         ref[2,3,0,0]=(-0.431556699859)/(o+1.)+(-0.342220279916)  
         ref[2,3,0,1]=(0.934033973509)/(o+1.)+(-1.26013765212)  
         ref[2,3,1,0]=(0.387527880641)/(o+1.)+(0.223030814168)  
         ref[2,3,1,1]=(2.43900464614)/(o+1.)+(-0.150886881122)  
         ref[2,3,2,0]=(-1.75874429729)/(o+1.)+(0.116824608395)  
         ref[2,3,2,1]=(-0.324304683574)/(o+1.)+(-0.817408425192)  
         ref[2,4,0,0]=(-0.868761951233)/(o+1.)+(-0.0974552514252)  
         ref[2,4,0,1]=(-0.416384616581)/(o+1.)+(0.282760450034)  
         ref[2,4,1,0]=(-1.52621455953)/(o+1.)+(-0.448320971521)  
         ref[2,4,1,1]=(-0.748074648234)/(o+1.)+(-0.346744035642)  
         ref[2,4,2,0]=(0.50945468538)/(o+1.)+(0.0826481108988)  
         ref[2,4,2,1]=(-0.659870196472)/(o+1.)+(-0.1495106279)  
         ref[3,0,0,0]=(-1.5958920295)/(o+1.)+(-0.267320377314)  
         ref[3,0,0,1]=(0.114794665201)/(o+1.)+(-0.181493709858)  
         ref[3,0,1,0]=(0.600070206061)/(o+1.)+(-0.954433355289)  
         ref[3,0,1,1]=(-1.07244059079)/(o+1.)+(1.19457963154)  
         ref[3,0,2,0]=(0.301651870816)/(o+1.)+(0.499751268128)  
         ref[3,0,2,1]=(0.865397463)/(o+1.)+(-0.0300788289559)  
         ref[3,1,0,0]=(-0.832196173732)/(o+1.)+(-0.15494791425)  
         ref[3,1,0,1]=(2.11534099144)/(o+1.)+(-0.130726809141)  
         ref[3,1,1,0]=(0.00224203206025)/(o+1.)+(0.219270758379)  
         ref[3,1,1,1]=(-0.277915215701)/(o+1.)+(0.431998989942)  
         ref[3,1,2,0]=(-0.375139554013)/(o+1.)+(0.0160386777929)  
         ref[3,1,2,1]=(0.658042649595)/(o+1.)+(-0.378681358928)  
         ref[3,2,0,0]=(-0.482737482307)/(o+1.)+(0.450625784304)  
         ref[3,2,0,1]=(-1.66696520506)/(o+1.)+(-0.588544849758)  
         ref[3,2,1,0]=(1.59130029837)/(o+1.)+(0.497103472626)  
         ref[3,2,1,1]=(0.393664568064)/(o+1.)+(-0.311916623046)  
         ref[3,2,2,0]=(0.673365217238)/(o+1.)+(0.0477857019673)  
         ref[3,2,2,1]=(-0.348041538126)/(o+1.)+(-0.490856911118)  
         ref[3,3,0,0]=(-1.05359077988)/(o+1.)+(0.17767296453)  
         ref[3,3,0,1]=(-1.02822286704)/(o+1.)+(-0.521240631647)  
         ref[3,3,1,0]=(0.686396175815)/(o+1.)+(0.241205583529)  
         ref[3,3,1,1]=(-0.63621617627)/(o+1.)+(1.15008135302)  
         ref[3,3,2,0]=(0.242666882753)/(o+1.)+(-0.415262786705)  
         ref[3,3,2,1]=(0.808145888629)/(o+1.)+(0.600175124848)  
         ref[3,4,0,0]=(-1.38888754339)/(o+1.)+(0.429249531436)  
         ref[3,4,0,1]=(1.70366041389)/(o+1.)+(-0.582120693104)  
         ref[3,4,1,0]=(0.479439197375)/(o+1.)+(-0.708030105673)  
         ref[3,4,1,1]=(1.5769515105)/(o+1.)+(0.129252407006)  
         ref[3,4,2,0]=(1.24561953779)/(o+1.)+(0.382649063886)  
         ref[3,4,2,1]=(-0.979696843387)/(o+1.)+(-0.242843692411)  
       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_onFunction_fromSymbol_Solution_rank0(self):  
       """  
       tests integral of rank 0 Symbol on the Function  
   
       assumptions: Solution(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=Function(self.domain)  
       w=Solution(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=())  
       s=Data(0,(),w)  
       if dim==2:  
         s=(-0.496833468021)*x[0]**o+(-0.119656931817)*x[0]+(-0.456435785007)*x[1]**o+(0.0378732106767)*x[1]  
         ref=(-0.953269253027)/(o+1.)+(-0.04089186057)  
       else:  
         s=(0.960756800558)*x[0]**o+(-0.297563111204)*x[0]+(0.657965711967)*x[1]**o+(-0.942706539964)*x[1]+(-0.460398488427)*x[2]**o+(0.539495746387)*x[2]  
         ref=(1.1583240241)/(o+1.)+(-0.350386952391)  
       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_onFunction_fromSymbol_Solution_rank1(self):  
       """  
       tests integral of rank 1 Symbol on the Function  
   
       assumptions: Solution(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=Function(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.521294857582)*x[0]**o+(0.813966078452)*x[0]+(-0.460972018313)*x[1]**o+(-0.274643646978)*x[1]  
         s[1]=(0.64160433254)*x[0]**o+(0.100182020329)*x[0]+(-0.877560875536)*x[1]**o+(0.0967945574365)*x[1]  
         ref[0]=(-0.982266875895)/(o+1.)+(0.269661215737)  
         ref[1]=(-0.235956542996)/(o+1.)+(0.0984882888828)  
       else:  
         s[0]=(-0.935408759921)*x[0]**o+(-0.636823488942)*x[0]+(-0.937973746046)*x[1]**o+(-0.548377694248)*x[1]+(-0.325664041787)*x[2]**o+(-0.859644239487)*x[2]  
         s[1]=(-0.618325226925)*x[0]**o+(-0.464240689062)*x[0]+(-0.333395219266)*x[1]**o+(0.75384521826)*x[1]+(0.812529741058)*x[2]**o+(0.293845075804)*x[2]  
         ref[0]=(-2.19904654775)/(o+1.)+(-1.02242271134)  
         ref[1]=(-0.139190705133)/(o+1.)+(0.291724802501)  
       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_onFunction_fromSymbol_Solution_rank2(self):  
       """  
       tests integral of rank 2 Symbol on the Function  
   
       assumptions: Solution(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=Function(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.745131837074)*x[0]**o+(0.954368069641)*x[0]+(0.582989014357)*x[1]**o+(0.649474790852)*x[1]  
         s[0,1]=(0.0682420943207)*x[0]**o+(0.890255947523)*x[0]+(-0.501961353506)*x[1]**o+(-0.468049947986)*x[1]  
         s[0,2]=(-0.376326981417)*x[0]**o+(0.318377164087)*x[0]+(0.518313700818)*x[1]**o+(-0.624749027625)*x[1]  
         s[0,3]=(-0.0127578587596)*x[0]**o+(0.510088777647)*x[0]+(-0.00731027766723)*x[1]**o+(0.404116290004)*x[1]  
         s[0,4]=(-0.566065672786)*x[0]**o+(-0.797903214842)*x[0]+(0.305896347185)*x[1]**o+(-0.44763489831)*x[1]  
         s[1,0]=(0.136108309012)*x[0]**o+(0.8858491692)*x[0]+(0.63174549565)*x[1]**o+(0.12884968267)*x[1]  
         s[1,1]=(-0.420219415055)*x[0]**o+(-0.474087579489)*x[0]+(-0.639616730493)*x[1]**o+(-0.339713160471)*x[1]  
         s[1,2]=(0.730001695284)*x[0]**o+(-0.281914379046)*x[0]+(-0.0897917239674)*x[1]**o+(-0.521366256858)*x[1]  
         s[1,3]=(0.507225459863)*x[0]**o+(-0.279054149386)*x[0]+(-0.310997653203)*x[1]**o+(0.798594910647)*x[1]  
         s[1,4]=(-0.473780124237)*x[0]**o+(-0.521982314393)*x[0]+(-0.66517104956)*x[1]**o+(0.906212634536)*x[1]  
         s[2,0]=(0.981595846105)*x[0]**o+(0.306232557856)*x[0]+(0.144004451791)*x[1]**o+(0.590440862044)*x[1]  
         s[2,1]=(-0.465282108724)*x[0]**o+(-0.911349734596)*x[0]+(0.724954062739)*x[1]**o+(0.0617692321941)*x[1]  
         s[2,2]=(-0.698461944366)*x[0]**o+(0.69038728172)*x[0]+(-0.0999661256163)*x[1]**o+(0.81993889447)*x[1]  
         s[2,3]=(-0.850065489825)*x[0]**o+(-0.137124990846)*x[0]+(0.390609467506)*x[1]**o+(0.0928979112394)*x[1]  
         s[2,4]=(-0.831110879728)*x[0]**o+(0.85125177454)*x[0]+(0.322669554869)*x[1]**o+(0.199419883126)*x[1]  
         s[3,0]=(0.560516174698)*x[0]**o+(-0.952963851912)*x[0]+(0.0840374448937)*x[1]**o+(0.852644015588)*x[1]  
         s[3,1]=(-0.738776742753)*x[0]**o+(-0.718650015551)*x[0]+(-0.48025826111)*x[1]**o+(0.163919964403)*x[1]  
         s[3,2]=(-0.498985570012)*x[0]**o+(0.796130560575)*x[0]+(0.78812252561)*x[1]**o+(0.427402467946)*x[1]  
         s[3,3]=(0.900695900592)*x[0]**o+(-0.68276543281)*x[0]+(-0.448699598266)*x[1]**o+(0.338876907438)*x[1]  
         s[3,4]=(-0.101161698815)*x[0]**o+(0.24782725682)*x[0]+(0.194568299968)*x[1]**o+(-0.232062305313)*x[1]  
         ref[0,0]=(1.32812085143)/(o+1.)+(0.801921430247)  
         ref[0,1]=(-0.433719259185)/(o+1.)+(0.211102999768)  
         ref[0,2]=(0.141986719401)/(o+1.)+(-0.153185931769)  
         ref[0,3]=(-0.0200681364268)/(o+1.)+(0.457102533825)  
         ref[0,4]=(-0.260169325601)/(o+1.)+(-0.622769056576)  
         ref[1,0]=(0.767853804662)/(o+1.)+(0.507349425935)  
         ref[1,1]=(-1.05983614555)/(o+1.)+(-0.40690036998)  
         ref[1,2]=(0.640209971317)/(o+1.)+(-0.401640317952)  
         ref[1,3]=(0.19622780666)/(o+1.)+(0.259770380631)  
         ref[1,4]=(-1.1389511738)/(o+1.)+(0.192115160071)  
         ref[2,0]=(1.1256002979)/(o+1.)+(0.44833670995)  
         ref[2,1]=(0.259671954016)/(o+1.)+(-0.424790251201)  
         ref[2,2]=(-0.798428069982)/(o+1.)+(0.755163088095)  
         ref[2,3]=(-0.459456022319)/(o+1.)+(-0.0221135398034)  
         ref[2,4]=(-0.508441324858)/(o+1.)+(0.525335828833)  
         ref[3,0]=(0.644553619592)/(o+1.)+(-0.0501599181621)  
         ref[3,1]=(-1.21903500386)/(o+1.)+(-0.277365025574)  
         ref[3,2]=(0.289136955597)/(o+1.)+(0.611766514261)  
         ref[3,3]=(0.451996302326)/(o+1.)+(-0.171944262686)  
         ref[3,4]=(0.0934066011531)/(o+1.)+(0.00788247575383)  
       else:  
         s[0,0]=(0.581126436866)*x[0]**o+(0.307736169306)*x[0]+(0.46264603817)*x[1]**o+(-0.658226966972)*x[1]+(0.560314472945)*x[2]**o+(-0.71392138112)*x[2]  
         s[0,1]=(0.41763244695)*x[0]**o+(-0.249710720358)*x[0]+(0.318827586572)*x[1]**o+(-0.766338584888)*x[1]+(-0.235847336194)*x[2]**o+(0.720822035745)*x[2]  
         s[0,2]=(0.753177939244)*x[0]**o+(0.575601283201)*x[0]+(0.833261599709)*x[1]**o+(0.285673583448)*x[1]+(-0.850617074406)*x[2]**o+(0.976207021957)*x[2]  
         s[0,3]=(-0.246323991583)*x[0]**o+(-0.425601468065)*x[0]+(-0.631382577618)*x[1]**o+(0.303177559003)*x[1]+(-0.772499313037)*x[2]**o+(0.0976456268892)*x[2]  
         s[0,4]=(0.459782891083)*x[0]**o+(0.695607546341)*x[0]+(-0.758437555397)*x[1]**o+(-0.0467038938803)*x[1]+(0.077637691262)*x[2]**o+(0.632686471042)*x[2]  
         s[1,0]=(0.62677312896)*x[0]**o+(-0.538520494446)*x[0]+(0.322526032671)*x[1]**o+(0.155570348616)*x[1]+(-0.645711565238)*x[2]**o+(-0.505639404827)*x[2]  
         s[1,1]=(0.760035088253)*x[0]**o+(-0.653433840013)*x[0]+(0.541102747261)*x[1]**o+(0.102121826295)*x[1]+(0.203147157734)*x[2]**o+(0.825692237055)*x[2]  
         s[1,2]=(0.83286976398)*x[0]**o+(-0.483950138218)*x[0]+(-0.988388711773)*x[1]**o+(0.276946264031)*x[1]+(-0.769100710972)*x[2]**o+(-0.857758652165)*x[2]  
         s[1,3]=(0.965261287995)*x[0]**o+(-0.582299103263)*x[0]+(0.650118954781)*x[1]**o+(-0.714080635544)*x[1]+(-0.984672595257)*x[2]**o+(-0.890248882426)*x[2]  
         s[1,4]=(0.780505914972)*x[0]**o+(-0.469283145875)*x[0]+(0.65642477278)*x[1]**o+(-0.0385309033271)*x[1]+(-0.838684124311)*x[2]**o+(0.715186480156)*x[2]  
         s[2,0]=(-0.957976655406)*x[0]**o+(-0.326902969464)*x[0]+(0.519819227981)*x[1]**o+(0.526859170123)*x[1]+(-0.83643924332)*x[2]**o+(-0.833906618158)*x[2]  
         s[2,1]=(0.511380988321)*x[0]**o+(0.205939303999)*x[0]+(-0.560011037377)*x[1]**o+(-0.74412420954)*x[1]+(-0.413858375939)*x[2]**o+(-0.818302325723)*x[2]  
         s[2,2]=(0.669120009156)*x[0]**o+(-0.680617749061)*x[0]+(-0.855851359703)*x[1]**o+(0.681103383833)*x[1]+(0.358345655307)*x[2]**o+(-0.834176731331)*x[2]  
         s[2,3]=(0.113991673968)*x[0]**o+(-0.167621358311)*x[0]+(-0.824506843066)*x[1]**o+(0.576032397062)*x[1]+(0.98813748839)*x[2]**o+(-0.954277123787)*x[2]  
         s[2,4]=(0.758065768891)*x[0]**o+(0.550472010004)*x[0]+(0.541968389568)*x[1]**o+(-0.893196211859)*x[1]+(0.55846204484)*x[2]**o+(-0.154935285741)*x[2]  
         s[3,0]=(0.319452905704)*x[0]**o+(0.416924332754)*x[0]+(0.695996329307)*x[1]**o+(-0.512723809281)*x[1]+(-0.0438582487583)*x[2]**o+(-0.202757150975)*x[2]  
         s[3,1]=(0.300936121076)*x[0]**o+(0.0199168771219)*x[0]+(-0.79311689061)*x[1]**o+(0.120821678434)*x[1]+(0.832598541766)*x[2]**o+(-0.13378517127)*x[2]  
         s[3,2]=(0.816251625164)*x[0]**o+(0.180324577125)*x[0]+(0.869902904875)*x[1]**o+(-0.300483761133)*x[1]+(0.405728532808)*x[2]**o+(-0.772682148538)*x[2]  
         s[3,3]=(-0.0882536430174)*x[0]**o+(0.67244001887)*x[0]+(-0.295701327277)*x[1]**o+(-0.235065967505)*x[1]+(0.905094390215)*x[2]**o+(-0.132120939051)*x[2]  
         s[3,4]=(0.976955651594)*x[0]**o+(0.36283338584)*x[0]+(0.21945555266)*x[1]**o+(-0.305668951381)*x[1]+(0.581731431193)*x[2]**o+(-0.308954336316)*x[2]  
         ref[0,0]=(1.60408694798)/(o+1.)+(-0.532206089393)  
         ref[0,1]=(0.500612697329)/(o+1.)+(-0.147613634751)  
         ref[0,2]=(0.735822464547)/(o+1.)+(0.918740944303)  
         ref[0,3]=(-1.65020588224)/(o+1.)+(-0.0123891410865)  
         ref[0,4]=(-0.221016973052)/(o+1.)+(0.640795061752)  
         ref[1,0]=(0.303587596392)/(o+1.)+(-0.444294775329)  
         ref[1,1]=(1.50428499325)/(o+1.)+(0.137190111668)  
         ref[1,2]=(-0.924619658766)/(o+1.)+(-0.532381263176)  
         ref[1,3]=(0.630707647519)/(o+1.)+(-1.09331431062)  
         ref[1,4]=(0.598246563441)/(o+1.)+(0.103686215477)  
         ref[2,0]=(-1.27459667074)/(o+1.)+(-0.31697520875)  
         ref[2,1]=(-0.462488424995)/(o+1.)+(-0.678243615632)  
         ref[2,2]=(0.17161430476)/(o+1.)+(-0.416845548279)  
         ref[2,3]=(0.277622319292)/(o+1.)+(-0.272933042518)  
         ref[2,4]=(1.8584962033)/(o+1.)+(-0.248829743798)  
         ref[3,0]=(0.971590986252)/(o+1.)+(-0.149278313751)  
         ref[3,1]=(0.340417772233)/(o+1.)+(0.00347669214316)  
         ref[3,2]=(2.09188306285)/(o+1.)+(-0.446420666273)  
         ref[3,3]=(0.521139419921)/(o+1.)+(0.152626556157)  
         ref[3,4]=(1.77814263545)/(o+1.)+(-0.125894950929)  
       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_onFunction_fromSymbol_Solution_rank3(self):  
       """  
       tests integral of rank 3 Symbol on the Function  
   
       assumptions: Solution(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=Function(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.327469743415)*x[0]**o+(0.986515360087)*x[0]+(-0.264743586601)*x[1]**o+(-0.417911841646)*x[1]  
         s[0,0,1]=(-0.367335531482)*x[0]**o+(-0.294564095391)*x[0]+(0.948849162205)*x[1]**o+(-0.672727814952)*x[1]  
         s[0,1,0]=(0.201971500659)*x[0]**o+(0.715648302042)*x[0]+(0.200753457036)*x[1]**o+(-0.447431022755)*x[1]  
         s[0,1,1]=(0.391503527712)*x[0]**o+(0.561563485529)*x[0]+(0.0756343714486)*x[1]**o+(-0.232567658257)*x[1]  
         s[1,0,0]=(0.0416189159889)*x[0]**o+(0.933172580543)*x[0]+(0.906370262092)*x[1]**o+(0.843408035954)*x[1]  
         s[1,0,1]=(-0.0489328569668)*x[0]**o+(0.305933018225)*x[0]+(0.459563500395)*x[1]**o+(-0.305696910459)*x[1]  
         s[1,1,0]=(-0.166432892993)*x[0]**o+(0.323257103336)*x[0]+(-0.876673724336)*x[1]**o+(-0.246533332987)*x[1]  
         s[1,1,1]=(0.331551737096)*x[0]**o+(-0.473411829001)*x[0]+(0.658917172856)*x[1]**o+(-0.645603256937)*x[1]  
         s[2,0,0]=(-0.779837619461)*x[0]**o+(0.726847293406)*x[0]+(0.756283586425)*x[1]**o+(0.820695230411)*x[1]  
         s[2,0,1]=(-0.0446700642358)*x[0]**o+(-0.00612226458731)*x[0]+(-0.255350731215)*x[1]**o+(0.279072151991)*x[1]  
         s[2,1,0]=(0.952754783643)*x[0]**o+(0.575497372286)*x[0]+(-0.996409669059)*x[1]**o+(-0.993504128277)*x[1]  
         s[2,1,1]=(-0.964146199975)*x[0]**o+(-0.89830816406)*x[0]+(0.27874102283)*x[1]**o+(-0.193698734442)*x[1]  
         s[3,0,0]=(-0.22434829265)*x[0]**o+(-0.451123824419)*x[0]+(0.0996011155458)*x[1]**o+(-0.0196796989303)*x[1]  
         s[3,0,1]=(0.479762785194)*x[0]**o+(-0.0875868570981)*x[0]+(-0.604020314973)*x[1]**o+(-0.948950136203)*x[1]  
         s[3,1,0]=(0.380546378709)*x[0]**o+(0.968895520825)*x[0]+(0.0717757394195)*x[1]**o+(0.00273829931123)*x[1]  
         s[3,1,1]=(0.999877803305)*x[0]**o+(0.726497905193)*x[0]+(-0.156097974361)*x[1]**o+(0.875069921439)*x[1]  
         s[4,0,0]=(0.298060895282)*x[0]**o+(-0.25017046132)*x[0]+(-0.6409928584)*x[1]**o+(0.237325951363)*x[1]  
         s[4,0,1]=(0.176241833972)*x[0]**o+(0.362302520221)*x[0]+(-0.632667110076)*x[1]**o+(0.206684577439)*x[1]  
         s[4,1,0]=(-0.0658280231422)*x[0]**o+(-0.830173560366)*x[0]+(-0.408668580492)*x[1]**o+(0.131219154432)*x[1]  
         s[4,1,1]=(-0.739357616315)*x[0]**o+(0.331825079796)*x[0]+(-0.950532071867)*x[1]**o+(0.430637319576)*x[1]  
         s[5,0,0]=(-0.374056178585)*x[0]**o+(-0.503558441322)*x[0]+(0.253751100374)*x[1]**o+(-0.169874527745)*x[1]  
         s[5,0,1]=(-0.540168118335)*x[0]**o+(-0.599437156114)*x[0]+(-0.545843659509)*x[1]**o+(-0.144502584314)*x[1]  
         s[5,1,0]=(0.734871232877)*x[0]**o+(0.294937992469)*x[0]+(0.318246966782)*x[1]**o+(0.301215884904)*x[1]  
         s[5,1,1]=(-0.48224128272)*x[0]**o+(-0.971913873914)*x[0]+(-0.853997429288)*x[1]**o+(0.911950472127)*x[1]  
         ref[0,0,0]=(0.062726156814)/(o+1.)+(0.284301759221)  
         ref[0,0,1]=(0.581513630723)/(o+1.)+(-0.483645955172)  
         ref[0,1,0]=(0.402724957695)/(o+1.)+(0.134108639643)  
         ref[0,1,1]=(0.467137899161)/(o+1.)+(0.164497913636)  
         ref[1,0,0]=(0.947989178081)/(o+1.)+(0.888290308248)  
         ref[1,0,1]=(0.410630643428)/(o+1.)+(0.000118053882864)  
         ref[1,1,0]=(-1.04310661733)/(o+1.)+(0.0383618851745)  
         ref[1,1,1]=(0.990468909952)/(o+1.)+(-0.559507542969)  
         ref[2,0,0]=(-0.0235540330353)/(o+1.)+(0.773771261908)  
         ref[2,0,1]=(-0.300020795451)/(o+1.)+(0.136474943702)  
         ref[2,1,0]=(-0.043654885416)/(o+1.)+(-0.209003377996)  
         ref[2,1,1]=(-0.685405177144)/(o+1.)+(-0.546003449251)  
         ref[3,0,0]=(-0.124747177104)/(o+1.)+(-0.235401761675)  
         ref[3,0,1]=(-0.124257529779)/(o+1.)+(-0.51826849665)  
         ref[3,1,0]=(0.452322118128)/(o+1.)+(0.485816910068)  
         ref[3,1,1]=(0.843779828944)/(o+1.)+(0.800783913316)  
         ref[4,0,0]=(-0.342931963118)/(o+1.)+(-0.00642225497804)  
         ref[4,0,1]=(-0.456425276104)/(o+1.)+(0.28449354883)  
         ref[4,1,0]=(-0.474496603634)/(o+1.)+(-0.349477202967)  
         ref[4,1,1]=(-1.68988968818)/(o+1.)+(0.381231199686)  
         ref[5,0,0]=(-0.120305078211)/(o+1.)+(-0.336716484533)  
         ref[5,0,1]=(-1.08601177784)/(o+1.)+(-0.371969870214)  
         ref[5,1,0]=(1.05311819966)/(o+1.)+(0.298076938687)  
         ref[5,1,1]=(-1.33623871201)/(o+1.)+(-0.0299817008935)  
       else:  
         s[0,0,0]=(0.907642728831)*x[0]**o+(0.24755436099)*x[0]+(0.329429496561)*x[1]**o+(0.195804615806)*x[1]+(0.635928214783)*x[2]**o+(0.286575554416)*x[2]  
         s[0,0,1]=(-0.596463751156)*x[0]**o+(-0.573557158304)*x[0]+(-0.799372215818)*x[1]**o+(0.917917612224)*x[1]+(0.743915017372)*x[2]**o+(0.697340711065)*x[2]  
         s[0,1,0]=(-0.226377288829)*x[0]**o+(0.11441928128)*x[0]+(0.915343934109)*x[1]**o+(0.0235994828916)*x[1]+(0.837206417747)*x[2]**o+(-0.809536949964)*x[2]  
         s[0,1,1]=(-0.807835571238)*x[0]**o+(-0.313842967415)*x[0]+(0.143974822075)*x[1]**o+(0.772050096219)*x[1]+(0.0698457301843)*x[2]**o+(-0.878711129876)*x[2]  
         s[1,0,0]=(0.806964016183)*x[0]**o+(0.906862034833)*x[0]+(0.656990650598)*x[1]**o+(0.858146180457)*x[1]+(-0.455748564953)*x[2]**o+(0.0415537957765)*x[2]  
         s[1,0,1]=(0.930192572382)*x[0]**o+(0.406175274412)*x[0]+(0.522683472096)*x[1]**o+(-0.40154832923)*x[1]+(0.62436447915)*x[2]**o+(0.942684294891)*x[2]  
         s[1,1,0]=(-0.190480904061)*x[0]**o+(-0.884913647118)*x[0]+(0.894504380487)*x[1]**o+(0.472867062235)*x[1]+(-0.226561577541)*x[2]**o+(0.0817340770676)*x[2]  
         s[1,1,1]=(-0.785577817856)*x[0]**o+(0.286061214076)*x[0]+(-0.29241495776)*x[1]**o+(-0.885469334696)*x[1]+(-0.728917274605)*x[2]**o+(-0.400170372532)*x[2]  
         s[2,0,0]=(-0.0443801095191)*x[0]**o+(-0.580757683753)*x[0]+(-0.680012816252)*x[1]**o+(-0.24174589493)*x[1]+(-0.32345463822)*x[2]**o+(0.488362285647)*x[2]  
         s[2,0,1]=(0.427683981593)*x[0]**o+(0.709521979359)*x[0]+(-0.485171186139)*x[1]**o+(-0.466170281294)*x[1]+(0.668169758775)*x[2]**o+(-0.32376435425)*x[2]  
         s[2,1,0]=(-0.322582923837)*x[0]**o+(-0.243805747954)*x[0]+(-0.282254505116)*x[1]**o+(0.276894252913)*x[1]+(0.425316275665)*x[2]**o+(-0.843958018195)*x[2]  
         s[2,1,1]=(-0.172148420657)*x[0]**o+(0.288740472914)*x[0]+(0.3130139801)*x[1]**o+(0.0909556111434)*x[1]+(-0.134361659944)*x[2]**o+(-0.958259889515)*x[2]  
         s[3,0,0]=(0.509175759598)*x[0]**o+(0.901681022023)*x[0]+(-0.04878880083)*x[1]**o+(-0.292935057546)*x[1]+(-0.73460973687)*x[2]**o+(0.143266558286)*x[2]  
         s[3,0,1]=(-0.525256676545)*x[0]**o+(0.330501687555)*x[0]+(-0.533311903214)*x[1]**o+(-0.558985165298)*x[1]+(-0.726910027746)*x[2]**o+(-0.430022743518)*x[2]  
         s[3,1,0]=(-0.801052113128)*x[0]**o+(0.383850418649)*x[0]+(-0.74692163952)*x[1]**o+(0.119907629434)*x[1]+(-0.688440032866)*x[2]**o+(0.258856702215)*x[2]  
         s[3,1,1]=(0.662483893926)*x[0]**o+(0.321392974926)*x[0]+(0.797623010994)*x[1]**o+(-0.555546458227)*x[1]+(0.140050792242)*x[2]**o+(0.819042937008)*x[2]  
         s[4,0,0]=(0.208697187872)*x[0]**o+(0.347715032509)*x[0]+(0.900642395285)*x[1]**o+(-0.121096976816)*x[1]+(0.473919668027)*x[2]**o+(0.693182424772)*x[2]  
         s[4,0,1]=(0.185689163302)*x[0]**o+(0.923973904464)*x[0]+(-0.091048447659)*x[1]**o+(-0.331567067076)*x[1]+(0.0639420800968)*x[2]**o+(0.0645745629094)*x[2]  
         s[4,1,0]=(-0.097237311089)*x[0]**o+(0.0234720818008)*x[0]+(-0.476652797084)*x[1]**o+(-0.258741500235)*x[1]+(-0.644183703276)*x[2]**o+(-0.953514564143)*x[2]  
         s[4,1,1]=(-0.647701499983)*x[0]**o+(0.514337030449)*x[0]+(-0.779360494982)*x[1]**o+(-0.467345311588)*x[1]+(0.166149183082)*x[2]**o+(0.12480608055)*x[2]  
         s[5,0,0]=(-0.349937644226)*x[0]**o+(0.673132604681)*x[0]+(0.793703484606)*x[1]**o+(0.958967045691)*x[1]+(-0.361047380062)*x[2]**o+(0.758206969142)*x[2]  
         s[5,0,1]=(0.415890706186)*x[0]**o+(0.748811321123)*x[0]+(-0.629959299026)*x[1]**o+(0.706391001435)*x[1]+(-0.831407461643)*x[2]**o+(0.698632094335)*x[2]  
         s[5,1,0]=(-0.914414551259)*x[0]**o+(0.85324200236)*x[0]+(0.273543170188)*x[1]**o+(0.311955664492)*x[1]+(0.726975838083)*x[2]**o+(0.671917428159)*x[2]  
         s[5,1,1]=(0.450170734221)*x[0]**o+(-0.928357299044)*x[0]+(-0.645229625203)*x[1]**o+(0.756723626659)*x[1]+(-0.85050032636)*x[2]**o+(0.70593481655)*x[2]  
         ref[0,0,0]=(1.87300044017)/(o+1.)+(0.364967265606)  
         ref[0,0,1]=(-0.651920949601)/(o+1.)+(0.520850582493)  
         ref[0,1,0]=(1.52617306303)/(o+1.)+(-0.335759092896)  
         ref[0,1,1]=(-0.594015018979)/(o+1.)+(-0.210252000536)  
         ref[1,0,0]=(1.00820610183)/(o+1.)+(0.903281005533)  
         ref[1,0,1]=(2.07724052363)/(o+1.)+(0.473655620037)  
         ref[1,1,0]=(0.477461898885)/(o+1.)+(-0.165156253908)  
         ref[1,1,1]=(-1.80691005022)/(o+1.)+(-0.499789246576)  
         ref[2,0,0]=(-1.04784756399)/(o+1.)+(-0.167070646517)  
         ref[2,0,1]=(0.610682554229)/(o+1.)+(-0.0402063280924)  
         ref[2,1,0]=(-0.179521153288)/(o+1.)+(-0.405434756618)  
         ref[2,1,1]=(0.00650389949838)/(o+1.)+(-0.289281902729)  
         ref[3,0,0]=(-0.274222778102)/(o+1.)+(0.376006261382)  
         ref[3,0,1]=(-1.7854786075)/(o+1.)+(-0.329253110631)  
         ref[3,1,0]=(-2.23641378551)/(o+1.)+(0.381307375149)  
         ref[3,1,1]=(1.60015769716)/(o+1.)+(0.292444726853)  
         ref[4,0,0]=(1.58325925118)/(o+1.)+(0.459900240233)  
         ref[4,0,1]=(0.15858279574)/(o+1.)+(0.328490700148)  
         ref[4,1,0]=(-1.21807381145)/(o+1.)+(-0.594391991289)  
         ref[4,1,1]=(-1.26091281188)/(o+1.)+(0.085898899706)  
         ref[5,0,0]=(0.0827184603185)/(o+1.)+(1.19515330976)  
         ref[5,0,1]=(-1.04547605448)/(o+1.)+(1.07691720845)  
         ref[5,1,0]=(0.086104457012)/(o+1.)+(0.918557547505)  
         ref[5,1,1]=(-1.04555921734)/(o+1.)+(0.267150572083)  
       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_onFunction_fromSymbol_Solution_rank4(self):  
       """  
       tests integral of rank 4 Symbol on the Function  
   
       assumptions: Solution(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=Function(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.501583472757)*x[0]**o+(0.174276674809)*x[0]+(0.474559132041)*x[1]**o+(0.944197178797)*x[1]  
         s[0,0,0,1]=(-0.850492891287)*x[0]**o+(-0.778714553562)*x[0]+(-0.864025500909)*x[1]**o+(0.905856111362)*x[1]  
         s[0,0,1,0]=(0.837983487193)*x[0]**o+(0.789080933347)*x[0]+(0.0618430819498)*x[1]**o+(0.791928371037)*x[1]  
         s[0,0,1,1]=(-0.678469228871)*x[0]**o+(0.702133334239)*x[0]+(-0.937443836374)*x[1]**o+(-0.130947584181)*x[1]  
         s[0,0,2,0]=(0.84013488851)*x[0]**o+(0.683811818455)*x[0]+(0.981450595677)*x[1]**o+(-0.813078675111)*x[1]  
         s[0,0,2,1]=(0.00148903051979)*x[0]**o+(-0.740776021571)*x[0]+(0.917048043634)*x[1]**o+(0.362159065586)*x[1]  
         s[0,1,0,0]=(0.285313019304)*x[0]**o+(0.0108652086531)*x[0]+(0.323356296135)*x[1]**o+(0.541189488955)*x[1]  
         s[0,1,0,1]=(0.545540725184)*x[0]**o+(-0.803623471109)*x[0]+(0.861711269888)*x[1]**o+(0.614843604935)*x[1]  
         s[0,1,1,0]=(0.44131453032)*x[0]**o+(-0.560146628455)*x[0]+(-0.390081444316)*x[1]**o+(-0.814215730743)*x[1]  
         s[0,1,1,1]=(-0.120309068092)*x[0]**o+(-0.992223638563)*x[0]+(-0.757944249628)*x[1]**o+(-0.906900780015)*x[1]  
         s[0,1,2,0]=(0.278503974882)*x[0]**o+(0.471665153392)*x[0]+(0.745287973293)*x[1]**o+(-0.572972893657)*x[1]  
         s[0,1,2,1]=(0.840866880159)*x[0]**o+(-0.969714982065)*x[0]+(-0.181097771175)*x[1]**o+(-0.645812375407)*x[1]  
         s[0,2,0,0]=(-0.791010044792)*x[0]**o+(-0.895489878363)*x[0]+(-0.32385199033)*x[1]**o+(0.892979821152)*x[1]  
         s[0,2,0,1]=(0.966330767971)*x[0]**o+(0.757433262697)*x[0]+(0.859264987879)*x[1]**o+(0.836273715628)*x[1]  
         s[0,2,1,0]=(0.764347587379)*x[0]**o+(0.498460349969)*x[0]+(0.896024738679)*x[1]**o+(0.341308865054)*x[1]  
         s[0,2,1,1]=(-0.276964987386)*x[0]**o+(-0.294300496732)*x[0]+(-0.755886597374)*x[1]**o+(0.0964446535133)*x[1]  
         s[0,2,2,0]=(0.933876243978)*x[0]**o+(0.694067023434)*x[0]+(-0.626635561624)*x[1]**o+(0.107630740485)*x[1]  
         s[0,2,2,1]=(0.905601520891)*x[0]**o+(0.246861090683)*x[0]+(0.364620749293)*x[1]**o+(-0.34329084894)*x[1]  
         s[0,3,0,0]=(-0.484050880674)*x[0]**o+(-0.344211446029)*x[0]+(-0.304888212647)*x[1]**o+(-0.918515747538)*x[1]  
         s[0,3,0,1]=(0.352307753352)*x[0]**o+(-0.497295643302)*x[0]+(-0.0859041918813)*x[1]**o+(-0.566829131134)*x[1]  
         s[0,3,1,0]=(0.458949103752)*x[0]**o+(-0.940473606591)*x[0]+(0.500249302466)*x[1]**o+(-0.192176323799)*x[1]  
         s[0,3,1,1]=(0.714312790267)*x[0]**o+(0.219740572431)*x[0]+(-0.621517496057)*x[1]**o+(-0.79963217554)*x[1]  
         s[0,3,2,0]=(-0.041379012308)*x[0]**o+(-0.674987043823)*x[0]+(-0.0165846458396)*x[1]**o+(0.643074958959)*x[1]  
         s[0,3,2,1]=(-0.258839387368)*x[0]**o+(0.63938656748)*x[0]+(0.0042420382287)*x[1]**o+(-0.711660235823)*x[1]  
         s[0,4,0,0]=(-0.905262277861)*x[0]**o+(0.995066153797)*x[0]+(0.895316712432)*x[1]**o+(0.794484306559)*x[1]  
         s[0,4,0,1]=(0.858709170162)*x[0]**o+(-0.896059882819)*x[0]+(-0.322447413352)*x[1]**o+(0.356724683447)*x[1]  
         s[0,4,1,0]=(-0.496930600469)*x[0]**o+(-0.715930772072)*x[0]+(0.514137034309)*x[1]**o+(0.738095094325)*x[1]  
         s[0,4,1,1]=(-0.475961686127)*x[0]**o+(0.406077221295)*x[0]+(-0.934472851356)*x[1]**o+(0.184564622216)*x[1]  
         s[0,4,2,0]=(0.50929205392)*x[0]**o+(-0.361652258356)*x[0]+(-0.828564581552)*x[1]**o+(0.864597967503)*x[1]  
         s[0,4,2,1]=(-0.670572914815)*x[0]**o+(-0.917836333665)*x[0]+(0.329473913157)*x[1]**o+(0.649536686851)*x[1]  
         s[1,0,0,0]=(0.507327212873)*x[0]**o+(-0.784119587219)*x[0]+(0.861200611677)*x[1]**o+(-0.537142113189)*x[1]  
         s[1,0,0,1]=(0.307279452436)*x[0]**o+(-0.331535898217)*x[0]+(0.864752548746)*x[1]**o+(-0.41254012361)*x[1]  
         s[1,0,1,0]=(0.723666220176)*x[0]**o+(-0.528755526062)*x[0]+(0.182515067109)*x[1]**o+(-0.33319767285)*x[1]  
         s[1,0,1,1]=(-0.652532069809)*x[0]**o+(-0.497647481159)*x[0]+(-0.726676961172)*x[1]**o+(0.901803102587)*x[1]  
         s[1,0,2,0]=(0.966840239828)*x[0]**o+(-0.559625286504)*x[0]+(0.856786274248)*x[1]**o+(-0.231280485522)*x[1]  
         s[1,0,2,1]=(0.898750450503)*x[0]**o+(-0.241387492118)*x[0]+(-0.242302411171)*x[1]**o+(-0.931590118111)*x[1]  
         s[1,1,0,0]=(0.298117967411)*x[0]**o+(-0.887837423565)*x[0]+(-0.804393274952)*x[1]**o+(-0.339940646012)*x[1]  
         s[1,1,0,1]=(-0.3303942703)*x[0]**o+(0.22588379719)*x[0]+(0.427447092807)*x[1]**o+(-0.940368147505)*x[1]  
         s[1,1,1,0]=(-0.227054817206)*x[0]**o+(0.76367061207)*x[0]+(-0.382609156261)*x[1]**o+(-0.869111355614)*x[1]  
         s[1,1,1,1]=(0.538281073824)*x[0]**o+(-0.454205347349)*x[0]+(-0.121007985262)*x[1]**o+(0.0290163849694)*x[1]  
         s[1,1,2,0]=(-0.888958335111)*x[0]**o+(0.779682676236)*x[0]+(-0.875785352701)*x[1]**o+(-0.891960671849)*x[1]  
         s[1,1,2,1]=(-0.173332519418)*x[0]**o+(-0.104421077299)*x[0]+(0.906729441747)*x[1]**o+(-0.616671337017)*x[1]  
         s[1,2,0,0]=(-0.305885548664)*x[0]**o+(-0.86724411868)*x[0]+(-0.787155086634)*x[1]**o+(-0.898599442906)*x[1]  
         s[1,2,0,1]=(0.848368426968)*x[0]**o+(0.0802812152769)*x[0]+(-0.378057863356)*x[1]**o+(-0.428488725116)*x[1]  
         s[1,2,1,0]=(-0.290675868214)*x[0]**o+(0.342045945019)*x[0]+(-0.421298816185)*x[1]**o+(-0.553807359319)*x[1]  
         s[1,2,1,1]=(0.0289012545961)*x[0]**o+(0.423276922447)*x[0]+(-0.911749389958)*x[1]**o+(-0.39409305776)*x[1]  
         s[1,2,2,0]=(0.904480195539)*x[0]**o+(-0.729896491926)*x[0]+(-0.21305322735)*x[1]**o+(-0.347444381896)*x[1]  
         s[1,2,2,1]=(0.34039428449)*x[0]**o+(-0.246758392869)*x[0]+(-0.159391459268)*x[1]**o+(-0.630134063159)*x[1]  
         s[1,3,0,0]=(0.202017077356)*x[0]**o+(-0.195969669611)*x[0]+(0.267580338059)*x[1]**o+(-0.274282886887)*x[1]  
         s[1,3,0,1]=(-0.183473257308)*x[0]**o+(-0.646999501714)*x[0]+(-0.746037354076)*x[1]**o+(-0.180977233442)*x[1]  
         s[1,3,1,0]=(0.895075853694)*x[0]**o+(-0.820090467371)*x[0]+(-0.040561177436)*x[1]**o+(0.749395910572)*x[1]  
         s[1,3,1,1]=(-0.232039710082)*x[0]**o+(-0.633561589743)*x[0]+(0.862514378491)*x[1]**o+(0.782438844898)*x[1]  
         s[1,3,2,0]=(-0.0228789327036)*x[0]**o+(0.604368007016)*x[0]+(0.413803296189)*x[1]**o+(0.651011054925)*x[1]  
         s[1,3,2,1]=(-0.682393812631)*x[0]**o+(-0.508380759547)*x[0]+(-0.958515947271)*x[1]**o+(-0.396382186265)*x[1]  
         s[1,4,0,0]=(0.772945258804)*x[0]**o+(0.981773233361)*x[0]+(-0.415876208997)*x[1]**o+(0.391268836611)*x[1]  
         s[1,4,0,1]=(-0.111414446087)*x[0]**o+(-0.381712931273)*x[0]+(0.389894843435)*x[1]**o+(-0.276144369314)*x[1]  
         s[1,4,1,0]=(0.544309017751)*x[0]**o+(0.920841251767)*x[0]+(-0.524322161349)*x[1]**o+(-0.745967887424)*x[1]  
         s[1,4,1,1]=(0.0993088568573)*x[0]**o+(0.172455640245)*x[0]+(-0.310227024922)*x[1]**o+(0.503773577532)*x[1]  
         s[1,4,2,0]=(-0.282979849337)*x[0]**o+(0.573540669768)*x[0]+(0.974343187515)*x[1]**o+(0.643215559873)*x[1]  
         s[1,4,2,1]=(0.616949303196)*x[0]**o+(-0.206142689323)*x[0]+(0.594875479161)*x[1]**o+(0.390460380914)*x[1]  
         s[2,0,0,0]=(-0.164379488326)*x[0]**o+(-0.613380471473)*x[0]+(-0.309735177264)*x[1]**o+(0.722815882927)*x[1]  
         s[2,0,0,1]=(-0.443733554915)*x[0]**o+(-0.226908044072)*x[0]+(0.22281947804)*x[1]**o+(0.321557448698)*x[1]  
         s[2,0,1,0]=(0.979229428359)*x[0]**o+(-0.410075647119)*x[0]+(-0.0869658073133)*x[1]**o+(0.472354461211)*x[1]  
         s[2,0,1,1]=(0.279554115394)*x[0]**o+(0.982131537982)*x[0]+(0.865627129266)*x[1]**o+(0.0595046994689)*x[1]  
         s[2,0,2,0]=(-0.928629057762)*x[0]**o+(-0.0888000293033)*x[0]+(0.925425619622)*x[1]**o+(0.286877459131)*x[1]  
         s[2,0,2,1]=(-0.128076644671)*x[0]**o+(0.769985562586)*x[0]+(-0.326281257692)*x[1]**o+(-0.904253231113)*x[1]  
         s[2,1,0,0]=(-7.49817068653e-05)*x[0]**o+(0.944960174862)*x[0]+(0.394130491438)*x[1]**o+(0.904576980195)*x[1]  
         s[2,1,0,1]=(0.51260445176)*x[0]**o+(0.871495843591)*x[0]+(-0.0117378185696)*x[1]**o+(-0.447028599408)*x[1]  
         s[2,1,1,0]=(0.385302842134)*x[0]**o+(0.68530194308)*x[0]+(0.908717705423)*x[1]**o+(0.0657269588494)*x[1]  
         s[2,1,1,1]=(-0.175101480962)*x[0]**o+(-0.0126863839895)*x[0]+(0.544228922923)*x[1]**o+(-0.856957800534)*x[1]  
         s[2,1,2,0]=(-0.74757544736)*x[0]**o+(-0.705933683532)*x[0]+(0.496113134499)*x[1]**o+(0.134139074285)*x[1]  
         s[2,1,2,1]=(0.661170765505)*x[0]**o+(-0.0954233403413)*x[0]+(0.796712312861)*x[1]**o+(0.941668952301)*x[1]  
         s[2,2,0,0]=(0.396185569444)*x[0]**o+(0.352712187886)*x[0]+(0.132847269784)*x[1]**o+(0.00561831278948)*x[1]  
         s[2,2,0,1]=(-0.284087190739)*x[0]**o+(-0.307024290069)*x[0]+(-0.958481172381)*x[1]**o+(0.0918318779969)*x[1]  
         s[2,2,1,0]=(0.0633474988001)*x[0]**o+(-0.650310080822)*x[0]+(0.576579254607)*x[1]**o+(0.674521364804)*x[1]  
         s[2,2,1,1]=(0.579536883642)*x[0]**o+(0.160337559302)*x[0]+(-0.806829552191)*x[1]**o+(-0.45313287787)*x[1]  
         s[2,2,2,0]=(-0.922597521221)*x[0]**o+(-0.250217857798)*x[0]+(-0.0762271301664)*x[1]**o+(0.610046304117)*x[1]  
         s[2,2,2,1]=(0.259914145502)*x[0]**o+(0.00944250446491)*x[0]+(-0.217644702814)*x[1]**o+(-0.396061779281)*x[1]  
         s[2,3,0,0]=(-0.639026927928)*x[0]**o+(-0.0136042147736)*x[0]+(0.147051301049)*x[1]**o+(-0.116721318722)*x[1]  
         s[2,3,0,1]=(-0.921716795774)*x[0]**o+(-0.573953102898)*x[0]+(-0.292599705087)*x[1]**o+(0.425695557831)*x[1]  
         s[2,3,1,0]=(-0.137488915425)*x[0]**o+(-0.49947594329)*x[0]+(-0.0290388465996)*x[1]**o+(-0.246424924833)*x[1]  
         s[2,3,1,1]=(0.231049448089)*x[0]**o+(-0.268957451079)*x[0]+(0.900504385567)*x[1]**o+(-0.331066572068)*x[1]  
         s[2,3,2,0]=(-0.442867405047)*x[0]**o+(-0.862895940039)*x[0]+(0.130486555031)*x[1]**o+(-0.325005280104)*x[1]  
         s[2,3,2,1]=(0.0505322685584)*x[0]**o+(0.588209043808)*x[0]+(-0.85729410482)*x[1]**o+(0.20026415404)*x[1]  
         s[2,4,0,0]=(0.111265750114)*x[0]**o+(-0.368157597131)*x[0]+(0.264359624294)*x[1]**o+(0.880890103316)*x[1]  
         s[2,4,0,1]=(0.7435570617)*x[0]**o+(-0.794211194611)*x[0]+(0.506134754195)*x[1]**o+(0.363318494554)*x[1]  
         s[2,4,1,0]=(0.557218657611)*x[0]**o+(-0.584592285851)*x[0]+(-0.551098106406)*x[1]**o+(-0.253662162858)*x[1]  
         s[2,4,1,1]=(0.508828804121)*x[0]**o+(0.4399952689)*x[0]+(-0.997629557499)*x[1]**o+(0.651550324191)*x[1]  
         s[2,4,2,0]=(-0.292367705037)*x[0]**o+(0.325506979353)*x[0]+(0.345654565875)*x[1]**o+(-0.0615253936178)*x[1]  
         s[2,4,2,1]=(-0.408469289071)*x[0]**o+(-0.242826710026)*x[0]+(0.968562541409)*x[1]**o+(-0.691883337576)*x[1]  
         s[3,0,0,0]=(-0.166166381364)*x[0]**o+(0.67558604652)*x[0]+(0.681136750192)*x[1]**o+(-0.59276757042)*x[1]  
         s[3,0,0,1]=(0.139326266787)*x[0]**o+(-0.855321186969)*x[0]+(0.87031372876)*x[1]**o+(0.167702944821)*x[1]  
         s[3,0,1,0]=(0.0382861750276)*x[0]**o+(-0.15200218165)*x[0]+(0.877979117505)*x[1]**o+(-0.0121347649803)*x[1]  
         s[3,0,1,1]=(0.498616833176)*x[0]**o+(-0.663932730791)*x[0]+(-0.351696535062)*x[1]**o+(0.635672218271)*x[1]  
         s[3,0,2,0]=(0.570569612815)*x[0]**o+(0.302777992546)*x[0]+(0.234111661233)*x[1]**o+(0.23736500566)*x[1]  
         s[3,0,2,1]=(0.103264640389)*x[0]**o+(-0.665245672415)*x[0]+(-0.507585301735)*x[1]**o+(-0.624579920066)*x[1]  
         s[3,1,0,0]=(-0.424026522629)*x[0]**o+(-0.289542833446)*x[0]+(-0.208440343753)*x[1]**o+(0.670301272477)*x[1]  
         s[3,1,0,1]=(0.884688677823)*x[0]**o+(-0.547024055336)*x[0]+(-0.760788413661)*x[1]**o+(0.892759772046)*x[1]  
         s[3,1,1,0]=(-0.193616699826)*x[0]**o+(-0.817184462119)*x[0]+(-0.405430250489)*x[1]**o+(0.697242407135)*x[1]  
         s[3,1,1,1]=(-0.224055211394)*x[0]**o+(0.1446788843)*x[0]+(0.242791365909)*x[1]**o+(-0.00969799364721)*x[1]  
         s[3,1,2,0]=(-0.86134785548)*x[0]**o+(0.808223751392)*x[0]+(-0.59203015099)*x[1]**o+(-0.774006816622)*x[1]  
         s[3,1,2,1]=(0.60450330353)*x[0]**o+(0.47388266469)*x[0]+(0.160423399019)*x[1]**o+(0.177522838509)*x[1]  
         s[3,2,0,0]=(-0.0704547054622)*x[0]**o+(-0.28005227128)*x[0]+(0.842667852448)*x[1]**o+(-0.660858857912)*x[1]  
         s[3,2,0,1]=(0.950935693626)*x[0]**o+(-0.707135492206)*x[0]+(0.383664604588)*x[1]**o+(0.301522608591)*x[1]  
         s[3,2,1,0]=(-0.843657734623)*x[0]**o+(0.0313079420866)*x[0]+(0.842733149317)*x[1]**o+(0.8363224382)*x[1]  
         s[3,2,1,1]=(0.590344608942)*x[0]**o+(-0.688010374961)*x[0]+(0.419847151895)*x[1]**o+(0.703183045156)*x[1]  
         s[3,2,2,0]=(0.726161847781)*x[0]**o+(-0.644844589861)*x[0]+(0.615915050884)*x[1]**o+(0.928915762636)*x[1]  
         s[3,2,2,1]=(-0.272507884368)*x[0]**o+(0.915695022479)*x[0]+(-0.461159868664)*x[1]**o+(-0.959034792496)*x[1]  
         s[3,3,0,0]=(0.454712361388)*x[0]**o+(-0.212357162336)*x[0]+(0.153326792468)*x[1]**o+(-0.891670991055)*x[1]  
         s[3,3,0,1]=(0.524401133703)*x[0]**o+(-0.649106057963)*x[0]+(0.879052771991)*x[1]**o+(-0.710445481523)*x[1]  
         s[3,3,1,0]=(0.614330071709)*x[0]**o+(-0.632228392701)*x[0]+(0.272026382411)*x[1]**o+(-0.261384418355)*x[1]  
         s[3,3,1,1]=(0.552126023508)*x[0]**o+(0.266617783195)*x[0]+(-0.183251756988)*x[1]**o+(0.905027547625)*x[1]  
         s[3,3,2,0]=(-0.671825095536)*x[0]**o+(-0.0942290736973)*x[0]+(0.354473207574)*x[1]**o+(-0.61776928413)*x[1]  
         s[3,3,2,1]=(0.8582228544)*x[0]**o+(-0.68683359365)*x[0]+(0.856354836335)*x[1]**o+(0.588764055551)*x[1]  
         s[3,4,0,0]=(-0.535790362987)*x[0]**o+(0.835465266424)*x[0]+(-0.422274723942)*x[1]**o+(-0.979702488165)*x[1]  
         s[3,4,0,1]=(-0.846846124079)*x[0]**o+(-0.52263128994)*x[0]+(0.0349528062482)*x[1]**o+(-0.498515393094)*x[1]  
         s[3,4,1,0]=(-0.927241665975)*x[0]**o+(0.0353321330647)*x[0]+(-0.225562802107)*x[1]**o+(0.8207319568)*x[1]  
         s[3,4,1,1]=(-0.174397417012)*x[0]**o+(-0.0398036522533)*x[0]+(0.0755396127937)*x[1]**o+(-0.102836810613)*x[1]  
         s[3,4,2,0]=(-0.968779473612)*x[0]**o+(0.339954457114)*x[0]+(-0.613643260944)*x[1]**o+(0.301848346204)*x[1]  
         s[3,4,2,1]=(0.994429790023)*x[0]**o+(0.159760881455)*x[0]+(0.252053920576)*x[1]**o+(-0.562820021013)*x[1]  
         ref[0,0,0,0]=(0.976142604799)/(o+1.)+(0.559236926803)  
         ref[0,0,0,1]=(-1.7145183922)/(o+1.)+(0.0635707789)  
         ref[0,0,1,0]=(0.899826569143)/(o+1.)+(0.790504652192)  
         ref[0,0,1,1]=(-1.61591306524)/(o+1.)+(0.285592875029)  
         ref[0,0,2,0]=(1.82158548419)/(o+1.)+(-0.0646334283283)  
         ref[0,0,2,1]=(0.918537074153)/(o+1.)+(-0.189308477993)  
         ref[0,1,0,0]=(0.608669315438)/(o+1.)+(0.276027348804)  
         ref[0,1,0,1]=(1.40725199507)/(o+1.)+(-0.0943899330873)  
         ref[0,1,1,0]=(0.0512330860046)/(o+1.)+(-0.687181179599)  
         ref[0,1,1,1]=(-0.878253317721)/(o+1.)+(-0.949562209289)  
         ref[0,1,2,0]=(1.02379194818)/(o+1.)+(-0.0506538701325)  
         ref[0,1,2,1]=(0.659769108985)/(o+1.)+(-0.807763678736)  
         ref[0,2,0,0]=(-1.11486203512)/(o+1.)+(-0.00125502860562)  
         ref[0,2,0,1]=(1.82559575585)/(o+1.)+(0.796853489163)  
         ref[0,2,1,0]=(1.66037232606)/(o+1.)+(0.419884607511)  
         ref[0,2,1,1]=(-1.03285158476)/(o+1.)+(-0.0989279216092)  
         ref[0,2,2,0]=(0.307240682354)/(o+1.)+(0.400848881959)  
         ref[0,2,2,1]=(1.27022227018)/(o+1.)+(-0.0482148791284)  
         ref[0,3,0,0]=(-0.788939093322)/(o+1.)+(-0.631363596784)  
         ref[0,3,0,1]=(0.26640356147)/(o+1.)+(-0.532062387218)  
         ref[0,3,1,0]=(0.959198406218)/(o+1.)+(-0.566324965195)  
         ref[0,3,1,1]=(0.0927952942109)/(o+1.)+(-0.289945801554)  
         ref[0,3,2,0]=(-0.0579636581476)/(o+1.)+(-0.0159560424323)  
         ref[0,3,2,1]=(-0.254597349139)/(o+1.)+(-0.0361368341719)  
         ref[0,4,0,0]=(-0.00994556542921)/(o+1.)+(0.894775230178)  
         ref[0,4,0,1]=(0.53626175681)/(o+1.)+(-0.269667599686)  
         ref[0,4,1,0]=(0.0172064338404)/(o+1.)+(0.0110821611268)  
         ref[0,4,1,1]=(-1.41043453748)/(o+1.)+(0.295320921755)  
         ref[0,4,2,0]=(-0.319272527632)/(o+1.)+(0.251472854574)  
         ref[0,4,2,1]=(-0.341099001658)/(o+1.)+(-0.134149823407)  
         ref[1,0,0,0]=(1.36852782455)/(o+1.)+(-0.660630850204)  
         ref[1,0,0,1]=(1.17203200118)/(o+1.)+(-0.372038010914)  
         ref[1,0,1,0]=(0.906181287285)/(o+1.)+(-0.430976599456)  
         ref[1,0,1,1]=(-1.37920903098)/(o+1.)+(0.202077810714)  
         ref[1,0,2,0]=(1.82362651408)/(o+1.)+(-0.395452886013)  
         ref[1,0,2,1]=(0.656448039332)/(o+1.)+(-0.586488805114)  
         ref[1,1,0,0]=(-0.506275307541)/(o+1.)+(-0.613889034788)  
         ref[1,1,0,1]=(0.0970528225071)/(o+1.)+(-0.357242175157)  
         ref[1,1,1,0]=(-0.609663973467)/(o+1.)+(-0.0527203717721)  
         ref[1,1,1,1]=(0.417273088561)/(o+1.)+(-0.21259448119)  
         ref[1,1,2,0]=(-1.76474368781)/(o+1.)+(-0.0561389978065)  
         ref[1,1,2,1]=(0.733396922329)/(o+1.)+(-0.360546207158)  
         ref[1,2,0,0]=(-1.0930406353)/(o+1.)+(-0.882921780793)  
         ref[1,2,0,1]=(0.470310563612)/(o+1.)+(-0.17410375492)  
         ref[1,2,1,0]=(-0.711974684398)/(o+1.)+(-0.10588070715)  
         ref[1,2,1,1]=(-0.882848135361)/(o+1.)+(0.0145919323434)  
         ref[1,2,2,0]=(0.691426968189)/(o+1.)+(-0.538670436911)  
         ref[1,2,2,1]=(0.181002825221)/(o+1.)+(-0.438446228014)  
         ref[1,3,0,0]=(0.469597415414)/(o+1.)+(-0.235126278249)  
         ref[1,3,0,1]=(-0.929510611384)/(o+1.)+(-0.413988367578)  
         ref[1,3,1,0]=(0.854514676258)/(o+1.)+(-0.0353472783996)  
         ref[1,3,1,1]=(0.630474668409)/(o+1.)+(0.0744386275773)  
         ref[1,3,2,0]=(0.390924363485)/(o+1.)+(0.627689530971)  
         ref[1,3,2,1]=(-1.6409097599)/(o+1.)+(-0.452381472906)  
         ref[1,4,0,0]=(0.357069049807)/(o+1.)+(0.686521034986)  
         ref[1,4,0,1]=(0.278480397348)/(o+1.)+(-0.328928650294)  
         ref[1,4,1,0]=(0.0199868564018)/(o+1.)+(0.0874366821718)  
         ref[1,4,1,1]=(-0.210918168065)/(o+1.)+(0.338114608888)  
         ref[1,4,2,0]=(0.691363338179)/(o+1.)+(0.608378114821)  
         ref[1,4,2,1]=(1.21182478236)/(o+1.)+(0.0921588457958)  
         ref[2,0,0,0]=(-0.47411466559)/(o+1.)+(0.0547177057268)  
         ref[2,0,0,1]=(-0.220914076875)/(o+1.)+(0.0473247023129)  
         ref[2,0,1,0]=(0.892263621045)/(o+1.)+(0.0311394070465)  
         ref[2,0,1,1]=(1.14518124466)/(o+1.)+(0.520818118726)  
         ref[2,0,2,0]=(-0.00320343813922)/(o+1.)+(0.0990387149137)  
         ref[2,0,2,1]=(-0.454357902363)/(o+1.)+(-0.0671338342638)  
         ref[2,1,0,0]=(0.394055509731)/(o+1.)+(0.924768577529)  
         ref[2,1,0,1]=(0.500866633191)/(o+1.)+(0.212233622092)  
         ref[2,1,1,0]=(1.29402054756)/(o+1.)+(0.375514450965)  
         ref[2,1,1,1]=(0.369127441961)/(o+1.)+(-0.434822092262)  
         ref[2,1,2,0]=(-0.251462312861)/(o+1.)+(-0.285897304624)  
         ref[2,1,2,1]=(1.45788307837)/(o+1.)+(0.42312280598)  
         ref[2,2,0,0]=(0.529032839228)/(o+1.)+(0.179165250338)  
         ref[2,2,0,1]=(-1.24256836312)/(o+1.)+(-0.107596206036)  
         ref[2,2,1,0]=(0.639926753407)/(o+1.)+(0.0121056419913)  
         ref[2,2,1,1]=(-0.227292668549)/(o+1.)+(-0.146397659284)  
         ref[2,2,2,0]=(-0.998824651388)/(o+1.)+(0.179914223159)  
         ref[2,2,2,1]=(0.0422694426877)/(o+1.)+(-0.193309637408)  
         ref[2,3,0,0]=(-0.491975626879)/(o+1.)+(-0.0651627667478)  
         ref[2,3,0,1]=(-1.21431650086)/(o+1.)+(-0.0741287725332)  
         ref[2,3,1,0]=(-0.166527762025)/(o+1.)+(-0.372950434061)  
         ref[2,3,1,1]=(1.13155383366)/(o+1.)+(-0.300012011573)  
         ref[2,3,2,0]=(-0.312380850015)/(o+1.)+(-0.593950610072)  
         ref[2,3,2,1]=(-0.806761836262)/(o+1.)+(0.394236598924)  
         ref[2,4,0,0]=(0.375625374408)/(o+1.)+(0.256366253093)  
         ref[2,4,0,1]=(1.2496918159)/(o+1.)+(-0.215446350028)  
         ref[2,4,1,0]=(0.00612055120519)/(o+1.)+(-0.419127224354)  
         ref[2,4,1,1]=(-0.488800753378)/(o+1.)+(0.545772796545)  
         ref[2,4,2,0]=(0.0532868608376)/(o+1.)+(0.131990792868)  
         ref[2,4,2,1]=(0.560093252338)/(o+1.)+(-0.467355023801)  
         ref[3,0,0,0]=(0.514970368828)/(o+1.)+(0.0414092380501)  
         ref[3,0,0,1]=(1.00963999555)/(o+1.)+(-0.343809121074)  
         ref[3,0,1,0]=(0.916265292533)/(o+1.)+(-0.0820684733153)  
         ref[3,0,1,1]=(0.146920298114)/(o+1.)+(-0.0141302562603)  
         ref[3,0,2,0]=(0.804681274048)/(o+1.)+(0.270071499103)  
         ref[3,0,2,1]=(-0.404320661346)/(o+1.)+(-0.644912796241)  
         ref[3,1,0,0]=(-0.632466866383)/(o+1.)+(0.190379219516)  
         ref[3,1,0,1]=(0.123900264162)/(o+1.)+(0.172867858355)  
         ref[3,1,1,0]=(-0.599046950315)/(o+1.)+(-0.0599710274916)  
         ref[3,1,1,1]=(0.0187361545152)/(o+1.)+(0.0674904453263)  
         ref[3,1,2,0]=(-1.45337800647)/(o+1.)+(0.0171084673849)  
         ref[3,1,2,1]=(0.764926702549)/(o+1.)+(0.325702751599)  
         ref[3,2,0,0]=(0.772213146985)/(o+1.)+(-0.470455564596)  
         ref[3,2,0,1]=(1.33460029821)/(o+1.)+(-0.202806441808)  
         ref[3,2,1,0]=(-0.00092458530583)/(o+1.)+(0.433815190143)  
         ref[3,2,1,1]=(1.01019176084)/(o+1.)+(0.00758633509776)  
         ref[3,2,2,0]=(1.34207689867)/(o+1.)+(0.142035586387)  
         ref[3,2,2,1]=(-0.733667753032)/(o+1.)+(-0.0216698850086)  
         ref[3,3,0,0]=(0.608039153856)/(o+1.)+(-0.552014076696)  
         ref[3,3,0,1]=(1.40345390569)/(o+1.)+(-0.679775769743)  
         ref[3,3,1,0]=(0.88635645412)/(o+1.)+(-0.446806405528)  
         ref[3,3,1,1]=(0.368874266519)/(o+1.)+(0.58582266541)  
         ref[3,3,2,0]=(-0.317351887963)/(o+1.)+(-0.355999178914)  
         ref[3,3,2,1]=(1.71457769073)/(o+1.)+(-0.0490347690493)  
         ref[3,4,0,0]=(-0.958065086929)/(o+1.)+(-0.0721186108707)  
         ref[3,4,0,1]=(-0.811893317831)/(o+1.)+(-0.510573341517)  
         ref[3,4,1,0]=(-1.15280446808)/(o+1.)+(0.428032044932)  
         ref[3,4,1,1]=(-0.0988578042187)/(o+1.)+(-0.0713202314331)  
         ref[3,4,2,0]=(-1.58242273456)/(o+1.)+(0.320901401659)  
         ref[3,4,2,1]=(1.2464837106)/(o+1.)+(-0.201529569779)  
       else:  
         s[0,0,0,0]=(0.541504168376)*x[0]**o+(0.0573239599909)*x[0]+(0.0647250584452)*x[1]**o+(-0.703570101211)*x[1]+(0.328542610633)*x[2]**o+(-0.223400684365)*x[2]  
         s[0,0,0,1]=(0.815893107692)*x[0]**o+(0.865481882711)*x[0]+(-0.46283176119)*x[1]**o+(-0.180772911655)*x[1]+(0.93497108116)*x[2]**o+(-0.742753139638)*x[2]  
         s[0,0,1,0]=(-0.974209081736)*x[0]**o+(-0.672767028246)*x[0]+(-0.741240928071)*x[1]**o+(0.33719490832)*x[1]+(-0.686997621399)*x[2]**o+(-0.276966804283)*x[2]  
         s[0,0,1,1]=(-0.857143471623)*x[0]**o+(-0.808079211925)*x[0]+(-0.953814060073)*x[1]**o+(0.961661670434)*x[1]+(0.189072084458)*x[2]**o+(-0.103208629753)*x[2]  
         s[0,0,2,0]=(-0.20991399963)*x[0]**o+(-0.442037964882)*x[0]+(0.322578941372)*x[1]**o+(-0.161870387325)*x[1]+(0.585691936782)*x[2]**o+(-0.267825636094)*x[2]  
         s[0,0,2,1]=(0.567642417211)*x[0]**o+(0.824356280251)*x[0]+(0.414108305262)*x[1]**o+(0.79515753838)*x[1]+(-0.894154134914)*x[2]**o+(-0.307671452735)*x[2]  
         s[0,1,0,0]=(0.536896074085)*x[0]**o+(0.361562637795)*x[0]+(-0.158827271642)*x[1]**o+(0.0705880551767)*x[1]+(-0.332232895988)*x[2]**o+(-0.0305180398365)*x[2]  
         s[0,1,0,1]=(0.633176778138)*x[0]**o+(-0.572376784007)*x[0]+(-0.294505207444)*x[1]**o+(-0.378967371632)*x[1]+(-0.89662018673)*x[2]**o+(0.287814422967)*x[2]  
         s[0,1,1,0]=(-0.61097365344)*x[0]**o+(-0.363660280252)*x[0]+(0.190746604006)*x[1]**o+(-0.510926077271)*x[1]+(-0.957696939615)*x[2]**o+(-0.789299643561)*x[2]  
         s[0,1,1,1]=(-0.835396537806)*x[0]**o+(-0.836746663696)*x[0]+(0.702723030555)*x[1]**o+(0.548005714327)*x[1]+(-0.924774335596)*x[2]**o+(-0.439240327617)*x[2]  
         s[0,1,2,0]=(0.461024657935)*x[0]**o+(-0.373409962194)*x[0]+(0.743442026381)*x[1]**o+(0.657544000829)*x[1]+(0.674057315581)*x[2]**o+(-0.0183044871772)*x[2]  
         s[0,1,2,1]=(0.164119453764)*x[0]**o+(-0.31204382122)*x[0]+(-0.424802851747)*x[1]**o+(-0.341469957442)*x[1]+(-0.231054265963)*x[2]**o+(0.128985361513)*x[2]  
         s[0,2,0,0]=(0.963584200519)*x[0]**o+(-0.465275784807)*x[0]+(0.421929871546)*x[1]**o+(-0.211860414792)*x[1]+(-0.403745447737)*x[2]**o+(-0.379173494789)*x[2]  
         s[0,2,0,1]=(-0.849597493426)*x[0]**o+(-0.174912181728)*x[0]+(-0.0534228854624)*x[1]**o+(0.826630462481)*x[1]+(-0.0210209049463)*x[2]**o+(-0.675409496795)*x[2]  
         s[0,2,1,0]=(-0.565229688917)*x[0]**o+(0.485718751072)*x[0]+(0.700861807655)*x[1]**o+(0.901169377907)*x[1]+(0.890394572646)*x[2]**o+(0.596255846932)*x[2]  
         s[0,2,1,1]=(0.876434872654)*x[0]**o+(-0.83625911596)*x[0]+(-0.539508005116)*x[1]**o+(-0.790017898115)*x[1]+(-0.043576285617)*x[2]**o+(-0.90281792431)*x[2]  
         s[0,2,2,0]=(0.688686103492)*x[0]**o+(-0.479018765365)*x[0]+(-0.0041922877839)*x[1]**o+(0.360321450098)*x[1]+(0.520980145515)*x[2]**o+(0.781262738907)*x[2]  
         s[0,2,2,1]=(-0.416899995117)*x[0]**o+(-0.018267124332)*x[0]+(-0.052482515113)*x[1]**o+(0.6928630854)*x[1]+(-0.163882932309)*x[2]**o+(0.478296669995)*x[2]  
         s[0,3,0,0]=(-0.80317047721)*x[0]**o+(-0.475554188062)*x[0]+(0.194711479429)*x[1]**o+(0.866725258981)*x[1]+(0.500781673148)*x[2]**o+(-0.360414664576)*x[2]  
         s[0,3,0,1]=(0.243316356193)*x[0]**o+(-0.109598635489)*x[0]+(0.579141755165)*x[1]**o+(0.876481264859)*x[1]+(-0.880903923571)*x[2]**o+(0.142946599744)*x[2]  
         s[0,3,1,0]=(-0.507217017458)*x[0]**o+(0.641911252335)*x[0]+(-0.764452998266)*x[1]**o+(-0.505598974991)*x[1]+(0.641213955525)*x[2]**o+(-0.44758893679)*x[2]  
         s[0,3,1,1]=(0.473545973781)*x[0]**o+(-0.00833748934844)*x[0]+(-0.00699017656361)*x[1]**o+(-0.643164722085)*x[1]+(0.726844277071)*x[2]**o+(-0.559279257114)*x[2]  
         s[0,3,2,0]=(0.558099790948)*x[0]**o+(0.808990368539)*x[0]+(0.0431682029749)*x[1]**o+(0.0173216046894)*x[1]+(-0.394219668262)*x[2]**o+(-0.0336030329937)*x[2]  
         s[0,3,2,1]=(-0.0222232210481)*x[0]**o+(-0.510190960052)*x[0]+(0.569389223293)*x[1]**o+(0.117046338884)*x[1]+(-0.671864592568)*x[2]**o+(-0.674239142474)*x[2]  
         s[0,4,0,0]=(-0.644798822323)*x[0]**o+(-0.342116629892)*x[0]+(-0.168244417587)*x[1]**o+(-0.108919120953)*x[1]+(0.804101464972)*x[2]**o+(-0.0927979618696)*x[2]  
         s[0,4,0,1]=(0.195838618741)*x[0]**o+(-0.111914225664)*x[0]+(-0.754003728212)*x[1]**o+(-0.096873749243)*x[1]+(-0.770744141788)*x[2]**o+(0.0291059262795)*x[2]  
         s[0,4,1,0]=(0.321738393515)*x[0]**o+(-0.262140344086)*x[0]+(-0.130813570922)*x[1]**o+(0.749305862624)*x[1]+(-0.0933499641013)*x[2]**o+(0.583868661476)*x[2]  
         s[0,4,1,1]=(-0.948399949958)*x[0]**o+(-0.514552416108)*x[0]+(0.403700494592)*x[1]**o+(0.319753801921)*x[1]+(0.068451176553)*x[2]**o+(0.236776599218)*x[2]  
         s[0,4,2,0]=(-0.206993609035)*x[0]**o+(-0.693436356612)*x[0]+(0.376741069465)*x[1]**o+(-0.377934787271)*x[1]+(0.600888347529)*x[2]**o+(-0.806497559367)*x[2]  
         s[0,4,2,1]=(0.519911073798)*x[0]**o+(0.209533160142)*x[0]+(-0.828631380624)*x[1]**o+(-0.758712343322)*x[1]+(0.469217244822)*x[2]**o+(0.777639952133)*x[2]  
         s[1,0,0,0]=(-0.00938493494863)*x[0]**o+(0.035357976182)*x[0]+(0.530712339191)*x[1]**o+(0.163841019664)*x[1]+(-0.481052524963)*x[2]**o+(0.165894455618)*x[2]  
         s[1,0,0,1]=(0.405172592393)*x[0]**o+(0.748490170154)*x[0]+(-0.579541033967)*x[1]**o+(-0.612353189754)*x[1]+(-0.0878018425036)*x[2]**o+(0.909881661391)*x[2]  
         s[1,0,1,0]=(-0.131136361267)*x[0]**o+(0.0576430483263)*x[0]+(0.21369263102)*x[1]**o+(0.00660590703342)*x[1]+(0.079311350103)*x[2]**o+(0.878257991876)*x[2]  
         s[1,0,1,1]=(-0.585221206397)*x[0]**o+(-0.791686741073)*x[0]+(0.631923355264)*x[1]**o+(-0.0277720531745)*x[1]+(-0.0777198468194)*x[2]**o+(-0.407162573619)*x[2]  
         s[1,0,2,0]=(0.544255664465)*x[0]**o+(-0.51929274141)*x[0]+(-0.614260874796)*x[1]**o+(-0.951824251618)*x[1]+(0.48400676445)*x[2]**o+(-0.210092738748)*x[2]  
         s[1,0,2,1]=(-0.901122575086)*x[0]**o+(-0.855042125739)*x[0]+(-0.660979212714)*x[1]**o+(0.874395337943)*x[1]+(-0.286202842553)*x[2]**o+(0.981270297086)*x[2]  
         s[1,1,0,0]=(-0.752469757419)*x[0]**o+(0.0583950789171)*x[0]+(-0.699699086971)*x[1]**o+(-0.461650511393)*x[1]+(-0.272665950769)*x[2]**o+(-0.873526828849)*x[2]  
         s[1,1,0,1]=(0.219706522447)*x[0]**o+(-0.73250655794)*x[0]+(0.0679566752122)*x[1]**o+(0.731592986993)*x[1]+(0.557341326754)*x[2]**o+(0.256780037036)*x[2]  
         s[1,1,1,0]=(-0.820468252627)*x[0]**o+(0.163409736336)*x[0]+(-0.593882214431)*x[1]**o+(0.778760445642)*x[1]+(-0.822051914962)*x[2]**o+(0.920172785813)*x[2]  
         s[1,1,1,1]=(-0.355904745872)*x[0]**o+(-0.192775924552)*x[0]+(0.598345031205)*x[1]**o+(-0.108244476269)*x[1]+(-0.895456581435)*x[2]**o+(0.207881298634)*x[2]  
         s[1,1,2,0]=(0.781059740818)*x[0]**o+(0.186409854519)*x[0]+(0.92458071805)*x[1]**o+(0.197380801637)*x[1]+(-0.402971455411)*x[2]**o+(0.42922557636)*x[2]  
         s[1,1,2,1]=(0.0064822572955)*x[0]**o+(0.846443443074)*x[0]+(0.500688303847)*x[1]**o+(-0.884507156164)*x[1]+(0.433224067545)*x[2]**o+(-0.0383476145137)*x[2]  
         s[1,2,0,0]=(-0.945907369747)*x[0]**o+(-0.149404885342)*x[0]+(-0.911317716302)*x[1]**o+(0.718244019047)*x[1]+(0.097223049045)*x[2]**o+(0.95630310286)*x[2]  
         s[1,2,0,1]=(-0.942956848602)*x[0]**o+(0.24519384765)*x[0]+(0.450231851653)*x[1]**o+(0.875902538898)*x[1]+(0.552657508084)*x[2]**o+(0.644477914693)*x[2]  
         s[1,2,1,0]=(0.600235706495)*x[0]**o+(-0.142524845444)*x[0]+(0.216130207621)*x[1]**o+(-0.396701569264)*x[1]+(0.316884903524)*x[2]**o+(-0.0586626235465)*x[2]  
         s[1,2,1,1]=(0.329111957957)*x[0]**o+(-0.508751506135)*x[0]+(0.911087373052)*x[1]**o+(-0.0983342912554)*x[1]+(-0.842070723886)*x[2]**o+(0.0746739548918)*x[2]  
         s[1,2,2,0]=(0.387988330934)*x[0]**o+(-0.8408548375)*x[0]+(0.838833668833)*x[1]**o+(0.965224043099)*x[1]+(-0.860139996894)*x[2]**o+(-0.925778998652)*x[2]  
         s[1,2,2,1]=(0.238958121236)*x[0]**o+(0.10607561646)*x[0]+(0.302265720665)*x[1]**o+(0.145320472959)*x[1]+(-0.677724287444)*x[2]**o+(-0.666145512045)*x[2]  
         s[1,3,0,0]=(0.360431863997)*x[0]**o+(0.509815440438)*x[0]+(-0.178896172032)*x[1]**o+(0.316774928052)*x[1]+(-0.44743491823)*x[2]**o+(-0.651310611493)*x[2]  
         s[1,3,0,1]=(-0.65053757716)*x[0]**o+(-0.375438056145)*x[0]+(0.360834001552)*x[1]**o+(-0.250086720496)*x[1]+(-0.71501469699)*x[2]**o+(0.0150228087513)*x[2]  
         s[1,3,1,0]=(0.0628062775266)*x[0]**o+(-0.61619322157)*x[0]+(0.45067341985)*x[1]**o+(0.355471837743)*x[1]+(-0.174333549061)*x[2]**o+(-0.942897180184)*x[2]  
         s[1,3,1,1]=(0.629724537179)*x[0]**o+(-0.0558311952601)*x[0]+(-0.956862453932)*x[1]**o+(-0.552443418291)*x[1]+(0.146303452118)*x[2]**o+(-0.770969067419)*x[2]  
         s[1,3,2,0]=(-0.178686519235)*x[0]**o+(-0.171143660316)*x[0]+(-0.162449341623)*x[1]**o+(-0.1105712214)*x[1]+(0.119821653614)*x[2]**o+(0.209872978827)*x[2]  
         s[1,3,2,1]=(0.312724690007)*x[0]**o+(-0.692554198329)*x[0]+(0.502590520541)*x[1]**o+(-0.729216407269)*x[1]+(0.302595866989)*x[2]**o+(-0.815710825541)*x[2]  
         s[1,4,0,0]=(0.112006695888)*x[0]**o+(0.829399837819)*x[0]+(-0.419232858393)*x[1]**o+(0.146007406445)*x[1]+(0.304188744047)*x[2]**o+(0.46242131026)*x[2]  
         s[1,4,0,1]=(0.964310426412)*x[0]**o+(0.196629594947)*x[0]+(0.124667636162)*x[1]**o+(-0.304792580501)*x[1]+(0.180285405611)*x[2]**o+(-0.543512746454)*x[2]  
         s[1,4,1,0]=(-0.708536876552)*x[0]**o+(-0.680163366548)*x[0]+(0.0584969206489)*x[1]**o+(0.847180583253)*x[1]+(0.157570405709)*x[2]**o+(-0.746490964212)*x[2]  
         s[1,4,1,1]=(0.0845668429821)*x[0]**o+(-0.889880680014)*x[0]+(-0.0771948903819)*x[1]**o+(-0.533952084212)*x[1]+(0.346150298712)*x[2]**o+(-0.78816093534)*x[2]  
         s[1,4,2,0]=(0.375822387867)*x[0]**o+(-0.357919731843)*x[0]+(-0.373519792105)*x[1]**o+(0.641319045383)*x[1]+(0.351324745466)*x[2]**o+(-0.186703738887)*x[2]  
         s[1,4,2,1]=(-0.60888359369)*x[0]**o+(0.694522376656)*x[0]+(-0.169823125514)*x[1]**o+(-0.856247555905)*x[1]+(0.00519595740385)*x[2]**o+(-0.875798589653)*x[2]  
         s[2,0,0,0]=(0.469380548227)*x[0]**o+(-0.868913385859)*x[0]+(0.441755799104)*x[1]**o+(-0.493212921066)*x[1]+(-0.11743848736)*x[2]**o+(0.21526923935)*x[2]  
         s[2,0,0,1]=(-0.151212323369)*x[0]**o+(-0.999958063251)*x[0]+(0.449187517422)*x[1]**o+(-0.583657187784)*x[1]+(-0.905753638698)*x[2]**o+(-0.945179993617)*x[2]  
         s[2,0,1,0]=(-0.40460984789)*x[0]**o+(0.510786603887)*x[0]+(-0.953825153871)*x[1]**o+(0.226098717119)*x[1]+(-0.799990467305)*x[2]**o+(-0.429211164318)*x[2]  
         s[2,0,1,1]=(0.867644883712)*x[0]**o+(0.714940923764)*x[0]+(-0.122362538438)*x[1]**o+(-0.44142264498)*x[1]+(0.437303901854)*x[2]**o+(0.841319415724)*x[2]  
         s[2,0,2,0]=(0.13789233553)*x[0]**o+(0.472191869459)*x[0]+(0.468664678229)*x[1]**o+(-0.584558488838)*x[1]+(0.183146176041)*x[2]**o+(-0.893499132079)*x[2]  
         s[2,0,2,1]=(0.875084187567)*x[0]**o+(0.550980479395)*x[0]+(0.312182122865)*x[1]**o+(-0.764545704288)*x[1]+(0.421014399576)*x[2]**o+(-0.652582305594)*x[2]  
         s[2,1,0,0]=(-0.397160997842)*x[0]**o+(-0.401717267945)*x[0]+(0.612062897035)*x[1]**o+(0.147514233621)*x[1]+(0.994896686982)*x[2]**o+(-0.650669842592)*x[2]  
         s[2,1,0,1]=(0.0859312342607)*x[0]**o+(-0.425173641674)*x[0]+(0.748616439433)*x[1]**o+(0.764026759608)*x[1]+(-0.990504424444)*x[2]**o+(-0.399709104793)*x[2]  
         s[2,1,1,0]=(0.732840180154)*x[0]**o+(0.970502200871)*x[0]+(-0.413467445613)*x[1]**o+(-0.246800235561)*x[1]+(-0.881207449946)*x[2]**o+(0.882360789659)*x[2]  
         s[2,1,1,1]=(0.689150562511)*x[0]**o+(-0.0933156400969)*x[0]+(-0.0951449636495)*x[1]**o+(0.143121640121)*x[1]+(-0.554471425755)*x[2]**o+(0.683081191337)*x[2]  
         s[2,1,2,0]=(0.829863223837)*x[0]**o+(0.216508858271)*x[0]+(0.99016446302)*x[1]**o+(0.319444245585)*x[1]+(0.668648650551)*x[2]**o+(-0.896787700447)*x[2]  
         s[2,1,2,1]=(-0.152966345983)*x[0]**o+(-0.775534953656)*x[0]+(0.0774085937181)*x[1]**o+(-0.59686756092)*x[1]+(0.224888875286)*x[2]**o+(-0.770576865174)*x[2]  
         s[2,2,0,0]=(-0.831308688707)*x[0]**o+(0.0286055654454)*x[0]+(0.555782586294)*x[1]**o+(-0.863596073174)*x[1]+(0.0660913483948)*x[2]**o+(-0.691221916393)*x[2]  
         s[2,2,0,1]=(0.97986500415)*x[0]**o+(-0.687991179162)*x[0]+(0.835947454347)*x[1]**o+(-0.425024918711)*x[1]+(0.632327959013)*x[2]**o+(-0.929603792153)*x[2]  
         s[2,2,1,0]=(-0.785177923154)*x[0]**o+(0.498524809242)*x[0]+(0.657015457864)*x[1]**o+(-0.14042512075)*x[1]+(-0.523655529492)*x[2]**o+(0.0676392379718)*x[2]  
         s[2,2,1,1]=(-0.282279979706)*x[0]**o+(0.402558983226)*x[0]+(0.349297772011)*x[1]**o+(-0.274102896576)*x[1]+(-0.976904085905)*x[2]**o+(-0.862615408506)*x[2]  
         s[2,2,2,0]=(-0.442415692301)*x[0]**o+(-0.490020432017)*x[0]+(0.423330456256)*x[1]**o+(0.0308403124141)*x[1]+(-0.59889279992)*x[2]**o+(-0.784624469809)*x[2]  
         s[2,2,2,1]=(-0.0571094173044)*x[0]**o+(-0.685673967597)*x[0]+(0.884019972654)*x[1]**o+(0.076633908669)*x[1]+(-0.436603596414)*x[2]**o+(0.643765166823)*x[2]  
         s[2,3,0,0]=(-0.834122691134)*x[0]**o+(-0.316705170482)*x[0]+(0.0232732484874)*x[1]**o+(0.254076347383)*x[1]+(0.510661944881)*x[2]**o+(0.638231760578)*x[2]  
         s[2,3,0,1]=(0.130809328027)*x[0]**o+(0.0475045505152)*x[0]+(0.253435146439)*x[1]**o+(0.15750814431)*x[1]+(0.930835277675)*x[2]**o+(0.215956216657)*x[2]  
         s[2,3,1,0]=(-0.931893183482)*x[0]**o+(-0.165642362248)*x[0]+(-0.7975167088)*x[1]**o+(0.943743900193)*x[1]+(-0.834729159735)*x[2]**o+(0.310938564524)*x[2]  
         s[2,3,1,1]=(-0.952550061226)*x[0]**o+(0.824399352189)*x[0]+(0.931907966548)*x[1]**o+(-0.46156960063)*x[1]+(0.6225788167)*x[2]**o+(-0.989192673067)*x[2]  
         s[2,3,2,0]=(0.756326608673)*x[0]**o+(0.771528948716)*x[0]+(0.239160366604)*x[1]**o+(-0.452631969831)*x[1]+(-0.237358134546)*x[2]**o+(-0.839427184027)*x[2]  
         s[2,3,2,1]=(0.0238504992639)*x[0]**o+(-0.103939311831)*x[0]+(0.291372616066)*x[1]**o+(0.672484596501)*x[1]+(0.494387122319)*x[2]**o+(0.486078041674)*x[2]  
         s[2,4,0,0]=(-0.856552973776)*x[0]**o+(0.220667747539)*x[0]+(-0.901887042412)*x[1]**o+(0.162974138385)*x[1]+(0.884973432866)*x[2]**o+(-0.843375672742)*x[2]  
         s[2,4,0,1]=(-0.581001018196)*x[0]**o+(0.766670058764)*x[0]+(0.195299626813)*x[1]**o+(0.491689692116)*x[1]+(-0.0851700136621)*x[2]**o+(0.556688214561)*x[2]  
         s[2,4,1,0]=(0.341242000274)*x[0]**o+(0.254872207602)*x[0]+(0.721651164807)*x[1]**o+(0.817267858784)*x[1]+(0.525309787334)*x[2]**o+(-0.189345432506)*x[2]  
         s[2,4,1,1]=(-0.461247890207)*x[0]**o+(-0.295916833174)*x[0]+(-0.795114931826)*x[1]**o+(0.760634909709)*x[1]+(0.628604868176)*x[2]**o+(-0.91582350733)*x[2]  
         s[2,4,2,0]=(0.388037825656)*x[0]**o+(0.667391082754)*x[0]+(-0.76856572381)*x[1]**o+(-0.684287348308)*x[1]+(0.0434449534518)*x[2]**o+(-0.627587380339)*x[2]  
         s[2,4,2,1]=(0.493746914184)*x[0]**o+(-0.47088277759)*x[0]+(-0.64457015181)*x[1]**o+(0.710566646648)*x[1]+(-0.603534864394)*x[2]**o+(0.952591999625)*x[2]  
         s[3,0,0,0]=(-0.964941424537)*x[0]**o+(-0.701861794912)*x[0]+(0.631389613785)*x[1]**o+(0.216075041942)*x[1]+(-0.325257371696)*x[2]**o+(-0.291703451654)*x[2]  
         s[3,0,0,1]=(-0.96299134603)*x[0]**o+(0.625796224057)*x[0]+(-0.418463355374)*x[1]**o+(-0.256336497204)*x[1]+(0.712728188959)*x[2]**o+(-0.770370932567)*x[2]  
         s[3,0,1,0]=(-0.292515423665)*x[0]**o+(0.686334822809)*x[0]+(0.0305376943649)*x[1]**o+(0.872668037223)*x[1]+(-0.0541424770809)*x[2]**o+(-0.572416266221)*x[2]  
         s[3,0,1,1]=(-0.690323374741)*x[0]**o+(-0.671336462076)*x[0]+(-0.166196941189)*x[1]**o+(-0.384967652901)*x[1]+(-0.61068991009)*x[2]**o+(0.776653422289)*x[2]  
         s[3,0,2,0]=(-0.944428014582)*x[0]**o+(-0.301748262202)*x[0]+(-0.686840009057)*x[1]**o+(0.712060295627)*x[1]+(-0.254326623988)*x[2]**o+(0.400337107846)*x[2]  
         s[3,0,2,1]=(-0.290963532129)*x[0]**o+(0.0269234770835)*x[0]+(-0.950364000347)*x[1]**o+(-0.460706646264)*x[1]+(-0.198333139868)*x[2]**o+(0.629854716945)*x[2]  
         s[3,1,0,0]=(-0.555184083664)*x[0]**o+(0.131468013243)*x[0]+(0.282129000779)*x[1]**o+(-0.198577931709)*x[1]+(-0.175106810125)*x[2]**o+(0.00542537950498)*x[2]  
         s[3,1,0,1]=(-0.284255526343)*x[0]**o+(-0.841249154497)*x[0]+(0.0213305454566)*x[1]**o+(-0.357636696086)*x[1]+(0.20888768221)*x[2]**o+(-0.503785042238)*x[2]  
         s[3,1,1,0]=(-0.330999455854)*x[0]**o+(-0.159160032544)*x[0]+(0.52907127808)*x[1]**o+(0.0550513576484)*x[1]+(0.511074173459)*x[2]**o+(0.0159456796202)*x[2]  
         s[3,1,1,1]=(-0.79143588969)*x[0]**o+(0.971248239785)*x[0]+(-0.0345752805688)*x[1]**o+(-0.0153770141636)*x[1]+(-0.716027682667)*x[2]**o+(-0.524455141515)*x[2]  
         s[3,1,2,0]=(-0.582525406979)*x[0]**o+(0.397353443964)*x[0]+(-0.519936987381)*x[1]**o+(-0.21693645368)*x[1]+(0.869686334938)*x[2]**o+(-0.151814599828)*x[2]  
         s[3,1,2,1]=(0.868456250139)*x[0]**o+(-0.568324799548)*x[0]+(-0.00346073709208)*x[1]**o+(-0.943912775939)*x[1]+(0.561497263651)*x[2]**o+(-0.923788209036)*x[2]  
         s[3,2,0,0]=(-0.797982975817)*x[0]**o+(0.947494036065)*x[0]+(-0.250051189868)*x[1]**o+(0.472713798841)*x[1]+(0.902863101354)*x[2]**o+(0.613145652065)*x[2]  
         s[3,2,0,1]=(0.252252158112)*x[0]**o+(0.301818562132)*x[0]+(0.664012773607)*x[1]**o+(0.0296698446724)*x[1]+(-0.00729763735658)*x[2]**o+(0.557599604788)*x[2]  
         s[3,2,1,0]=(0.0570129540722)*x[0]**o+(-0.453241439283)*x[0]+(-0.71043548568)*x[1]**o+(-0.138422568238)*x[1]+(-0.611853026036)*x[2]**o+(0.253347515085)*x[2]  
         s[3,2,1,1]=(-0.66828746218)*x[0]**o+(-0.751232642462)*x[0]+(-0.390775113865)*x[1]**o+(0.995150799921)*x[1]+(-0.292932619723)*x[2]**o+(-0.600225027769)*x[2]  
         s[3,2,2,0]=(0.065423903522)*x[0]**o+(0.384335040067)*x[0]+(0.19683258538)*x[1]**o+(0.267437363607)*x[1]+(0.0294176448501)*x[2]**o+(0.155211007088)*x[2]  
         s[3,2,2,1]=(-0.851636568209)*x[0]**o+(-0.761490675173)*x[0]+(-0.729643742868)*x[1]**o+(0.478780948031)*x[1]+(-0.036088351558)*x[2]**o+(0.823507165674)*x[2]  
         s[3,3,0,0]=(0.482377341472)*x[0]**o+(0.139556800754)*x[0]+(-0.0112720934043)*x[1]**o+(0.298852046645)*x[1]+(0.145554009271)*x[2]**o+(-0.859974982251)*x[2]  
         s[3,3,0,1]=(-0.137104991135)*x[0]**o+(-0.857876623449)*x[0]+(0.258417639346)*x[1]**o+(-0.389256714236)*x[1]+(-0.936199013774)*x[2]**o+(-0.312698752628)*x[2]  
         s[3,3,1,0]=(-0.488668823485)*x[0]**o+(-0.771705852614)*x[0]+(-0.450034458754)*x[1]**o+(0.632396692772)*x[1]+(-0.105848719123)*x[2]**o+(0.358481590951)*x[2]  
         s[3,3,1,1]=(-0.559261115256)*x[0]**o+(0.770050098012)*x[0]+(-0.125673261546)*x[1]**o+(0.863587697472)*x[1]+(0.94178472327)*x[2]**o+(0.691350347846)*x[2]  
         s[3,3,2,0]=(0.348276322002)*x[0]**o+(-0.367507421115)*x[0]+(0.171562046637)*x[1]**o+(-0.98530139967)*x[1]+(-0.374019522945)*x[2]**o+(-0.0772490996658)*x[2]  
         s[3,3,2,1]=(-0.91862240772)*x[0]**o+(-0.771336713978)*x[0]+(-0.510735333043)*x[1]**o+(-0.793667481925)*x[1]+(0.793023981359)*x[2]**o+(-0.211127108731)*x[2]  
         s[3,4,0,0]=(-0.439892942063)*x[0]**o+(-0.452356550969)*x[0]+(0.255344783422)*x[1]**o+(0.966971078667)*x[1]+(0.770960867316)*x[2]**o+(-0.877647551728)*x[2]  
         s[3,4,0,1]=(0.926860716799)*x[0]**o+(-0.325430377076)*x[0]+(0.593914577372)*x[1]**o+(-0.237069180519)*x[1]+(0.0779887304243)*x[2]**o+(0.0757684397401)*x[2]  
         s[3,4,1,0]=(-0.865144446511)*x[0]**o+(0.220573510075)*x[0]+(0.574182016443)*x[1]**o+(0.585433407304)*x[1]+(-0.304138910485)*x[2]**o+(-0.26316229504)*x[2]  
         s[3,4,1,1]=(-0.0941252376404)*x[0]**o+(-0.441659917216)*x[0]+(0.833947587523)*x[1]**o+(0.226992443402)*x[1]+(0.902425846073)*x[2]**o+(-0.525442142595)*x[2]  
         s[3,4,2,0]=(0.782184984647)*x[0]**o+(0.0260219673241)*x[0]+(0.664501465465)*x[1]**o+(-0.571404130587)*x[1]+(0.419283611654)*x[2]**o+(-0.419135271863)*x[2]  
         s[3,4,2,1]=(-0.944783897524)*x[0]**o+(-0.173931506017)*x[0]+(-0.0465484376595)*x[1]**o+(0.718604875734)*x[1]+(-0.388606992705)*x[2]**o+(-0.450843297215)*x[2]  
         ref[0,0,0,0]=(0.934771837454)/(o+1.)+(-0.434823412793)  
         ref[0,0,0,1]=(1.28803242766)/(o+1.)+(-0.0290220842909)  
         ref[0,0,1,0]=(-2.40244763121)/(o+1.)+(-0.306269462104)  
         ref[0,0,1,1]=(-1.62188544724)/(o+1.)+(0.0251869143786)  
         ref[0,0,2,0]=(0.698356878524)/(o+1.)+(-0.435866994151)  
         ref[0,0,2,1]=(0.0875965875576)/(o+1.)+(0.655921182948)  
         ref[0,1,0,0]=(0.0458359064556)/(o+1.)+(0.200816326568)  
         ref[0,1,0,1]=(-0.557948616036)/(o+1.)+(-0.331764866336)  
         ref[0,1,1,0]=(-1.37792398905)/(o+1.)+(-0.831943000542)  
         ref[0,1,1,1]=(-1.05744784285)/(o+1.)+(-0.363990638493)  
         ref[0,1,2,0]=(1.8785239999)/(o+1.)+(0.132914775729)  
         ref[0,1,2,1]=(-0.491737663947)/(o+1.)+(-0.262264208574)  
         ref[0,2,0,0]=(0.981768624328)/(o+1.)+(-0.528154847194)  
         ref[0,2,0,1]=(-0.924041283835)/(o+1.)+(-0.0118456080214)  
         ref[0,2,1,0]=(1.02602669138)/(o+1.)+(0.991571987955)  
         ref[0,2,1,1]=(0.293350581922)/(o+1.)+(-1.26454746919)  
         ref[0,2,2,0]=(1.20547396122)/(o+1.)+(0.33128271182)  
         ref[0,2,2,1]=(-0.633265442539)/(o+1.)+(0.576446315531)  
         ref[0,3,0,0]=(-0.107677324633)/(o+1.)+(0.0153782031713)  
         ref[0,3,0,1]=(-0.058445812213)/(o+1.)+(0.454914614557)  
         ref[0,3,1,0]=(-0.630456060199)/(o+1.)+(-0.155638329723)  
         ref[0,3,1,1]=(1.19340007429)/(o+1.)+(-0.605390734274)  
         ref[0,3,2,0]=(0.207048325661)/(o+1.)+(0.396354470118)  
         ref[0,3,2,1]=(-0.124698590323)/(o+1.)+(-0.533691881821)  
         ref[0,4,0,0]=(-0.00894177493875)/(o+1.)+(-0.271916856357)  
         ref[0,4,0,1]=(-1.32890925126)/(o+1.)+(-0.0898410243139)  
         ref[0,4,1,0]=(0.0975748584924)/(o+1.)+(0.535517090007)  
         ref[0,4,1,1]=(-0.476248278814)/(o+1.)+(0.0209889925155)  
         ref[0,4,2,0]=(0.770635807959)/(o+1.)+(-0.938934351625)  
         ref[0,4,2,1]=(0.160496937995)/(o+1.)+(0.114230384477)  
         ref[1,0,0,0]=(0.0402748792799)/(o+1.)+(0.182546725732)  
         ref[1,0,0,1]=(-0.262170284078)/(o+1.)+(0.523009320895)  
         ref[1,0,1,0]=(0.161867619856)/(o+1.)+(0.471253473618)  
         ref[1,0,1,1]=(-0.0310176979524)/(o+1.)+(-0.613310683933)  
         ref[1,0,2,0]=(0.414001554119)/(o+1.)+(-0.840604865888)  
         ref[1,0,2,1]=(-1.84830463035)/(o+1.)+(0.500311754645)  
         ref[1,1,0,0]=(-1.72483479516)/(o+1.)+(-0.638391130662)  
         ref[1,1,0,1]=(0.845004524414)/(o+1.)+(0.127933233045)  
         ref[1,1,1,0]=(-2.23640238202)/(o+1.)+(0.931171483895)  
         ref[1,1,1,1]=(-0.653016296101)/(o+1.)+(-0.0465695510937)  
         ref[1,1,2,0]=(1.30266900346)/(o+1.)+(0.406508116258)  
         ref[1,1,2,1]=(0.940394628687)/(o+1.)+(-0.0382056638017)  
         ref[1,2,0,0]=(-1.760002037)/(o+1.)+(0.762571118282)  
         ref[1,2,0,1]=(0.0599325111348)/(o+1.)+(0.88278715062)  
         ref[1,2,1,0]=(1.13325081764)/(o+1.)+(-0.298944519128)  
         ref[1,2,1,1]=(0.398128607122)/(o+1.)+(-0.266205921249)  
         ref[1,2,2,0]=(0.366682002873)/(o+1.)+(-0.400704896527)  
         ref[1,2,2,1]=(-0.136500445542)/(o+1.)+(-0.207374711313)  
         ref[1,3,0,0]=(-0.265899226265)/(o+1.)+(0.0876398784989)  
         ref[1,3,0,1]=(-1.0047182726)/(o+1.)+(-0.305250983945)  
         ref[1,3,1,0]=(0.339146148316)/(o+1.)+(-0.601809282005)  
         ref[1,3,1,1]=(-0.180834464635)/(o+1.)+(-0.689621840485)  
         ref[1,3,2,0]=(-0.221314207244)/(o+1.)+(-0.0359209514441)  
         ref[1,3,2,1]=(1.11791107754)/(o+1.)+(-1.11874071557)  
         ref[1,4,0,0]=(-0.00303741845779)/(o+1.)+(0.718914277262)  
         ref[1,4,0,1]=(1.26926346819)/(o+1.)+(-0.325837866004)  
         ref[1,4,1,0]=(-0.492469550194)/(o+1.)+(-0.289736873753)  
         ref[1,4,1,1]=(0.353522251312)/(o+1.)+(-1.10599684978)  
         ref[1,4,2,0]=(0.353627341229)/(o+1.)+(0.0483477873267)  
         ref[1,4,2,1]=(-0.7735107618)/(o+1.)+(-0.518761884451)  
         ref[2,0,0,0]=(0.793697859971)/(o+1.)+(-0.573428533787)  
         ref[2,0,0,1]=(-0.607778444644)/(o+1.)+(-1.26439762233)  
         ref[2,0,1,0]=(-2.15842546907)/(o+1.)+(0.153837078344)  
         ref[2,0,1,1]=(1.18258624713)/(o+1.)+(0.557418847254)  
         ref[2,0,2,0]=(0.7897031898)/(o+1.)+(-0.502932875729)  
         ref[2,0,2,1]=(1.60828071001)/(o+1.)+(-0.433073765244)  
         ref[2,1,0,0]=(1.20979858617)/(o+1.)+(-0.452436438458)  
         ref[2,1,0,1]=(-0.15595675075)/(o+1.)+(-0.0304279934298)  
         ref[2,1,1,0]=(-0.561834715406)/(o+1.)+(0.803031377485)  
         ref[2,1,1,1]=(0.0395341731061)/(o+1.)+(0.366443595681)  
         ref[2,1,2,0]=(2.48867633741)/(o+1.)+(-0.180417298296)  
         ref[2,1,2,1]=(0.149331123022)/(o+1.)+(-1.07148968987)  
         ref[2,2,0,0]=(-0.209434754019)/(o+1.)+(-0.763106212061)  
         ref[2,2,0,1]=(2.44814041751)/(o+1.)+(-1.02130994501)  
         ref[2,2,1,0]=(-0.651817994783)/(o+1.)+(0.212869463232)  
         ref[2,2,1,1]=(-0.9098862936)/(o+1.)+(-0.367079660928)  
         ref[2,2,2,0]=(-0.617978035965)/(o+1.)+(-0.621902294706)  
         ref[2,2,2,1]=(0.390306958936)/(o+1.)+(0.0173625539477)  
         ref[2,3,0,0]=(-0.300187497765)/(o+1.)+(0.28780146874)  
         ref[2,3,0,1]=(1.31507975214)/(o+1.)+(0.210484455741)  
         ref[2,3,1,0]=(-2.56413905202)/(o+1.)+(0.544520051234)  
         ref[2,3,1,1]=(0.601936722022)/(o+1.)+(-0.313181460754)  
         ref[2,3,2,0]=(0.758128840732)/(o+1.)+(-0.260265102571)  
         ref[2,3,2,1]=(0.809610237649)/(o+1.)+(0.527311663172)  
         ref[2,4,0,0]=(-0.873466583322)/(o+1.)+(-0.229866893409)  
         ref[2,4,0,1]=(-0.470871405045)/(o+1.)+(0.907523982721)  
         ref[2,4,1,0]=(1.58820295242)/(o+1.)+(0.44139731694)  
         ref[2,4,1,1]=(-0.627757953856)/(o+1.)+(-0.225552715397)  
         ref[2,4,2,0]=(-0.337082944702)/(o+1.)+(-0.322241822947)  
         ref[2,4,2,1]=(-0.75435810202)/(o+1.)+(0.596137934342)  
         ref[3,0,0,0]=(-0.658809182448)/(o+1.)+(-0.388745102312)  
         ref[3,0,0,1]=(-0.668726512445)/(o+1.)+(-0.200455602857)  
         ref[3,0,1,0]=(-0.316120206381)/(o+1.)+(0.493293296905)  
         ref[3,0,1,1]=(-1.46721022602)/(o+1.)+(-0.139825346344)  
         ref[3,0,2,0]=(-1.88559464763)/(o+1.)+(0.405324570636)  
         ref[3,0,2,1]=(-1.43966067234)/(o+1.)+(0.0980357738822)  
         ref[3,1,0,0]=(-0.448161893009)/(o+1.)+(-0.0308422694803)  
         ref[3,1,0,1]=(-0.0540372986773)/(o+1.)+(-0.851335446411)  
         ref[3,1,1,0]=(0.709145995686)/(o+1.)+(-0.0440814976379)  
         ref[3,1,1,1]=(-1.54203885293)/(o+1.)+(0.215708042053)  
         ref[3,1,2,0]=(-0.232776059422)/(o+1.)+(0.0143011952278)  
         ref[3,1,2,1]=(1.4264927767)/(o+1.)+(-1.21801289226)  
         ref[3,2,0,0]=(-0.145171064331)/(o+1.)+(1.01667674349)  
         ref[3,2,0,1]=(0.908967294363)/(o+1.)+(0.444544005797)  
         ref[3,2,1,0]=(-1.26527555764)/(o+1.)+(-0.169158246218)  
         ref[3,2,1,1]=(-1.35199519577)/(o+1.)+(-0.178153435155)  
         ref[3,2,2,0]=(0.291674133752)/(o+1.)+(0.403491705381)  
         ref[3,2,2,1]=(-1.61736866264)/(o+1.)+(0.270398719266)  
         ref[3,3,0,0]=(0.616659257339)/(o+1.)+(-0.210783067426)  
         ref[3,3,0,1]=(-0.814886365562)/(o+1.)+(-0.779916045157)  
         ref[3,3,1,0]=(-1.04455200136)/(o+1.)+(0.109586215554)  
         ref[3,3,1,1]=(0.256850346468)/(o+1.)+(1.16249407166)  
         ref[3,3,2,0]=(0.145818845694)/(o+1.)+(-0.715028960225)  
         ref[3,3,2,1]=(-0.636333759404)/(o+1.)+(-0.888065652317)  
         ref[3,4,0,0]=(0.586412708675)/(o+1.)+(-0.181516512015)  
         ref[3,4,0,1]=(1.5987640246)/(o+1.)+(-0.243365558927)  
         ref[3,4,1,0]=(-0.595101340552)/(o+1.)+(0.271422311169)  
         ref[3,4,1,1]=(1.64224819596)/(o+1.)+(-0.370054808205)  
         ref[3,4,2,0]=(1.86597006177)/(o+1.)+(-0.482258717563)  
         ref[3,4,2,1]=(-1.37993932789)/(o+1.)+(0.0469150362512)  
       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_onFunction_fromSymbol_ReducedSolution_rank0(self):  
       """  
       tests integral of rank 0 Symbol on the Function  
   
       assumptions: ReducedSolution(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=1  
       dim=self.domain.getDim()  
       w_ref=Function(self.domain)  
       w=ReducedSolution(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=())  
       s=Data(0,(),w)  
       if dim==2:  
         s=(0.518496555195)*x[0]+(-1.7081835316)*x[1]  
         ref=(-0.587946015314)/(o+1.)+(-0.300870480545)  
       else:  
         s=(0.271043713323)*x[0]+(-1.57101724485)*x[1]+(-0.650553623396)*x[2]  
         ref=(-1.53180577827)/(o+1.)+(-0.209360688325)  
       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_onFunction_fromSymbol_ReducedSolution_rank1(self):  
       """  
       tests integral of rank 1 Symbol on the Function  
   
       assumptions: ReducedSolution(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=1  
       dim=self.domain.getDim()  
       w_ref=Function(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.228569380378)*x[0]+(0.808739010281)*x[1]  
         s[1]=(0.658420467565)*x[0]+(0.755018594164)*x[1]  
         ref[0]=(0.635537444802)/(o+1.)+(-0.0276839074492)  
         ref[1]=(0.431019006365)/(o+1.)+(0.491210027682)  
       else:  
         s[0]=(0.376210963228)*x[0]+(-1.32850082986)*x[1]+(0.536274160408)*x[2]  
         s[1]=(-0.771050457843)*x[0]+(-0.16954629666)*x[1]+(-0.579642261351)*x[2]  
         ref[0]=(-0.923045104748)/(o+1.)+(0.253514699262)  
         ref[1]=(0.10262370672)/(o+1.)+(-0.811431361287)  
       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_onFunction_fromSymbol_ReducedSolution_rank2(self):  
       """  
       tests integral of rank 2 Symbol on the Function  
   
       assumptions: ReducedSolution(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=1  
       dim=self.domain.getDim()  
       w_ref=Function(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.405824989536)*x[0]+(-1.36105849061)*x[1]  
         s[0,1]=(0.759504921251)*x[0]+(0.455515132277)*x[1]  
         s[0,2]=(-1.37469026888)*x[0]+(1.35869839203)*x[1]  
         s[0,3]=(-0.0438580623198)*x[0]+(0.34881551198)*x[1]  
         s[0,4]=(-0.0097850380672)*x[0]+(0.61199301527)*x[1]  
         s[1,0]=(-1.24950855151)*x[0]+(0.560604227152)*x[1]  
         s[1,1]=(0.897125563557)*x[0]+(-0.362799426566)*x[1]  
         s[1,2]=(-0.475265733496)*x[0]+(-0.906032283495)*x[1]  
         s[1,3]=(0.184749910708)*x[0]+(0.961807058286)*x[1]  
         s[1,4]=(-1.8130820241)*x[0]+(-0.0716801569248)*x[1]  
         s[2,0]=(0.401163196364)*x[0]+(-0.122822662117)*x[1]  
         s[2,1]=(-0.183141841931)*x[0]+(0.159646202564)*x[1]  
         s[2,2]=(0.494070531254)*x[0]+(0.0283267498222)*x[1]  
         s[2,3]=(-0.46326385119)*x[0]+(0.416856391877)*x[1]  
         s[2,4]=(0.669972632028)*x[0]+(1.01207764348)*x[1]  
         s[3,0]=(0.579509485187)*x[0]+(0.578664253542)*x[1]  
         s[3,1]=(1.1904242989)*x[0]+(-0.617672917808)*x[1]  
         s[3,2]=(1.01069090914)*x[0]+(-0.132861271259)*x[1]  
         s[3,3]=(-1.02014113453)*x[0]+(-1.10411835631)*x[1]  
         s[3,4]=(-0.178208550651)*x[0]+(-0.590646644191)*x[1]  
         ref[0,0]=(-1.81750521429)/(o+1.)+(0.0253108670731)  
         ref[0,1]=(1.13215741955)/(o+1.)+(0.0414313169864)  
         ref[0,2]=(-0.346109803394)/(o+1.)+(0.165058963273)  
         ref[0,3]=(1.16722378378)/(o+1.)+(-0.431133167061)  
         ref[0,4]=(1.39150379152)/(o+1.)+(-0.39464790716)  
         ref[1,0]=(-0.249819369301)/(o+1.)+(-0.219542477529)  
         ref[1,1]=(-0.253832127476)/(o+1.)+(0.394079132234)  
         ref[1,2]=(-0.514583575657)/(o+1.)+(-0.433357220667)  
         ref[1,3]=(1.16430206364)/(o+1.)+(-0.00887254732364)  
         ref[1,4]=(-1.40353822359)/(o+1.)+(-0.240611978717)  
         ref[2,0]=(0.0129701699159)/(o+1.)+(0.132685182166)  
         ref[2,1]=(-0.000259682696025)/(o+1.)+(-0.0116179783357)  
         ref[2,2]=(-0.736785877312)/(o+1.)+(0.629591579194)  
         ref[2,3]=(-0.319819594662)/(o+1.)+(0.136706067675)  
         ref[2,4]=(1.34735651213)/(o+1.)+(0.167346881689)  
         ref[3,0]=(1.02891998838)/(o+1.)+(0.0646268751734)  
         ref[3,1]=(0.0226437097602)/(o+1.)+(0.275053835665)  
         ref[3,2]=(-0.367947454589)/(o+1.)+(0.622888546236)  
         ref[3,3]=(-1.07416112237)/(o+1.)+(-0.525049184236)  
         ref[3,4]=(-0.423224656448)/(o+1.)+(-0.172815269197)  
       else:  
         s[0,0]=(0.391957465543)*x[0]+(-0.836212796005)*x[1]+(0.541170293661)*x[2]  
         s[0,1]=(-0.324966494738)*x[0]+(0.62718596172)*x[1]+(-0.00110999366491)*x[2]  
         s[0,2]=(0.377719216476)*x[0]+(1.20630293683)*x[1]+(-0.936497207115)*x[2]  
         s[0,3]=(-1.52853135673)*x[0]+(-0.634683048191)*x[1]+(-0.533312108123)*x[2]  
         s[0,4]=(-0.659359670617)*x[0]+(-1.23995360412)*x[1]+(0.669989279254)*x[2]  
         s[1,0]=(-0.45120395504)*x[0]+(1.25119902426)*x[1]+(0.11139465291)*x[2]  
         s[1,1]=(0.431699115955)*x[0]+(1.165662618)*x[1]+(-1.12543997002)*x[2]  
         s[1,2]=(0.16640215316)*x[0]+(-1.81838137531)*x[1]+(-0.111705546449)*x[2]  
         s[1,3]=(-1.56135929502)*x[0]+(0.425946749357)*x[1]+(0.255013889109)*x[2]  
         s[1,4]=(0.320981318781)*x[0]+(-0.536492696361)*x[1]+(1.21768285382)*x[2]  
         s[2,0]=(-0.600249234632)*x[0]+(-0.497626140165)*x[1]+(-0.0606420495108)*x[2]  
         s[2,1]=(-0.144412727094)*x[0]+(-1.09139116844)*x[1]+(-0.39344520166)*x[2]  
         s[2,2]=(-0.433006957898)*x[0]+(-0.287282800253)*x[1]+(8.69987670264e-05)*x[2]  
         s[2,3]=(0.805491532167)*x[0]+(-1.17746983966)*x[1]+(0.720861745039)*x[2]  
         s[2,4]=(-0.735630820744)*x[0]+(-1.01122803474)*x[1]+(1.72681276559)*x[2]  
         s[3,0]=(-0.739861204924)*x[0]+(0.739077496919)*x[1]+(-0.0950784436747)*x[2]  
         s[3,1]=(0.428369405071)*x[0]+(-0.0613035842349)*x[1]+(1.22804321951)*x[2]  
         s[3,2]=(0.617885252444)*x[0]+(-1.63428007618)*x[1]+(-0.543704110813)*x[2]  
         s[3,3]=(-1.52397266949)*x[0]+(-1.33821038473)*x[1]+(0.578214428096)*x[2]  
         s[3,4]=(-0.904835367377)*x[0]+(0.156039380736)*x[1]+(-0.833632978592)*x[2]  
         ref[0,0]=(-0.865179337718)/(o+1.)+(0.481047150458)  
         ref[0,1]=(-0.427981609749)/(o+1.)+(0.364545541533)  
         ref[0,2]=(0.738756225478)/(o+1.)+(-0.0456156396413)  
         ref[0,3]=(-2.19753999815)/(o+1.)+(-0.249493257444)  
         ref[0,4]=(-1.44493155356)/(o+1.)+(0.107803779038)  
         ref[1,0]=(1.72841073711)/(o+1.)+(-0.408510507493)  
         ref[1,1]=(0.688403407203)/(o+1.)+(-0.108240821633)  
         ref[1,2]=(-0.0562832360974)/(o+1.)+(-0.853700766251)  
         ref[1,3]=(-0.866037983384)/(o+1.)+(-0.00718033658349)  
         ref[1,4]=(1.27849436197)/(o+1.)+(-0.138161442865)  
         ref[2,0]=(-0.450814686687)/(o+1.)+(-0.353851368811)  
         ref[2,1]=(-0.608210959793)/(o+1.)+(-0.510519068702)  
         ref[2,2]=(-1.55008808776)/(o+1.)+(0.414942664188)  
         ref[2,3]=(0.242744047944)/(o+1.)+(0.0530696948023)  
         ref[2,4]=(-0.793195276992)/(o+1.)+(0.386574593552)  
         ref[3,0]=(-0.33646344984)/(o+1.)+(0.12030064908)  
         ref[3,1]=(1.37599194013)/(o+1.)+(0.109558550106)  
         ref[3,2]=(0.0175612882637)/(o+1.)+(-0.788830111409)  
         ref[3,3]=(-0.747828767237)/(o+1.)+(-0.768069929445)  
         ref[3,4]=(-0.876520699909)/(o+1.)+(-0.352954132662)  
       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_onFunction_fromSymbol_ReducedSolution_rank3(self):  
       """  
       tests integral of rank 3 Symbol on the Function  
   
       assumptions: ReducedSolution(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=1  
       dim=self.domain.getDim()  
       w_ref=Function(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.64806859919)*x[0]+(0.669871100749)*x[1]  
         s[0,0,1]=(0.351912095781)*x[0]+(-0.795221209702)*x[1]  
         s[0,1,0]=(1.67848694486)*x[0]+(0.294895162463)*x[1]  
         s[0,1,1]=(0.360904647807)*x[0]+(1.08975889449)*x[1]  
         s[1,0,0]=(-0.0924096394032)*x[0]+(-1.45324202762)*x[1]  
         s[1,0,1]=(-0.160994756309)*x[0]+(0.551455091958)*x[1]  
         s[1,1,0]=(1.32478072001)*x[0]+(-1.43998718605)*x[1]  
         s[1,1,1]=(0.481907947963)*x[0]+(-1.62005808161)*x[1]  
         s[2,0,0]=(1.28445085089)*x[0]+(0.139212942532)*x[1]  
         s[2,0,1]=(0.13496510335)*x[0]+(-0.3090345869)*x[1]  
         s[2,1,0]=(1.34702478342)*x[0]+(0.77762332551)*x[1]  
         s[2,1,1]=(0.2270682866)*x[0]+(0.585652373115)*x[1]  
         s[3,0,0]=(0.974462828497)*x[0]+(-0.0761666893839)*x[1]  
         s[3,0,1]=(0.787654033315)*x[0]+(-0.665952609368)*x[1]  
         s[3,1,0]=(-0.535337193665)*x[0]+(-0.10003612917)*x[1]  
         s[3,1,1]=(0.90669722873)*x[0]+(0.0637346383222)*x[1]  
         s[4,0,0]=(0.224906594767)*x[0]+(0.255067891624)*x[1]  
         s[4,0,1]=(1.45652552317)*x[0]+(-0.896697311539)*x[1]  
         s[4,1,0]=(0.0111655859631)*x[0]+(1.35361034898)*x[1]  
         s[4,1,1]=(-1.49696987574)*x[0]+(-0.0630120006374)*x[1]  
         s[5,0,0]=(-1.37528487034)*x[0]+(-1.03082532988)*x[1]  
         s[5,0,1]=(0.298794708742)*x[0]+(-0.338420113242)*x[1]  
         s[5,1,0]=(0.101365713196)*x[0]+(0.46239070902)*x[1]  
         s[5,1,1]=(-0.329260078889)*x[0]+(0.0114285623122)*x[1]  
         ref[0,0,0]=(1.04954961047)/(o+1.)+(0.134195044736)  
         ref[0,0,1]=(-0.941346926582)/(o+1.)+(0.24901890633)  
         ref[0,1,0]=(0.33540890863)/(o+1.)+(0.818986599345)  
         ref[0,1,1]=(-0.0452512610385)/(o+1.)+(0.747957401666)  
         ref[1,0,0]=(-0.0571552186929)/(o+1.)+(-0.744248224165)  
         ref[1,0,1]=(-0.256660001756)/(o+1.)+(0.323560168702)  
         ref[1,1,0]=(0.173031418514)/(o+1.)+(-0.144118942277)  
         ref[1,1,1]=(-1.27331535296)/(o+1.)+(0.0675826096564)  
         ref[2,0,0]=(1.27442931542)/(o+1.)+(0.0746172389969)  
         ref[2,0,1]=(1.23134060492)/(o+1.)+(-0.702705044233)  
         ref[2,1,0]=(1.44361222924)/(o+1.)+(0.340517939842)  
         ref[2,1,1]=(0.858404770157)/(o+1.)+(-0.0228420552212)  
         ref[3,0,0]=(0.53268376719)/(o+1.)+(0.182806185962)  
         ref[3,0,1]=(0.962024080252)/(o+1.)+(-0.420161328153)  
         ref[3,1,0]=(-1.06376900656)/(o+1.)+(0.214197841863)  
         ref[3,1,1]=(0.437728927482)/(o+1.)+(0.266351469785)  
         ref[4,0,0]=(-0.247848566495)/(o+1.)+(0.363911526443)  
         ref[4,0,1]=(0.275565249528)/(o+1.)+(0.142131481049)  
         ref[4,1,0]=(0.8446292547)/(o+1.)+(0.260073340122)  
         ref[4,1,1]=(-1.92408551747)/(o+1.)+(0.182051820549)  
         ref[5,0,0]=(-1.70867649172)/(o+1.)+(-0.348716854247)  
         ref[5,0,1]=(-0.216851661682)/(o+1.)+(0.088613128591)  
         ref[5,1,0]=(1.89734425595)/(o+1.)+(-0.666793916865)  
         ref[5,1,1]=(-0.281093101446)/(o+1.)+(-0.0183692075654)  
       else:  
         s[0,0,0]=(0.142896594259)*x[0]+(-0.458264763854)*x[1]+(0.521893125785)*x[2]  
         s[0,0,1]=(-0.141846975275)*x[0]+(-0.976845409768)*x[1]+(-1.14147520898)*x[2]  
         s[0,1,0]=(0.141747271548)*x[0]+(-1.21811158828)*x[1]+(0.0640715930615)*x[2]  
         s[0,1,1]=(0.462551385436)*x[0]+(-0.87929813895)*x[1]+(0.944848279649)*x[2]  
         s[1,0,0]=(0.246197516828)*x[0]+(-0.0275751890238)*x[1]+(0.278318853806)*x[2]  
         s[1,0,1]=(0.525663042785)*x[0]+(0.191011208259)*x[1]+(-1.27931005652)*x[2]  
         s[1,1,0]=(-1.12276137904)*x[0]+(0.474659469962)*x[1]+(0.15450537857)*x[2]  
         s[1,1,1]=(0.321959890457)*x[0]+(-0.0325903104321)*x[1]+(-0.735505871467)*x[2]  
         s[2,0,0]=(-0.190194685931)*x[0]+(-0.277506154989)*x[1]+(0.0984734800625)*x[2]  
         s[2,0,1]=(0.286493694398)*x[0]+(0.841559451892)*x[1]+(0.20572294365)*x[2]  
         s[2,1,0]=(-0.0132570386632)*x[0]+(-0.160857995452)*x[1]+(-0.813758770212)*x[2]  
         s[2,1,1]=(0.00519333657271)*x[0]+(0.0324836424574)*x[1]+(0.493299621992)*x[2]  
         s[3,0,0]=(0.300624746821)*x[0]+(0.211207146953)*x[1]+(1.0860831317)*x[2]  
         s[3,0,1]=(-0.696336553938)*x[0]+(-1.28551896118)*x[1]+(0.738769481443)*x[2]  
         s[3,1,0]=(0.15510282832)*x[0]+(-1.15795290548)*x[1]+(0.543235378485)*x[2]  
         s[3,1,1]=(-0.714308237763)*x[0]+(0.239072001232)*x[1]+(-0.187168055861)*x[2]  
         s[4,0,0]=(0.624611061079)*x[0]+(1.11568209096)*x[1]+(-1.46683771155)*x[2]  
         s[4,0,1]=(1.45301860552)*x[0]+(0.74921646591)*x[1]+(-0.796630526412)*x[2]  
         s[4,1,0]=(0.560555339207)*x[0]+(-0.421267308186)*x[1]+(-0.222312671328)*x[2]  
         s[4,1,1]=(0.807845684562)*x[0]+(0.323266951017)*x[1]+(1.51940950039)*x[2]  
         s[5,0,0]=(-0.558067921385)*x[0]+(-0.214928793546)*x[1]+(1.01402046886)*x[2]  
         s[5,0,1]=(1.20688436616)*x[0]+(0.0247589671447)*x[1]+(-0.368536410815)*x[2]  
         s[5,1,0]=(-0.324541665933)*x[0]+(-0.205515389215)*x[1]+(0.758278431203)*x[2]  
         s[5,1,1]=(-0.620405057772)*x[0]+(-0.67647528448)*x[1]+(1.32328947052)*x[2]  
         ref[0,0,0]=(0.260018146786)/(o+1.)+(-0.0267465952979)  
         ref[0,0,1]=(-0.435502524101)/(o+1.)+(-0.912332534962)  
         ref[0,1,0]=(-0.0330362836983)/(o+1.)+(-0.489628219987)  
         ref[0,1,1]=(1.07484163998)/(o+1.)+(-0.273370056924)  
         ref[1,0,0]=(-0.523779853488)/(o+1.)+(0.510360517549)  
         ref[1,0,1]=(0.448972814496)/(o+1.)+(-0.505804309986)  
         ref[1,1,0]=(-1.09840793106)/(o+1.)+(0.302405700276)  
         ref[1,1,1]=(0.130511241273)/(o+1.)+(-0.288323766357)  
         ref[2,0,0]=(-0.805299870557)/(o+1.)+(0.21803625485)  
         ref[2,0,1]=(0.271181617798)/(o+1.)+(0.531297236071)  
         ref[2,1,0]=(-1.29575884246)/(o+1.)+(0.153942519064)  
         ref[2,1,1]=(-0.600379662508)/(o+1.)+(0.565678131765)  
         ref[3,0,0]=(1.87814767227)/(o+1.)+(-0.140116323394)  
         ref[3,0,1]=(-0.195825320078)/(o+1.)+(-0.523630356799)  
         ref[3,1,0]=(-0.959261224384)/(o+1.)+(0.249823262853)  
         ref[3,1,1]=(1.05531553015)/(o+1.)+(-0.858859911271)  
         ref[4,0,0]=(0.65497734235)/(o+1.)+(-0.190760950929)  
         ref[4,0,1]=(1.37092574409)/(o+1.)+(0.0173394004651)  
         ref[4,1,0]=(1.27754767629)/(o+1.)+(-0.6802861583)  
         ref[4,1,1]=(1.23997013471)/(o+1.)+(0.70527600063)  
         ref[5,0,0]=(-0.383142890439)/(o+1.)+(0.312083322186)  
         ref[5,0,1]=(1.64380369652)/(o+1.)+(-0.390348387013)  
         ref[5,1,0]=(-0.812713549757)/(o+1.)+(0.520467462905)  
         ref[5,1,1]=(0.600505313178)/(o+1.)+(-0.287048092454)  
       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_onFunction_fromSymbol_ReducedSolution_rank4(self):  
       """  
       tests integral of rank 4 Symbol on the Function  
   
       assumptions: ReducedSolution(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=1  
       dim=self.domain.getDim()  
       w_ref=Function(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.235888975732)*x[0]+(-0.734372259615)*x[1]  
         s[0,0,0,1]=(0.0665724430605)*x[0]+(-0.0890002398629)*x[1]  
         s[0,0,1,0]=(-1.19774759676)*x[0]+(1.00321581155)*x[1]  
         s[0,0,1,1]=(0.93370004223)*x[0]+(-0.953835581453)*x[1]  
         s[0,0,2,0]=(-0.0557204731966)*x[0]+(0.94945217411)*x[1]  
         s[0,0,2,1]=(-0.772628465097)*x[0]+(1.77100579145)*x[1]  
         s[0,1,0,0]=(-0.405653863463)*x[0]+(0.494482129094)*x[1]  
         s[0,1,0,1]=(0.636236763209)*x[0]+(-1.63254203234)*x[1]  
         s[0,1,1,0]=(0.941764211044)*x[0]+(0.699520209508)*x[1]  
         s[0,1,1,1]=(1.05045643599)*x[0]+(0.0596636815695)*x[1]  
         s[0,1,2,0]=(0.578668042684)*x[0]+(0.285442340394)*x[1]  
         s[0,1,2,1]=(0.469149909671)*x[0]+(1.26526906754)*x[1]  
         s[0,2,0,0]=(1.05435496407)*x[0]+(-0.592645628655)*x[1]  
         s[0,2,0,1]=(0.066181979241)*x[0]+(-1.42368311585)*x[1]  
         s[0,2,1,0]=(-0.896588999422)*x[0]+(1.44881386304)*x[1]  
         s[0,2,1,1]=(-0.862544854709)*x[0]+(-0.398360134784)*x[1]  
         s[0,2,2,0]=(1.02969811319)*x[0]+(0.318993808627)*x[1]  
         s[0,2,2,1]=(0.0143773859487)*x[0]+(-0.327118788648)*x[1]  
         s[0,3,0,0]=(0.021196438108)*x[0]+(1.8515159226)*x[1]  
         s[0,3,0,1]=(0.627726779803)*x[0]+(-0.302716383303)*x[1]  
         s[0,3,1,0]=(0.165624370858)*x[0]+(0.274919760437)*x[1]  
         s[0,3,1,1]=(0.283214725106)*x[0]+(-0.872378951063)*x[1]  
         s[0,3,2,0]=(-0.83391985409)*x[0]+(0.731217556829)*x[1]  
         s[0,3,2,1]=(0.918833558754)*x[0]+(0.714715370412)*x[1]  
         s[0,4,0,0]=(-0.503211677055)*x[0]+(0.0289310095577)*x[1]  
         s[0,4,0,1]=(0.597129238132)*x[0]+(0.540475624893)*x[1]  
         s[0,4,1,0]=(0.687211570349)*x[0]+(0.594018658674)*x[1]  
         s[0,4,1,1]=(1.5970484642)*x[0]+(-0.495319600999)*x[1]  
         s[0,4,2,0]=(1.20627016067)*x[0]+(0.461261823726)*x[1]  
         s[0,4,2,1]=(0.165927055028)*x[0]+(1.09007328428)*x[1]  
         s[1,0,0,0]=(1.16105917598)*x[0]+(1.82590164801)*x[1]  
         s[1,0,0,1]=(-1.13479961391)*x[0]+(0.0351464050353)*x[1]  
         s[1,0,1,0]=(-0.318954647255)*x[0]+(0.210946813363)*x[1]  
         s[1,0,1,1]=(1.31393538581)*x[0]+(0.198463680367)*x[1]  
         s[1,0,2,0]=(1.17799558613)*x[0]+(0.514357347746)*x[1]  
         s[1,0,2,1]=(0.571191341129)*x[0]+(0.694971250457)*x[1]  
         s[1,1,0,0]=(0.132901410189)*x[0]+(-0.262070778236)*x[1]  
         s[1,1,0,1]=(-0.871431837436)*x[0]+(-0.514707012778)*x[1]  
         s[1,1,1,0]=(-0.319003186732)*x[0]+(-0.014973803902)*x[1]  
         s[1,1,1,1]=(0.260213741998)*x[0]+(1.32908581921)*x[1]  
         s[1,1,2,0]=(0.811339404893)*x[0]+(-0.304564391555)*x[1]  
         s[1,1,2,1]=(-0.062193223101)*x[0]+(-0.911704705741)*x[1]  
         s[1,2,0,0]=(0.0932623640149)*x[0]+(1.12570360092)*x[1]  
         s[1,2,0,1]=(1.16504942277)*x[0]+(-0.385840092559)*x[1]  
         s[1,2,1,0]=(1.3440680469)*x[0]+(0.532696669818)*x[1]  
         s[1,2,1,1]=(1.31050128725)*x[0]+(0.00906728815983)*x[1]  
         s[1,2,2,0]=(-1.36931832474)*x[0]+(-1.70562158659)*x[1]  
         s[1,2,2,1]=(-1.8375028036)*x[0]+(1.52366054242)*x[1]  
         s[1,3,0,0]=(0.474023303611)*x[0]+(0.437518737767)*x[1]  
         s[1,3,0,1]=(-0.42921544272)*x[0]+(0.387647202618)*x[1]  
         s[1,3,1,0]=(0.863045413096)*x[0]+(-0.36260979035)*x[1]  
         s[1,3,1,1]=(-0.654365401799)*x[0]+(0.533926246461)*x[1]  
         s[1,3,2,0]=(0.418152564814)*x[0]+(1.11544647745)*x[1]  
         s[1,3,2,1]=(-1.60947873228)*x[0]+(0.591727770738)*x[1]  
         s[1,4,0,0]=(-1.51807668572)*x[0]+(-1.01613349614)*x[1]  
         s[1,4,0,1]=(-1.50163863727)*x[0]+(1.50376272164)*x[1]  
         s[1,4,1,0]=(0.320776223369)*x[0]+(-0.700391339598)*x[1]  
         s[1,4,1,1]=(0.745224476612)*x[0]+(-0.850870606209)*x[1]  
         s[1,4,2,0]=(-0.179598404379)*x[0]+(1.75799776411)*x[1]  
         s[1,4,2,1]=(0.00909330900106)*x[0]+(-0.077399205942)*x[1]  
         s[2,0,0,0]=(0.505719447396)*x[0]+(-0.275603298829)*x[1]  
         s[2,0,0,1]=(1.46787325811)*x[0]+(0.534793377012)*x[1]  
         s[2,0,1,0]=(0.77645891983)*x[0]+(0.540540443218)*x[1]  
         s[2,0,1,1]=(0.429661881583)*x[0]+(1.43421311479)*x[1]  
         s[2,0,2,0]=(1.02806543045)*x[0]+(0.931834883879)*x[1]  
         s[2,0,2,1]=(0.763031666632)*x[0]+(0.873653388204)*x[1]  
         s[2,1,0,0]=(0.261772733655)*x[0]+(-1.18679909814)*x[1]  
         s[2,1,0,1]=(-1.61662908583)*x[0]+(1.10646142209)*x[1]  
         s[2,1,1,0]=(0.188527773811)*x[0]+(-0.772410233645)*x[1]  
         s[2,1,1,1]=(-0.869931105194)*x[0]+(1.51014899284)*x[1]  
         s[2,1,2,0]=(0.252478837689)*x[0]+(1.22480134325)*x[1]  
         s[2,1,2,1]=(1.49578867187)*x[0]+(-0.877973056373)*x[1]  
         s[2,2,0,0]=(-0.209568005598)*x[0]+(-0.0462992389671)*x[1]  
         s[2,2,0,1]=(-0.298130269216)*x[0]+(-0.908352713549)*x[1]  
         s[2,2,1,0]=(-0.586370615835)*x[0]+(-1.72704626602)*x[1]  
         s[2,2,1,1]=(1.26217059553)*x[0]+(0.676548549908)*x[1]  
         s[2,2,2,0]=(0.961200845015)*x[0]+(0.612151157303)*x[1]  
         s[2,2,2,1]=(0.700873758828)*x[0]+(0.800662765762)*x[1]  
         s[2,3,0,0]=(-0.319747641322)*x[0]+(0.689929330298)*x[1]  
         s[2,3,0,1]=(-1.04393759081)*x[0]+(-1.80449230281)*x[1]  
         s[2,3,1,0]=(-0.0410072962318)*x[0]+(-0.678000289402)*x[1]  
         s[2,3,1,1]=(-0.329381648117)*x[0]+(-0.935487069857)*x[1]  
         s[2,3,2,0]=(-0.907460976718)*x[0]+(0.0314212805943)*x[1]  
         s[2,3,2,1]=(0.593604907619)*x[0]+(-0.479146057787)*x[1]  
         s[2,4,0,0]=(-0.0337048332079)*x[0]+(0.239721443625)*x[1]  
         s[2,4,0,1]=(0.721609580339)*x[0]+(-1.06464423044)*x[1]  
         s[2,4,1,0]=(0.670568080353)*x[0]+(1.28774286264)*x[1]  
         s[2,4,1,1]=(0.603608338555)*x[0]+(0.323996221169)*x[1]  
         s[2,4,2,0]=(0.0371268677698)*x[0]+(0.401814556385)*x[1]  
         s[2,4,2,1]=(0.436926475796)*x[0]+(-0.819433312575)*x[1]  
         s[3,0,0,0]=(-0.0190186791033)*x[0]+(0.501672647061)*x[1]  
         s[3,0,0,1]=(0.00060856018325)*x[0]+(-0.414668792931)*x[1]  
         s[3,0,1,0]=(0.699428985955)*x[0]+(0.612631528371)*x[1]  
         s[3,0,1,1]=(-0.659371576463)*x[0]+(-0.0982545515259)*x[1]  
         s[3,0,2,0]=(0.444351889183)*x[0]+(0.53998411713)*x[1]  
         s[3,0,2,1]=(-0.281563709018)*x[0]+(-0.486501437256)*x[1]  
         s[3,1,0,0]=(0.407521411466)*x[0]+(-0.749870044816)*x[1]  
         s[3,1,0,1]=(-0.638780264813)*x[0]+(0.230397511262)*x[1]  
         s[3,1,1,0]=(1.16000440204)*x[0]+(0.13074916095)*x[1]  
         s[3,1,1,1]=(-1.30550439046)*x[0]+(-1.33788704039)*x[1]  
         s[3,1,2,0]=(-0.540767742404)*x[0]+(-0.148316212185)*x[1]  
         s[3,1,2,1]=(1.70452499495)*x[0]+(0.935421717463)*x[1]  
         s[3,2,0,0]=(0.320990904519)*x[0]+(0.467953609756)*x[1]  
         s[3,2,0,1]=(-0.26002228203)*x[0]+(-0.925765706976)*x[1]  
         s[3,2,1,0]=(0.925754935382)*x[0]+(0.240432086422)*x[1]  
         s[3,2,1,1]=(0.0214680080146)*x[0]+(-1.11507977191)*x[1]  
         s[3,2,2,0]=(-0.187946153679)*x[0]+(0.024781322847)*x[1]  
         s[3,2,2,1]=(-1.41866510495)*x[0]+(0.596173034069)*x[1]  
         s[3,3,0,0]=(0.77087649562)*x[0]+(0.848168811103)*x[1]  
         s[3,3,0,1]=(0.218810390517)*x[0]+(0.116909485563)*x[1]  
         s[3,3,1,0]=(-0.889981738645)*x[0]+(-0.506355969844)*x[1]  
         s[3,3,1,1]=(1.15870903185)*x[0]+(-0.8158119166)*x[1]  
         s[3,3,2,0]=(-0.345230989856)*x[0]+(-0.138496974465)*x[1]  
         s[3,3,2,1]=(-0.819830787817)*x[0]+(-1.66747998417)*x[1]  
         s[3,4,0,0]=(-1.74647564112)*x[0]+(0.22309219172)*x[1]  
         s[3,4,0,1]=(0.146804717412)*x[0]+(0.493084518827)*x[1]  
         s[3,4,1,0]=(-0.536943383893)*x[0]+(-0.686288132381)*x[1]  
         s[3,4,1,1]=(-0.142983666789)*x[0]+(-0.183927597857)*x[1]  
         s[3,4,2,0]=(-0.173071632973)*x[0]+(-0.696870700802)*x[1]  
         s[3,4,2,1]=(-0.359163238166)*x[0]+(-0.172033035327)*x[1]  
         ref[0,0,0,0]=(-0.603598770198)/(o+1.)+(0.0525577431575)  
         ref[0,0,0,1]=(1.04505857398)/(o+1.)+(-0.533743185393)  
         ref[0,0,1,0]=(0.00772071573504)/(o+1.)+(-0.101126250473)  
         ref[0,0,1,1]=(-0.290587702404)/(o+1.)+(0.135226081591)  
         ref[0,0,2,0]=(0.614426628234)/(o+1.)+(0.139652536339)  
         ref[0,0,2,1]=(-0.0228094425795)/(o+1.)+(0.510593384465)  
         ref[0,1,0,0]=(-0.436885078328)/(o+1.)+(0.262856671979)  
         ref[0,1,0,1]=(0.0510259667548)/(o+1.)+(-0.523665617945)  
         ref[0,1,1,0]=(0.744462079536)/(o+1.)+(0.448411170508)  
         ref[0,1,1,1]=(1.52720962375)/(o+1.)+(-0.208544753096)  
         ref[0,1,2,0]=(0.73405306307)/(o+1.)+(0.0650286600044)  
         ref[0,1,2,1]=(0.550924984933)/(o+1.)+(0.591746996137)  
         ref[0,2,0,0]=(-0.347797813257)/(o+1.)+(0.404753574338)  
         ref[0,2,0,1]=(0.187043042708)/(o+1.)+(-0.772272089659)  
         ref[0,2,1,0]=(-0.316098850787)/(o+1.)+(0.434161857202)  
         ref[0,2,1,1]=(-0.536124734534)/(o+1.)+(-0.36239012748)  
         ref[0,2,2,0]=(0.585045523113)/(o+1.)+(0.381823199352)  
         ref[0,2,2,1]=(0.422243751365)/(o+1.)+(-0.367492577032)  
         ref[0,3,0,0]=(0.91381158808)/(o+1.)+(0.479450386313)  
         ref[0,3,0,1]=(0.209840671177)/(o+1.)+(0.0575848626616)  
         ref[0,3,1,0]=(0.158639778589)/(o+1.)+(0.140952176353)  
         ref[0,3,1,1]=(-0.364808895601)/(o+1.)+(-0.112177665178)  
         ref[0,3,2,0]=(-0.198937574741)/(o+1.)+(0.0481176387404)  
         ref[0,3,2,1]=(1.05420599501)/(o+1.)+(0.289671467078)  
         ref[0,4,0,0]=(0.811701728881)/(o+1.)+(-0.642991198189)  
         ref[0,4,0,1]=(0.693754647803)/(o+1.)+(0.221925107611)  
         ref[0,4,1,0]=(1.05453609011)/(o+1.)+(0.113347069457)  
         ref[0,4,1,1]=(0.117274271978)/(o+1.)+(0.49222729561)  
         ref[0,4,2,0]=(0.496795563283)/(o+1.)+(0.585368210556)  
         ref[0,4,2,1]=(0.83272690983)/(o+1.)+(0.211636714741)  
         ref[1,0,0,0]=(1.46878592273)/(o+1.)+(0.75908745063)  
         ref[1,0,0,1]=(-0.250785630529)/(o+1.)+(-0.424433789171)  
         ref[1,0,1,0]=(0.161786720779)/(o+1.)+(-0.134897277336)  
         ref[1,0,1,1]=(1.12719401256)/(o+1.)+(0.192602526813)  
         ref[1,0,2,0]=(0.7197235394)/(o+1.)+(0.486314697239)  
         ref[1,0,2,1]=(1.02804458464)/(o+1.)+(0.119059003471)  
         ref[1,1,0,0]=(0.0361584520541)/(o+1.)+(-0.0826639100507)  
         ref[1,1,0,1]=(-1.06091812324)/(o+1.)+(-0.162610363489)  
         ref[1,1,1,0]=(1.13776585837)/(o+1.)+(-0.735871424501)  
         ref[1,1,1,1]=(1.4740891177)/(o+1.)+(0.0576052217538)  
         ref[1,1,2,0]=(0.280616623834)/(o+1.)+(0.113079194752)  
         ref[1,1,2,1]=(-0.491890699653)/(o+1.)+(-0.241003614595)  
         ref[1,2,0,0]=(-0.0342838844534)/(o+1.)+(0.626624924695)  
         ref[1,2,0,1]=(0.770911868081)/(o+1.)+(0.00414873106652)  
         ref[1,2,1,0]=(0.30749084682)/(o+1.)+(0.784636934951)  
         ref[1,2,1,1]=(1.8638645006)/(o+1.)+(-0.272147962595)  
         ref[1,2,2,0]=(-1.46841213372)/(o+1.)+(-0.803263888803)  
         ref[1,2,2,1]=(-0.302454198157)/(o+1.)+(-0.00569403150815)  
         ref[1,3,0,0]=(0.493917522063)/(o+1.)+(0.208812259657)  
         ref[1,3,0,1]=(0.476274657976)/(o+1.)+(-0.258921449039)  
         ref[1,3,1,0]=(-0.736248174893)/(o+1.)+(0.618341898819)  
         ref[1,3,1,1]=(-0.697129670691)/(o+1.)+(0.288345257677)  
         ref[1,3,2,0]=(0.303153912627)/(o+1.)+(0.615222564816)  
         ref[1,3,2,1]=(-0.58122630211)/(o+1.)+(-0.218262329715)  
         ref[1,4,0,0]=(-1.15442442968)/(o+1.)+(-0.689892876091)  
         ref[1,4,0,1]=(0.0585826445649)/(o+1.)+(-0.0282292800982)  
         ref[1,4,1,0]=(0.3252337262)/(o+1.)+(-0.352424421214)  
         ref[1,4,1,1]=(0.512701244088)/(o+1.)+(-0.309173686843)  
         ref[1,4,2,0]=(1.5506882457)/(o+1.)+(0.0138555570174)  
         ref[1,4,2,1]=(-0.940773035102)/(o+1.)+(0.436233569081)  
         ref[2,0,0,0]=(1.54247754874)/(o+1.)+(-0.656180700088)  
         ref[2,0,0,1]=(0.988306961756)/(o+1.)+(0.507179836684)  
         ref[2,0,1,0]=(-0.416628824296)/(o+1.)+(0.866814093672)  
         ref[2,0,1,1]=(1.41006066195)/(o+1.)+(0.22690716721)  
         ref[2,0,2,0]=(0.353011705537)/(o+1.)+(0.803444304396)  
         ref[2,0,2,1]=(0.687642260874)/(o+1.)+(0.474521396981)  
         ref[2,1,0,0]=(-0.218198987148)/(o+1.)+(-0.353413688668)  
         ref[2,1,0,1]=(-0.635306433562)/(o+1.)+(0.0625693849126)  
         ref[2,1,1,0]=(0.53416867099)/(o+1.)+(-0.559025565412)  
         ref[2,1,1,1]=(0.00543686305333)/(o+1.)+(0.317390512297)  
         ref[2,1,2,0]=(0.916573120847)/(o+1.)+(0.280353530048)  
         ref[2,1,2,1]=(-0.0537588152546)/(o+1.)+(0.335787215373)  
         ref[2,2,0,0]=(1.0055660817)/(o+1.)+(-0.630716663133)  
         ref[2,2,0,1]=(0.420474306577)/(o+1.)+(-0.813478644671)  
         ref[2,2,1,0]=(-0.723008657238)/(o+1.)+(-0.795204112308)  
         ref[2,2,1,1]=(0.306188174034)/(o+1.)+(0.816265485704)  
         ref[2,2,2,0]=(0.806158569368)/(o+1.)+(0.383596716475)  
         ref[2,2,2,1]=(1.6353377865)/(o+1.)+(-0.066900630957)  
         ref[2,3,0,0]=(-1.24813850815)/(o+1.)+(0.809160098565)  
         ref[2,3,0,1]=(-1.56942041127)/(o+1.)+(-0.639504741178)  
         ref[2,3,1,0]=(-1.49605878837)/(o+1.)+(0.388525601366)  
         ref[2,3,1,1]=(-0.448403645878)/(o+1.)+(-0.408232536048)  
         ref[2,3,2,0]=(-1.13568794342)/(o+1.)+(0.129824123646)  
         ref[2,3,2,1]=(0.596733666259)/(o+1.)+(-0.241137408214)  
         ref[2,4,0,0]=(0.0191094707617)/(o+1.)+(0.0934535698276)  
         ref[2,4,0,1]=(0.185204097773)/(o+1.)+(-0.264119373935)  
         ref[2,4,1,0]=(1.55855563639)/(o+1.)+(0.199877653305)  
         ref[2,4,1,1]=(0.11469142184)/(o+1.)+(0.406456568942)  
         ref[2,4,2,0]=(-0.954321542363)/(o+1.)+(0.696631483259)  
         ref[2,4,2,1]=(-0.810227566168)/(o+1.)+(0.213860364695)  
         ref[3,0,0,0]=(0.453436736881)/(o+1.)+(0.0146086155385)  
         ref[3,0,0,1]=(-0.210824760654)/(o+1.)+(-0.101617736047)  
         ref[3,0,1,0]=(0.414458928012)/(o+1.)+(0.448800793157)  
         ref[3,0,1,1]=(0.346129385596)/(o+1.)+(-0.551877756793)  
         ref[3,0,2,0]=(1.85496275992)/(o+1.)+(-0.435313376805)  
         ref[3,0,2,1]=(-0.110500317363)/(o+1.)+(-0.328782414455)  
         ref[3,1,0,0]=(0.0399449935267)/(o+1.)+(-0.191146813438)  
         ref[3,1,0,1]=(0.133080949177)/(o+1.)+(-0.270731851364)  
         ref[3,1,1,0]=(0.139648356416)/(o+1.)+(0.575552603289)  
         ref[3,1,1,1]=(-1.45813597924)/(o+1.)+(-0.592627725804)  
         ref[3,1,2,0]=(-0.773854684679)/(o+1.)+(0.0423853650452)  
         ref[3,1,2,1]=(1.2726274277)/(o+1.)+(0.683659642354)  
         ref[3,2,0,0]=(0.555324507349)/(o+1.)+(0.116810003463)  
         ref[3,2,0,1]=(-0.310977730161)/(o+1.)+(-0.437405129422)  
         ref[3,2,1,0]=(1.05800939782)/(o+1.)+(0.0540888119933)  
         ref[3,2,1,1]=(0.386222714751)/(o+1.)+(-0.739917239322)  
         ref[3,2,2,0]=(-0.95705464593)/(o+1.)+(0.396944907549)  
         ref[3,2,2,1]=(-0.491612682819)/(o+1.)+(-0.165439694033)  
         ref[3,3,0,0]=(0.666972772584)/(o+1.)+(0.47603626707)  
         ref[3,3,0,1]=(0.268506355312)/(o+1.)+(0.0336067603842)  
         ref[3,3,1,0]=(-0.57724956178)/(o+1.)+(-0.409544073355)  
         ref[3,3,1,1]=(-0.518808765862)/(o+1.)+(0.430852940555)  
         ref[3,3,2,0]=(-1.95248352029)/(o+1.)+(0.734377777986)  
         ref[3,3,2,1]=(-1.14565232021)/(o+1.)+(-0.67082922589)  
         ref[3,4,0,0]=(-1.13455573259)/(o+1.)+(-0.1944138584)  
         ref[3,4,0,1]=(-0.508914286468)/(o+1.)+(0.574401761354)  
         ref[3,4,1,0]=(-0.319104038837)/(o+1.)+(-0.452063738718)  
         ref[3,4,1,1]=(-0.100356733327)/(o+1.)+(-0.11327726566)  
         ref[3,4,2,0]=(-0.39970881352)/(o+1.)+(-0.235116760127)  
         ref[3,4,2,1]=(-0.339631070901)/(o+1.)+(-0.0957826012957)  
       else:  
         s[0,0,0,0]=(0.0794776522341)*x[0]+(1.69294456255)*x[1]+(0.824115844979)*x[2]  
         s[0,0,0,1]=(0.0720523378919)*x[0]+(-1.39724154561)*x[1]+(-0.010988810956)*x[2]  
         s[0,0,1,0]=(0.985556321125)*x[0]+(1.12133844031)*x[1]+(-0.262491219522)*x[2]  
         s[0,0,1,1]=(0.789643681767)*x[0]+(1.02860624013)*x[1]+(-0.450770685703)*x[2]  
         s[0,0,2,0]=(-0.850427026537)*x[0]+(-0.393993518297)*x[1]+(0.12816296306)*x[2]  
         s[0,0,2,1]=(-0.47508130541)*x[0]+(-0.393857510976)*x[1]+(0.66003641476)*x[2]  
         s[0,1,0,0]=(-1.87725252884)*x[0]+(-0.668075530728)*x[1]+(0.938485679482)*x[2]  
         s[0,1,0,1]=(0.820537136967)*x[0]+(-0.453620529157)*x[1]+(0.811944595883)*x[2]  
         s[0,1,1,0]=(0.914995161971)*x[0]+(-0.196153821444)*x[1]+(0.938555859255)*x[2]  
         s[0,1,1,1]=(-0.866633718493)*x[0]+(-0.534596859321)*x[1]+(0.77514383239)*x[2]  
         s[0,1,2,0]=(0.183094085342)*x[0]+(0.727499336912)*x[1]+(0.170986687969)*x[2]  
         s[0,1,2,1]=(-1.36220673904)*x[0]+(0.0822122492483)*x[1]+(0.124227107716)*x[2]  
         s[0,2,0,0]=(1.55269479425)*x[0]+(-0.14574857122)*x[1]+(1.24120289667)*x[2]  
         s[0,2,0,1]=(-0.464038186768)*x[0]+(0.00554383028356)*x[1]+(-1.14838250985)*x[2]  
         s[0,2,1,0]=(0.904608031363)*x[0]+(-0.313004420619)*x[1]+(-0.10529298073)*x[2]  
         s[0,2,1,1]=(0.156623578469)*x[0]+(0.55127494399)*x[1]+(-0.385447926692)*x[2]  
         s[0,2,2,0]=(-0.766804018933)*x[0]+(0.18519619356)*x[1]+(1.00915540081)*x[2]  
         s[0,2,2,1]=(0.00231157548456)*x[0]+(0.338768642838)*x[1]+(-0.684228602438)*x[2]  
         s[0,3,0,0]=(-0.834810486599)*x[0]+(-0.096360306458)*x[1]+(1.28924889761)*x[2]  
         s[0,3,0,1]=(-0.658443843543)*x[0]+(0.889474267886)*x[1]+(0.566763124725)*x[2]  
         s[0,3,1,0]=(-0.109777093963)*x[0]+(0.228053887631)*x[1]+(1.22952539906)*x[2]  
         s[0,3,1,1]=(-0.749479260801)*x[0]+(-1.01102432725)*x[1]+(-0.196861989291)*x[2]  
         s[0,3,2,0]=(0.650389523509)*x[0]+(0.151701374527)*x[1]+(0.506246388483)*x[2]  
         s[0,3,2,1]=(-0.648510958338)*x[0]+(-0.263590202304)*x[1]+(-1.35992044414)*x[2]  
         s[0,4,0,0]=(0.196976454523)*x[0]+(-0.193947226599)*x[1]+(1.67641586045)*x[2]  
         s[0,4,0,1]=(-0.455868626908)*x[0]+(0.506302321882)*x[1]+(1.1666778393)*x[2]  
         s[0,4,1,0]=(-0.788545609857)*x[0]+(-0.487332926053)*x[1]+(-0.0645141715605)*x[2]  
         s[0,4,1,1]=(-0.320424709093)*x[0]+(-0.683301403769)*x[1]+(-0.222245108268)*x[2]  
         s[0,4,2,0]=(0.876149348517)*x[0]+(0.12449602802)*x[1]+(-0.220531205966)*x[2]  
         s[0,4,2,1]=(-0.2764172159)*x[0]+(-0.894571003479)*x[1]+(-0.595830070177)*x[2]  
         s[1,0,0,0]=(-0.79676665323)*x[0]+(-1.25965739347)*x[1]+(-0.319474113915)*x[2]  
         s[1,0,0,1]=(1.601348448)*x[0]+(0.41027863439)*x[1]+(-0.346758807915)*x[2]  
         s[1,0,1,0]=(0.181292913253)*x[0]+(1.10494312205)*x[1]+(0.196973772813)*x[2]  
         s[1,0,1,1]=(0.562861818795)*x[0]+(-0.997990211102)*x[1]+(0.0332706615838)*x[2]  
         s[1,0,2,0]=(-0.989984164479)*x[0]+(-0.886186583204)*x[1]+(-0.228620900973)*x[2]  
         s[1,0,2,1]=(0.841365917044)*x[0]+(-0.0519066039156)*x[1]+(-0.81126199301)*x[2]  
         s[1,1,0,0]=(-0.613125126303)*x[0]+(0.482770874125)*x[1]+(0.038374960382)*x[2]  
         s[1,1,0,1]=(-0.203719663632)*x[0]+(-0.281873286682)*x[1]+(-0.0303453795347)*x[2]  
         s[1,1,1,0]=(1.11287699536)*x[0]+(-1.04759296757)*x[1]+(1.64257695374)*x[2]  
         s[1,1,1,1]=(-0.0861307607908)*x[0]+(0.261314888791)*x[1]+(-0.204955973137)*x[2]  
         s[1,1,2,0]=(0.821662110998)*x[0]+(-1.05649310988)*x[1]+(0.609822823353)*x[2]  
         s[1,1,2,1]=(-0.730526005063)*x[0]+(1.62018363097)*x[1]+(0.99111776492)*x[2]  
         s[1,2,0,0]=(-1.25039777751)*x[0]+(0.811070034681)*x[1]+(1.32505446058)*x[2]  
         s[1,2,0,1]=(0.753110041895)*x[0]+(0.186756235207)*x[1]+(-1.30430176967)*x[2]  
         s[1,2,1,0]=(0.146182105242)*x[0]+(-0.863831927779)*x[1]+(-1.1030247274)*x[2]  
         s[1,2,1,1]=(0.674634709918)*x[0]+(-0.560866548824)*x[1]+(0.576408322189)*x[2]  
         s[1,2,2,0]=(-0.573489753302)*x[0]+(1.57147013427)*x[1]+(0.711691292064)*x[2]  
         s[1,2,2,1]=(0.549483527739)*x[0]+(-1.14179814973)*x[1]+(1.60524619335)*x[2]  
         s[1,3,0,0]=(0.197453494754)*x[0]+(-0.456559966113)*x[1]+(-1.21423667747)*x[2]  
         s[1,3,0,1]=(-1.76312274691)*x[0]+(-1.04778192886)*x[1]+(-0.185488490674)*x[2]  
         s[1,3,1,0]=(0.0162460011376)*x[0]+(1.16407944993)*x[1]+(1.16424268292)*x[2]  
         s[1,3,1,1]=(-0.513913288204)*x[0]+(-1.46536589962)*x[1]+(-0.906205233261)*x[2]  
         s[1,3,2,0]=(-0.0157400074256)*x[0]+(-0.293812243081)*x[1]+(0.815280978304)*x[2]  
         s[1,3,2,1]=(1.57630585875)*x[0]+(0.290739280065)*x[1]+(-0.771398356417)*x[2]  
         s[1,4,0,0]=(-0.323882779703)*x[0]+(-0.763929395312)*x[1]+(0.738403272406)*x[2]  
         s[1,4,0,1]=(-0.476278532043)*x[0]+(-0.11039317349)*x[1]+(0.346684885005)*x[2]  
         s[1,4,1,0]=(-1.36304063164)*x[0]+(-0.660619165296)*x[1]+(-0.903566907206)*x[2]  
         s[1,4,1,1]=(0.0863780283437)*x[0]+(0.466792514558)*x[1]+(0.448776109878)*x[2]  
         s[1,4,2,0]=(0.74478619068)*x[0]+(0.446314847678)*x[1]+(-0.0481741032015)*x[2]  
         s[1,4,2,1]=(0.746506715398)*x[0]+(-0.432201202785)*x[1]+(0.203440105689)*x[2]  
         s[2,0,0,0]=(-0.785805880678)*x[0]+(-0.862407720473)*x[1]+(-1.21640925829)*x[2]  
         s[2,0,0,1]=(0.647190817984)*x[0]+(0.519851314653)*x[1]+(0.390946186931)*x[2]  
         s[2,0,1,0]=(-1.24831725337)*x[0]+(1.59413938467)*x[1]+(-1.33358250136)*x[2]  
         s[2,0,1,1]=(-0.152213072763)*x[0]+(-1.09357954369)*x[1]+(-1.25586196425)*x[2]  
         s[2,0,2,0]=(-0.0314861108304)*x[0]+(0.293907529511)*x[1]+(-0.21039874768)*x[2]  
         s[2,0,2,1]=(0.0467194832302)*x[0]+(0.527286460462)*x[1]+(-0.415618293894)*x[2]  
         s[2,1,0,0]=(-0.189575051656)*x[0]+(-0.844885847783)*x[1]+(-0.334235875002)*x[2]  
         s[2,1,0,1]=(-0.00822711174783)*x[0]+(-1.5897272285)*x[1]+(1.50002681163)*x[2]  
         s[2,1,1,0]=(-0.841981498104)*x[0]+(-1.10376539971)*x[1]+(0.311385102139)*x[2]  
         s[2,1,1,1]=(1.12897934543)*x[0]+(-0.966261308872)*x[1]+(-1.16359871767)*x[2]  
         s[2,1,2,0]=(-0.957189463062)*x[0]+(0.0471569985184)*x[1]+(0.12392515517)*x[2]  
         s[2,1,2,1]=(-0.752369087888)*x[0]+(1.18176351896)*x[1]+(0.334788137458)*x[2]  
         s[2,2,0,0]=(1.22014205343)*x[0]+(0.784413576281)*x[1]+(0.0962245348039)*x[2]  
         s[2,2,0,1]=(-0.407023035962)*x[0]+(1.11597107325)*x[1]+(0.458612291763)*x[2]  
         s[2,2,1,0]=(-0.0496175828387)*x[0]+(-0.0536216340718)*x[1]+(0.771683970464)*x[2]  
         s[2,2,1,1]=(-0.356958793645)*x[0]+(-1.38580705404)*x[1]+(-0.670167616875)*x[2]  
         s[2,2,2,0]=(0.0804001816041)*x[0]+(-1.16114869406)*x[1]+(0.475472363874)*x[2]  
         s[2,2,2,1]=(0.98238551642)*x[0]+(-1.12578358118)*x[1]+(-0.00970359156434)*x[2]  
         s[2,3,0,0]=(1.0110556058)*x[0]+(-0.488112488916)*x[1]+(0.243005554591)*x[2]  
         s[2,3,0,1]=(-0.16668051279)*x[0]+(0.178067528024)*x[1]+(0.969038052731)*x[2]  
         s[2,3,1,0]=(-0.00345650882131)*x[0]+(-0.941671547756)*x[1]+(-0.49908897105)*x[2]  
         s[2,3,1,1]=(0.716683430797)*x[0]+(-0.585708024289)*x[1]+(-1.19073441986)*x[2]  
         s[2,3,2,0]=(0.400515369791)*x[0]+(-0.454556618814)*x[1]+(0.0782324352019)*x[2]  
         s[2,3,2,1]=(-0.164628093414)*x[0]+(-1.26464027792)*x[1]+(0.179511210919)*x[2]  
         s[2,4,0,0]=(1.33277550072)*x[0]+(1.18570575409)*x[1]+(0.381346013717)*x[2]  
         s[2,4,0,1]=(0.588290284687)*x[0]+(-1.08302445047)*x[1]+(0.166898904485)*x[2]  
         s[2,4,1,0]=(0.131178111015)*x[0]+(-0.749855470189)*x[1]+(-0.1247474719)*x[2]  
         s[2,4,1,1]=(-0.97245336122)*x[0]+(0.873932906896)*x[1]+(0.120264062027)*x[2]  
         s[2,4,2,0]=(-0.722531128456)*x[0]+(0.19636289816)*x[1]+(-0.907945347107)*x[2]  
         s[2,4,2,1]=(-0.711111750197)*x[0]+(0.31947094036)*x[1]+(-1.79333697163)*x[2]  
         s[3,0,0,0]=(-0.184519023765)*x[0]+(0.680221159423)*x[1]+(-0.0244123658903)*x[2]  
         s[3,0,0,1]=(-1.14573637546)*x[0]+(0.0616977700293)*x[1]+(-0.654808111844)*x[2]  
         s[3,0,1,0]=(-1.09297543018)*x[0]+(-1.04184353717)*x[1]+(0.384120100538)*x[2]  
         s[3,0,1,1]=(0.105247846819)*x[0]+(-1.31600150124)*x[1]+(1.43496073616)*x[2]  
         s[3,0,2,0]=(0.881148598911)*x[0]+(-0.478723216871)*x[1]+(-0.0746344543132)*x[2]  
         s[3,0,2,1]=(-1.20828681587)*x[0]+(-1.65808839437)*x[1]+(-0.636678098535)*x[2]  
         s[3,1,0,0]=(-0.213394309668)*x[0]+(-0.240354748844)*x[1]+(0.117282970374)*x[2]  
         s[3,1,0,1]=(1.37462845901)*x[0]+(-0.41583894581)*x[1]+(-0.625626047701)*x[2]  
         s[3,1,1,0]=(1.83991491983)*x[0]+(1.2778674571)*x[1]+(1.35465906139)*x[2]  
         s[3,1,1,1]=(1.58168546715)*x[0]+(0.829809996131)*x[1]+(0.681232260732)*x[2]  
         s[3,1,2,0]=(-0.0212907664121)*x[0]+(1.00109823691)*x[1]+(-1.30845432825)*x[2]  
         s[3,1,2,1]=(0.169920360674)*x[0]+(-0.864995850094)*x[1]+(0.302979947072)*x[2]  
         s[3,2,0,0]=(-0.154084636739)*x[0]+(0.319647474298)*x[1]+(-1.23506947259)*x[2]  
         s[3,2,0,1]=(-0.199216213818)*x[0]+(1.28921202953)*x[1]+(1.65805122541)*x[2]  
         s[3,2,1,0]=(-1.86774194364)*x[0]+(-0.101723263166)*x[1]+(-0.526029332636)*x[2]  
         s[3,2,1,1]=(-0.177960964857)*x[0]+(-0.899073564225)*x[1]+(0.551378002191)*x[2]  
         s[3,2,2,0]=(0.18491319197)*x[0]+(-0.286906366286)*x[1]+(0.583859098776)*x[2]  
         s[3,2,2,1]=(0.38623837272)*x[0]+(-0.653272502002)*x[1]+(-1.46718517275)*x[2]  
         s[3,3,0,0]=(0.0494572779834)*x[0]+(-0.0566099666381)*x[1]+(-0.113874384717)*x[2]  
         s[3,3,0,1]=(0.0241152098269)*x[0]+(-0.317061594612)*x[1]+(1.23769551101)*x[2]  
         s[3,3,1,0]=(-0.107294616786)*x[0]+(-0.651410283508)*x[1]+(0.833104181804)*x[2]  
         s[3,3,1,1]=(0.16676828757)*x[0]+(-0.670496617303)*x[1]+(1.15686719798)*x[2]  
         s[3,3,2,0]=(0.159950143242)*x[0]+(0.0436823700228)*x[1]+(-0.645027680285)*x[2]  
         s[3,3,2,1]=(-1.2697347822)*x[0]+(1.22938250997)*x[1]+(0.208587928792)*x[2]  
         s[3,4,0,0]=(0.575105413412)*x[0]+(-1.44998456404)*x[1]+(-0.516125694177)*x[2]  
         s[3,4,0,1]=(0.0387618783003)*x[0]+(0.859152861676)*x[1]+(1.29847202073)*x[2]  
         s[3,4,1,0]=(-0.842510438531)*x[0]+(0.191878858518)*x[1]+(-0.73453059399)*x[2]  
         s[3,4,1,1]=(1.41435810392)*x[0]+(-0.855734345577)*x[1]+(-0.425917153945)*x[2]  
         s[3,4,2,0]=(-0.58228358663)*x[0]+(0.00936548588525)*x[1]+(-1.38536320116)*x[2]  
         s[3,4,2,1]=(0.0419678913201)*x[0]+(1.02999559903)*x[1]+(-0.464745184871)*x[2]  
         ref[0,0,0,0]=(1.30172410662)/(o+1.)+(0.647406976573)  
         ref[0,0,0,1]=(-1.09442521373)/(o+1.)+(-0.120876402476)  
         ref[0,0,1,0]=(2.01757642043)/(o+1.)+(-0.0865864392547)  
         ref[0,0,1,1]=(1.80034002198)/(o+1.)+(-0.216430392892)  
         ref[0,0,2,0]=(1.13142112916)/(o+1.)+(-1.12383935547)  
         ref[0,0,2,1]=(-0.905515986966)/(o+1.)+(0.34830679267)  
         ref[0,1,0,0]=(-0.210441134504)/(o+1.)+(-0.698200622791)  
         ref[0,1,0,1]=(0.360807961621)/(o+1.)+(0.409026621036)  
         ref[0,1,1,0]=(1.5147969883)/(o+1.)+(0.0713001057429)  
         ref[0,1,1,1]=(0.396123567843)/(o+1.)+(-0.511105156634)  
         ref[0,1,2,0]=(0.184468760768)/(o+1.)+(0.448555674728)  
         ref[0,1,2,1]=(-0.133892978353)/(o+1.)+(-0.510937201862)  
         ref[0,2,0,0]=(1.66137009462)/(o+1.)+(0.493389512541)  
         ref[0,2,0,1]=(0.358452769174)/(o+1.)+(-0.982664817753)  
         ref[0,2,1,0]=(0.966434135345)/(o+1.)+(-0.240061752665)  
         ref[0,2,1,1]=(-0.401753883503)/(o+1.)+(0.362102239635)  
         ref[0,2,2,0]=(-0.0153619747046)/(o+1.)+(0.221454775071)  
         ref[0,2,2,1]=(-0.104138117282)/(o+1.)+(-0.119505133417)  
         ref[0,3,0,0]=(-0.966204569194)/(o+1.)+(0.662141336872)  
         ref[0,3,0,1]=(0.587661220327)/(o+1.)+(0.10506616437)  
         ref[0,3,1,0]=(2.02288199931)/(o+1.)+(-0.337539903289)  
         ref[0,3,1,1]=(-1.78842825396)/(o+1.)+(-0.0844686616883)  
         ref[0,3,2,0]=(0.927282266945)/(o+1.)+(0.190527509786)  
         ref[0,3,2,1]=(-0.679518039292)/(o+1.)+(-0.796251782745)  
         ref[0,4,0,0]=(0.555388124049)/(o+1.)+(0.562028482163)  
         ref[0,4,0,1]=(0.0870397234082)/(o+1.)+(0.565035905435)  
         ref[0,4,1,0]=(-1.1463502212)/(o+1.)+(-0.0970212431374)  
         ref[0,4,1,1]=(0.233233715042)/(o+1.)+(-0.729602468086)  
         ref[0,4,2,0]=(-0.782889963002)/(o+1.)+(0.781502066786)  
         ref[0,4,2,1]=(0.763433249649)/(o+1.)+(-1.2651257696)  
         ref[1,0,0,0]=(-1.00441831898)/(o+1.)+(-0.685739920821)  
         ref[1,0,0,1]=(0.751247546824)/(o+1.)+(0.456810363824)  
         ref[1,0,1,0]=(2.22764882334)/(o+1.)+(-0.372219507613)  
         ref[1,0,1,1]=(-1.19623631804)/(o+1.)+(0.39718929366)  
         ref[1,0,2,0]=(-1.60343741738)/(o+1.)+(-0.250677115636)  
         ref[1,0,2,1]=(-1.25680789752)/(o+1.)+(0.61750260882)  
         ref[1,1,0,0]=(-1.45519189991)/(o+1.)+(0.681606304054)  
         ref[1,1,0,1]=(0.840628495308)/(o+1.)+(-0.678283412578)  
         ref[1,1,1,0]=(1.41826768667)/(o+1.)+(0.144796647431)  
         ref[1,1,1,1]=(-0.933723251106)/(o+1.)+(0.451975702985)  
         ref[1,1,2,0]=(-0.408324994487)/(o+1.)+(0.39165840948)  
         ref[1,1,2,1]=(1.23290517672)/(o+1.)+(0.323935107053)  
         ref[1,2,0,0]=(0.825483086179)/(o+1.)+(0.0301218157877)  
         ref[1,2,0,1]=(-0.0793934768662)/(o+1.)+(-0.142521007854)  
         ref[1,2,1,0]=(-0.0709650957035)/(o+1.)+(-0.874854727116)  
         ref[1,2,1,1]=(1.10714952407)/(o+1.)+(-0.208486520392)  
         ref[1,2,2,0]=(0.99013461187)/(o+1.)+(0.359768530582)  
         ref[1,2,2,1]=(0.0356627876162)/(o+1.)+(0.488634391872)  
         ref[1,3,0,0]=(-0.474442326803)/(o+1.)+(-0.499450411015)  
         ref[1,3,0,1]=(-0.673232992552)/(o+1.)+(-1.16158008694)  
         ref[1,3,1,0]=(0.411652221393)/(o+1.)+(0.966457956295)  
         ref[1,3,1,1]=(-1.76698398732)/(o+1.)+(-0.559250216883)  
         ref[1,3,2,0]=(1.9874048718)/(o+1.)+(-0.740838072)  
         ref[1,3,2,1]=(0.661784629796)/(o+1.)+(0.216931076303)  
         ref[1,4,0,0]=(-0.513029515019)/(o+1.)+(0.0818103062045)  
         ref[1,4,0,1]=(0.282755142694)/(o+1.)+(-0.261370981611)  
         ref[1,4,1,0]=(-1.96973437805)/(o+1.)+(-0.478746163042)  
         ref[1,4,1,1]=(0.908774952181)/(o+1.)+(0.0465858502998)  
         ref[1,4,2,0]=(1.3422757017)/(o+1.)+(-0.0996743832723)  
         ref[1,4,2,1]=(1.21609351443)/(o+1.)+(-0.349173948065)  
         ref[2,0,0,0]=(-1.01744592956)/(o+1.)+(-0.923588464944)  
         ref[2,0,0,1]=(1.10931736222)/(o+1.)+(0.224335478673)  
         ref[2,0,1,0]=(-0.416479828321)/(o+1.)+(-0.285640270869)  
         ref[2,0,1,1]=(-1.5671174369)/(o+1.)+(-0.467268571897)  
         ref[2,0,2,0]=(-0.274214960025)/(o+1.)+(0.163118815513)  
         ref[2,0,2,1]=(0.000680528469817)/(o+1.)+(0.0788535606642)  
         ref[2,1,0,0]=(-0.844192475139)/(o+1.)+(-0.262252149651)  
         ref[2,1,0,1]=(0.69399848864)/(o+1.)+(-0.395963008628)  
         ref[2,1,1,0]=(-1.37742489692)/(o+1.)+(-0.128468449379)  
         ref[2,1,1,1]=(0.282095133276)/(o+1.)+(-0.641487907195)  
         ref[2,1,2,0]=(-1.4727375549)/(o+1.)+(0.343315122764)  
         ref[2,1,2,1]=(0.67637649169)/(o+1.)+(0.0439030384195)  
         ref[2,2,0,0]=(1.58598306034)/(o+1.)+(0.257398552088)  
         ref[2,2,0,1]=(-0.187654980952)/(o+1.)+(0.677607655001)  
         ref[2,2,1,0]=(0.225457027395)/(o+1.)+(0.221493863079)  
         ref[2,2,1,1]=(-1.66885547416)/(o+1.)+(-0.372038995202)  
         ref[2,2,2,0]=(-1.42708510165)/(o+1.)+(0.410904476533)  
         ref[2,2,2,1]=(0.352696956576)/(o+1.)+(-0.252899306452)  
         ref[2,3,0,0]=(0.266365999523)/(o+1.)+(0.249791335977)  
         ref[2,3,0,1]=(0.926084735451)/(o+1.)+(0.0271701662571)  
         ref[2,3,1,0]=(-0.138787407751)/(o+1.)+(-0.652714809939)  
         ref[2,3,1,1]=(-0.834750293031)/(o+1.)+(-0.112504360161)  
         ref[2,3,2,0]=(-0.806210182586)/(o+1.)+(0.415200684382)  
         ref[2,3,2,1]=(0.577899253552)/(o+1.)+(-0.913828206984)  
         ref[2,4,0,0]=(1.38802720612)/(o+1.)+(0.755900031203)  
         ref[2,4,0,1]=(-1.33634216788)/(o+1.)+(0.504253453293)  
         ref[2,4,1,0]=(-1.13393506986)/(o+1.)+(0.195255119392)  
         ref[2,4,1,1]=(-0.384732222354)/(o+1.)+(0.203237915028)  
         ref[2,4,2,0]=(-1.18866097183)/(o+1.)+(-0.122726302784)  
         ref[2,4,2,1]=(-1.41914128138)/(o+1.)+(-0.382918250045)  
         ref[3,0,0,0]=(-1.3617379499)/(o+1.)+(0.916513859836)  
         ref[3,0,0,1]=(-0.577580679368)/(o+1.)+(-0.580633018955)  
         ref[3,0,1,0]=(-0.730926522369)/(o+1.)+(-0.50988617222)  
         ref[3,0,1,1]=(0.852352706539)/(o+1.)+(-0.314072812402)  
         ref[3,0,2,0]=(0.63914695576)/(o+1.)+(-0.155678014016)  
         ref[3,0,2,1]=(-2.31555597527)/(o+1.)+(-0.593748666755)  
         ref[3,1,0,0]=(-0.31308710102)/(o+1.)+(-0.011689493559)  
         ref[3,1,0,1]=(0.565049631081)/(o+1.)+(-0.115943082793)  
         ref[3,1,1,0]=(1.76264026827)/(o+1.)+(1.35490058502)  
         ref[3,1,1,1]=(1.34557111025)/(o+1.)+(0.873578306883)  
         ref[3,1,2,0]=(0.924587947935)/(o+1.)+(-0.626617402844)  
         ref[3,1,2,1]=(-0.679695689354)/(o+1.)+(0.143800073503)  
         ref[3,2,0,0]=(-0.408824291494)/(o+1.)+(-0.330341171766)  
         ref[3,2,0,1]=(1.02728720579)/(o+1.)+(0.860379917667)  
         ref[3,2,1,0]=(-1.99227170213)/(o+1.)+(-0.251611418656)  
         ref[3,2,1,1]=(-0.844161339595)/(o+1.)+(0.159252406352)  
         ref[3,2,2,0]=(1.52009831693)/(o+1.)+(-0.519116196235)  
         ref[3,2,2,1]=(0.323553722724)/(o+1.)+(-1.02888651238)  
         ref[3,3,0,0]=(-1.39647666034)/(o+1.)+(0.637724793483)  
         ref[3,3,0,1]=(0.960901654854)/(o+1.)+(-0.00807626431577)  
         ref[3,3,1,0]=(0.383998350003)/(o+1.)+(-0.154799534246)  
         ref[3,3,1,1]=(-0.851062083214)/(o+1.)+(0.752100475729)  
         ref[3,3,2,0]=(0.788418151505)/(o+1.)+(-0.614906659263)  
         ref[3,3,2,1]=(-0.1028922667)/(o+1.)+(0.135563961629)  
         ref[3,4,0,0]=(-0.540240088251)/(o+1.)+(-0.425382378277)  
         ref[3,4,0,1]=(0.236730341461)/(o+1.)+(0.979828209623)  
         ref[3,4,1,0]=(-0.9880898216)/(o+1.)+(-0.198536176202)  
         ref[3,4,1,1]=(1.06221574228)/(o+1.)+(-0.46475456894)  
         ref[3,4,2,0]=(-1.89471538439)/(o+1.)+(-0.0317829587581)  
         ref[3,4,2,1]=(-1.20699948566)/(o+1.)+(0.907108895566)  
       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_onFunction_fromSymbol_ReducedContinuousFunction_rank0(self):  
       """  
       tests integral of rank 0 Symbol on the Function  
   
       assumptions: ReducedContinuousFunction(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=1  
       dim=self.domain.getDim()  
       w_ref=Function(self.domain)  
       w=ReducedContinuousFunction(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=())  
       s=Data(0,(),w)  
       if dim==2:  
         s=(0.518496555195)*x[0]+(-1.7081835316)*x[1]  
         ref=(-0.587946015314)/(o+1.)+(-0.300870480545)  
       else:  
         s=(0.271043713323)*x[0]+(-1.57101724485)*x[1]+(-0.650553623396)*x[2]  
         ref=(-1.53180577827)/(o+1.)+(-0.209360688325)  
       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_onFunction_fromSymbol_ReducedContinuousFunction_rank1(self):  
       """  
       tests integral of rank 1 Symbol on the Function  
   
       assumptions: ReducedContinuousFunction(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=1  
       dim=self.domain.getDim()  
       w_ref=Function(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.228569380378)*x[0]+(0.808739010281)*x[1]  
         s[1]=(0.658420467565)*x[0]+(0.755018594164)*x[1]  
         ref[0]=(0.635537444802)/(o+1.)+(-0.0276839074492)  
         ref[1]=(0.431019006365)/(o+1.)+(0.491210027682)  
       else:  
         s[0]=(0.376210963228)*x[0]+(-1.32850082986)*x[1]+(0.536274160408)*x[2]  
         s[1]=(-0.771050457843)*x[0]+(-0.16954629666)*x[1]+(-0.579642261351)*x[2]  
         ref[0]=(-0.923045104748)/(o+1.)+(0.253514699262)  
         ref[1]=(0.10262370672)/(o+1.)+(-0.811431361287)  
       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_onFunction_fromSymbol_ReducedContinuousFunction_rank2(self):  
       """  
       tests integral of rank 2 Symbol on the Function  
   
       assumptions: ReducedContinuousFunction(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=1  
       dim=self.domain.getDim()  
       w_ref=Function(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.405824989536)*x[0]+(-1.36105849061)*x[1]  
         s[0,1]=(0.759504921251)*x[0]+(0.455515132277)*x[1]  
         s[0,2]=(-1.37469026888)*x[0]+(1.35869839203)*x[1]  
         s[0,3]=(-0.0438580623198)*x[0]+(0.34881551198)*x[1]  
         s[0,4]=(-0.0097850380672)*x[0]+(0.61199301527)*x[1]  
         s[1,0]=(-1.24950855151)*x[0]+(0.560604227152)*x[1]  
         s[1,1]=(0.897125563557)*x[0]+(-0.362799426566)*x[1]  
         s[1,2]=(-0.475265733496)*x[0]+(-0.906032283495)*x[1]  
         s[1,3]=(0.184749910708)*x[0]+(0.961807058286)*x[1]  
         s[1,4]=(-1.8130820241)*x[0]+(-0.0716801569248)*x[1]  
         s[2,0]=(0.401163196364)*x[0]+(-0.122822662117)*x[1]  
         s[2,1]=(-0.183141841931)*x[0]+(0.159646202564)*x[1]  
         s[2,2]=(0.494070531254)*x[0]+(0.0283267498222)*x[1]  
         s[2,3]=(-0.46326385119)*x[0]+(0.416856391877)*x[1]  
         s[2,4]=(0.669972632028)*x[0]+(1.01207764348)*x[1]  
         s[3,0]=(0.579509485187)*x[0]+(0.578664253542)*x[1]  
         s[3,1]=(1.1904242989)*x[0]+(-0.617672917808)*x[1]  
         s[3,2]=(1.01069090914)*x[0]+(-0.132861271259)*x[1]  
         s[3,3]=(-1.02014113453)*x[0]+(-1.10411835631)*x[1]  
         s[3,4]=(-0.178208550651)*x[0]+(-0.590646644191)*x[1]  
         ref[0,0]=(-1.81750521429)/(o+1.)+(0.0253108670731)  
         ref[0,1]=(1.13215741955)/(o+1.)+(0.0414313169864)  
         ref[0,2]=(-0.346109803394)/(o+1.)+(0.165058963273)  
         ref[0,3]=(1.16722378378)/(o+1.)+(-0.431133167061)  
         ref[0,4]=(1.39150379152)/(o+1.)+(-0.39464790716)  
         ref[1,0]=(-0.249819369301)/(o+1.)+(-0.219542477529)  
         ref[1,1]=(-0.253832127476)/(o+1.)+(0.394079132234)  
         ref[1,2]=(-0.514583575657)/(o+1.)+(-0.433357220667)  
         ref[1,3]=(1.16430206364)/(o+1.)+(-0.00887254732364)  
         ref[1,4]=(-1.40353822359)/(o+1.)+(-0.240611978717)  
         ref[2,0]=(0.0129701699159)/(o+1.)+(0.132685182166)  
         ref[2,1]=(-0.000259682696025)/(o+1.)+(-0.0116179783357)  
         ref[2,2]=(-0.736785877312)/(o+1.)+(0.629591579194)  
         ref[2,3]=(-0.319819594662)/(o+1.)+(0.136706067675)  
         ref[2,4]=(1.34735651213)/(o+1.)+(0.167346881689)  
         ref[3,0]=(1.02891998838)/(o+1.)+(0.0646268751734)  
         ref[3,1]=(0.0226437097602)/(o+1.)+(0.275053835665)  
         ref[3,2]=(-0.367947454589)/(o+1.)+(0.622888546236)  
         ref[3,3]=(-1.07416112237)/(o+1.)+(-0.525049184236)  
         ref[3,4]=(-0.423224656448)/(o+1.)+(-0.172815269197)  
       else:  
         s[0,0]=(0.391957465543)*x[0]+(-0.836212796005)*x[1]+(0.541170293661)*x[2]  
         s[0,1]=(-0.324966494738)*x[0]+(0.62718596172)*x[1]+(-0.00110999366491)*x[2]  
         s[0,2]=(0.377719216476)*x[0]+(1.20630293683)*x[1]+(-0.936497207115)*x[2]  
         s[0,3]=(-1.52853135673)*x[0]+(-0.634683048191)*x[1]+(-0.533312108123)*x[2]  
         s[0,4]=(-0.659359670617)*x[0]+(-1.23995360412)*x[1]+(0.669989279254)*x[2]  
         s[1,0]=(-0.45120395504)*x[0]+(1.25119902426)*x[1]+(0.11139465291)*x[2]  
         s[1,1]=(0.431699115955)*x[0]+(1.165662618)*x[1]+(-1.12543997002)*x[2]  
         s[1,2]=(0.16640215316)*x[0]+(-1.81838137531)*x[1]+(-0.111705546449)*x[2]  
         s[1,3]=(-1.56135929502)*x[0]+(0.425946749357)*x[1]+(0.255013889109)*x[2]  
         s[1,4]=(0.320981318781)*x[0]+(-0.536492696361)*x[1]+(1.21768285382)*x[2]  
         s[2,0]=(-0.600249234632)*x[0]+(-0.497626140165)*x[1]+(-0.0606420495108)*x[2]  
         s[2,1]=(-0.144412727094)*x[0]+(-1.09139116844)*x[1]+(-0.39344520166)*x[2]  
         s[2,2]=(-0.433006957898)*x[0]+(-0.287282800253)*x[1]+(8.69987670264e-05)*x[2]  
         s[2,3]=(0.805491532167)*x[0]+(-1.17746983966)*x[1]+(0.720861745039)*x[2]  
         s[2,4]=(-0.735630820744)*x[0]+(-1.01122803474)*x[1]+(1.72681276559)*x[2]  
         s[3,0]=(-0.739861204924)*x[0]+(0.739077496919)*x[1]+(-0.0950784436747)*x[2]  
         s[3,1]=(0.428369405071)*x[0]+(-0.0613035842349)*x[1]+(1.22804321951)*x[2]  
         s[3,2]=(0.617885252444)*x[0]+(-1.63428007618)*x[1]+(-0.543704110813)*x[2]  
         s[3,3]=(-1.52397266949)*x[0]+(-1.33821038473)*x[1]+(0.578214428096)*x[2]  
         s[3,4]=(-0.904835367377)*x[0]+(0.156039380736)*x[1]+(-0.833632978592)*x[2]  
         ref[0,0]=(-0.865179337718)/(o+1.)+(0.481047150458)  
         ref[0,1]=(-0.427981609749)/(o+1.)+(0.364545541533)  
         ref[0,2]=(0.738756225478)/(o+1.)+(-0.0456156396413)  
         ref[0,3]=(-2.19753999815)/(o+1.)+(-0.249493257444)  
         ref[0,4]=(-1.44493155356)/(o+1.)+(0.107803779038)  
         ref[1,0]=(1.72841073711)/(o+1.)+(-0.408510507493)  
         ref[1,1]=(0.688403407203)/(o+1.)+(-0.108240821633)  
         ref[1,2]=(-0.0562832360974)/(o+1.)+(-0.853700766251)  
         ref[1,3]=(-0.866037983384)/(o+1.)+(-0.00718033658349)  
         ref[1,4]=(1.27849436197)/(o+1.)+(-0.138161442865)  
         ref[2,0]=(-0.450814686687)/(o+1.)+(-0.353851368811)  
         ref[2,1]=(-0.608210959793)/(o+1.)+(-0.510519068702)  
         ref[2,2]=(-1.55008808776)/(o+1.)+(0.414942664188)  
         ref[2,3]=(0.242744047944)/(o+1.)+(0.0530696948023)  
         ref[2,4]=(-0.793195276992)/(o+1.)+(0.386574593552)  
         ref[3,0]=(-0.33646344984)/(o+1.)+(0.12030064908)  
         ref[3,1]=(1.37599194013)/(o+1.)+(0.109558550106)  
         ref[3,2]=(0.0175612882637)/(o+1.)+(-0.788830111409)  
         ref[3,3]=(-0.747828767237)/(o+1.)+(-0.768069929445)  
         ref[3,4]=(-0.876520699909)/(o+1.)+(-0.352954132662)  
       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_onFunction_fromSymbol_ReducedSolution_rank3(self):  
       """  
       tests integral of rank 3 Symbol on the Function  
   
       assumptions: ReducedSolution(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=1  
       dim=self.domain.getDim()  
       w_ref=Function(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.64806859919)*x[0]+(0.669871100749)*x[1]  
         s[0,0,1]=(0.351912095781)*x[0]+(-0.795221209702)*x[1]  
         s[0,1,0]=(1.67848694486)*x[0]+(0.294895162463)*x[1]  
         s[0,1,1]=(0.360904647807)*x[0]+(1.08975889449)*x[1]  
         s[1,0,0]=(-0.0924096394032)*x[0]+(-1.45324202762)*x[1]  
         s[1,0,1]=(-0.160994756309)*x[0]+(0.551455091958)*x[1]  
         s[1,1,0]=(1.32478072001)*x[0]+(-1.43998718605)*x[1]  
         s[1,1,1]=(0.481907947963)*x[0]+(-1.62005808161)*x[1]  
         s[2,0,0]=(1.28445085089)*x[0]+(0.139212942532)*x[1]  
         s[2,0,1]=(0.13496510335)*x[0]+(-0.3090345869)*x[1]  
         s[2,1,0]=(1.34702478342)*x[0]+(0.77762332551)*x[1]  
         s[2,1,1]=(0.2270682866)*x[0]+(0.585652373115)*x[1]  
         s[3,0,0]=(0.974462828497)*x[0]+(-0.0761666893839)*x[1]  
         s[3,0,1]=(0.787654033315)*x[0]+(-0.665952609368)*x[1]  
         s[3,1,0]=(-0.535337193665)*x[0]+(-0.10003612917)*x[1]  
         s[3,1,1]=(0.90669722873)*x[0]+(0.0637346383222)*x[1]  
         s[4,0,0]=(0.224906594767)*x[0]+(0.255067891624)*x[1]  
         s[4,0,1]=(1.45652552317)*x[0]+(-0.896697311539)*x[1]  
         s[4,1,0]=(0.0111655859631)*x[0]+(1.35361034898)*x[1]  
         s[4,1,1]=(-1.49696987574)*x[0]+(-0.0630120006374)*x[1]  
         s[5,0,0]=(-1.37528487034)*x[0]+(-1.03082532988)*x[1]  
         s[5,0,1]=(0.298794708742)*x[0]+(-0.338420113242)*x[1]  
         s[5,1,0]=(0.101365713196)*x[0]+(0.46239070902)*x[1]  
         s[5,1,1]=(-0.329260078889)*x[0]+(0.0114285623122)*x[1]  
         ref[0,0,0]=(1.04954961047)/(o+1.)+(0.134195044736)  
         ref[0,0,1]=(-0.941346926582)/(o+1.)+(0.24901890633)  
         ref[0,1,0]=(0.33540890863)/(o+1.)+(0.818986599345)  
         ref[0,1,1]=(-0.0452512610385)/(o+1.)+(0.747957401666)  
         ref[1,0,0]=(-0.0571552186929)/(o+1.)+(-0.744248224165)  
         ref[1,0,1]=(-0.256660001756)/(o+1.)+(0.323560168702)  
         ref[1,1,0]=(0.173031418514)/(o+1.)+(-0.144118942277)  
         ref[1,1,1]=(-1.27331535296)/(o+1.)+(0.0675826096564)  
         ref[2,0,0]=(1.27442931542)/(o+1.)+(0.0746172389969)  
         ref[2,0,1]=(1.23134060492)/(o+1.)+(-0.702705044233)  
         ref[2,1,0]=(1.44361222924)/(o+1.)+(0.340517939842)  
         ref[2,1,1]=(0.858404770157)/(o+1.)+(-0.0228420552212)  
         ref[3,0,0]=(0.53268376719)/(o+1.)+(0.182806185962)  
         ref[3,0,1]=(0.962024080252)/(o+1.)+(-0.420161328153)  
         ref[3,1,0]=(-1.06376900656)/(o+1.)+(0.214197841863)  
         ref[3,1,1]=(0.437728927482)/(o+1.)+(0.266351469785)  
         ref[4,0,0]=(-0.247848566495)/(o+1.)+(0.363911526443)  
         ref[4,0,1]=(0.275565249528)/(o+1.)+(0.142131481049)  
         ref[4,1,0]=(0.8446292547)/(o+1.)+(0.260073340122)  
         ref[4,1,1]=(-1.92408551747)/(o+1.)+(0.182051820549)  
         ref[5,0,0]=(-1.70867649172)/(o+1.)+(-0.348716854247)  
         ref[5,0,1]=(-0.216851661682)/(o+1.)+(0.088613128591)  
         ref[5,1,0]=(1.89734425595)/(o+1.)+(-0.666793916865)  
         ref[5,1,1]=(-0.281093101446)/(o+1.)+(-0.0183692075654)  
       else:  
         s[0,0,0]=(0.142896594259)*x[0]+(-0.458264763854)*x[1]+(0.521893125785)*x[2]  
         s[0,0,1]=(-0.141846975275)*x[0]+(-0.976845409768)*x[1]+(-1.14147520898)*x[2]  
         s[0,1,0]=(0.141747271548)*x[0]+(-1.21811158828)*x[1]+(0.0640715930615)*x[2]  
         s[0,1,1]=(0.462551385436)*x[0]+(-0.87929813895)*x[1]+(0.944848279649)*x[2]  
         s[1,0,0]=(0.246197516828)*x[0]+(-0.0275751890238)*x[1]+(0.278318853806)*x[2]  
         s[1,0,1]=(0.525663042785)*x[0]+(0.191011208259)*x[1]+(-1.27931005652)*x[2]  
         s[1,1,0]=(-1.12276137904)*x[0]+(0.474659469962)*x[1]+(0.15450537857)*x[2]  
         s[1,1,1]=(0.321959890457)*x[0]+(-0.0325903104321)*x[1]+(-0.735505871467)*x[2]  
         s[2,0,0]=(-0.190194685931)*x[0]+(-0.277506154989)*x[1]+(0.0984734800625)*x[2]  
         s[2,0,1]=(0.286493694398)*x[0]+(0.841559451892)*x[1]+(0.20572294365)*x[2]  
         s[2,1,0]=(-0.0132570386632)*x[0]+(-0.160857995452)*x[1]+(-0.813758770212)*x[2]  
         s[2,1,1]=(0.00519333657271)*x[0]+(0.0324836424574)*x[1]+(0.493299621992)*x[2]  
         s[3,0,0]=(0.300624746821)*x[0]+(0.211207146953)*x[1]+(1.0860831317)*x[2]  
         s[3,0,1]=(-0.696336553938)*x[0]+(-1.28551896118)*x[1]+(0.738769481443)*x[2]  
         s[3,1,0]=(0.15510282832)*x[0]+(-1.15795290548)*x[1]+(0.543235378485)*x[2]  
         s[3,1,1]=(-0.714308237763)*x[0]+(0.239072001232)*x[1]+(-0.187168055861)*x[2]  
         s[4,0,0]=(0.624611061079)*x[0]+(1.11568209096)*x[1]+(-1.46683771155)*x[2]  
         s[4,0,1]=(1.45301860552)*x[0]+(0.74921646591)*x[1]+(-0.796630526412)*x[2]  
         s[4,1,0]=(0.560555339207)*x[0]+(-0.421267308186)*x[1]+(-0.222312671328)*x[2]  
         s[4,1,1]=(0.807845684562)*x[0]+(0.323266951017)*x[1]+(1.51940950039)*x[2]  
         s[5,0,0]=(-0.558067921385)*x[0]+(-0.214928793546)*x[1]+(1.01402046886)*x[2]  
         s[5,0,1]=(1.20688436616)*x[0]+(0.0247589671447)*x[1]+(-0.368536410815)*x[2]  
         s[5,1,0]=(-0.324541665933)*x[0]+(-0.205515389215)*x[1]+(0.758278431203)*x[2]  
         s[5,1,1]=(-0.620405057772)*x[0]+(-0.67647528448)*x[1]+(1.32328947052)*x[2]  
         ref[0,0,0]=(0.260018146786)/(o+1.)+(-0.0267465952979)  
         ref[0,0,1]=(-0.435502524101)/(o+1.)+(-0.912332534962)  
         ref[0,1,0]=(-0.0330362836983)/(o+1.)+(-0.489628219987)  
         ref[0,1,1]=(1.07484163998)/(o+1.)+(-0.273370056924)  
         ref[1,0,0]=(-0.523779853488)/(o+1.)+(0.510360517549)  
         ref[1,0,1]=(0.448972814496)/(o+1.)+(-0.505804309986)  
         ref[1,1,0]=(-1.09840793106)/(o+1.)+(0.302405700276)  
         ref[1,1,1]=(0.130511241273)/(o+1.)+(-0.288323766357)  
         ref[2,0,0]=(-0.805299870557)/(o+1.)+(0.21803625485)  
         ref[2,0,1]=(0.271181617798)/(o+1.)+(0.531297236071)  
         ref[2,1,0]=(-1.29575884246)/(o+1.)+(0.153942519064)  
         ref[2,1,1]=(-0.600379662508)/(o+1.)+(0.565678131765)  
         ref[3,0,0]=(1.87814767227)/(o+1.)+(-0.140116323394)  
         ref[3,0,1]=(-0.195825320078)/(o+1.)+(-0.523630356799)  
         ref[3,1,0]=(-0.959261224384)/(o+1.)+(0.249823262853)  
         ref[3,1,1]=(1.05531553015)/(o+1.)+(-0.858859911271)  
         ref[4,0,0]=(0.65497734235)/(o+1.)+(-0.190760950929)  
         ref[4,0,1]=(1.37092574409)/(o+1.)+(0.0173394004651)  
         ref[4,1,0]=(1.27754767629)/(o+1.)+(-0.6802861583)  
         ref[4,1,1]=(1.23997013471)/(o+1.)+(0.70527600063)  
         ref[5,0,0]=(-0.383142890439)/(o+1.)+(0.312083322186)  
         ref[5,0,1]=(1.64380369652)/(o+1.)+(-0.390348387013)  
         ref[5,1,0]=(-0.812713549757)/(o+1.)+(0.520467462905)  
         ref[5,1,1]=(0.600505313178)/(o+1.)+(-0.287048092454)  
       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_onFunction_fromSymbol_ReducedSolution_rank4(self):  
       """  
       tests integral of rank 4 Symbol on the Function  
   
       assumptions: ReducedSolution(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=1  
       dim=self.domain.getDim()  
       w_ref=Function(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.235888975732)*x[0]+(-0.734372259615)*x[1]  
         s[0,0,0,1]=(0.0665724430605)*x[0]+(-0.0890002398629)*x[1]  
         s[0,0,1,0]=(-1.19774759676)*x[0]+(1.00321581155)*x[1]  
         s[0,0,1,1]=(0.93370004223)*x[0]+(-0.953835581453)*x[1]  
         s[0,0,2,0]=(-0.0557204731966)*x[0]+(0.94945217411)*x[1]  
         s[0,0,2,1]=(-0.772628465097)*x[0]+(1.77100579145)*x[1]  
         s[0,1,0,0]=(-0.405653863463)*x[0]+(0.494482129094)*x[1]  
         s[0,1,0,1]=(0.636236763209)*x[0]+(-1.63254203234)*x[1]  
         s[0,1,1,0]=(0.941764211044)*x[0]+(0.699520209508)*x[1]  
         s[0,1,1,1]=(1.05045643599)*x[0]+(0.0596636815695)*x[1]  
         s[0,1,2,0]=(0.578668042684)*x[0]+(0.285442340394)*x[1]  
         s[0,1,2,1]=(0.469149909671)*x[0]+(1.26526906754)*x[1]  
         s[0,2,0,0]=(1.05435496407)*x[0]+(-0.592645628655)*x[1]  
         s[0,2,0,1]=(0.066181979241)*x[0]+(-1.42368311585)*x[1]  
         s[0,2,1,0]=(-0.896588999422)*x[0]+(1.44881386304)*x[1]  
         s[0,2,1,1]=(-0.862544854709)*x[0]+(-0.398360134784)*x[1]  
         s[0,2,2,0]=(1.02969811319)*x[0]+(0.318993808627)*x[1]  
         s[0,2,2,1]=(0.0143773859487)*x[0]+(-0.327118788648)*x[1]  
         s[0,3,0,0]=(0.021196438108)*x[0]+(1.8515159226)*x[1]  
         s[0,3,0,1]=(0.627726779803)*x[0]+(-0.302716383303)*x[1]  
         s[0,3,1,0]=(0.165624370858)*x[0]+(0.274919760437)*x[1]  
         s[0,3,1,1]=(0.283214725106)*x[0]+(-0.872378951063)*x[1]  
         s[0,3,2,0]=(-0.83391985409)*x[0]+(0.731217556829)*x[1]  
         s[0,3,2,1]=(0.918833558754)*x[0]+(0.714715370412)*x[1]  
         s[0,4,0,0]=(-0.503211677055)*x[0]+(0.0289310095577)*x[1]  
         s[0,4,0,1]=(0.597129238132)*x[0]+(0.540475624893)*x[1]  
         s[0,4,1,0]=(0.687211570349)*x[0]+(0.594018658674)*x[1]  
         s[0,4,1,1]=(1.5970484642)*x[0]+(-0.495319600999)*x[1]  
         s[0,4,2,0]=(1.20627016067)*x[0]+(0.461261823726)*x[1]  
         s[0,4,2,1]=(0.165927055028)*x[0]+(1.09007328428)*x[1]  
         s[1,0,0,0]=(1.16105917598)*x[0]+(1.82590164801)*x[1]  
         s[1,0,0,1]=(-1.13479961391)*x[0]+(0.0351464050353)*x[1]  
         s[1,0,1,0]=(-0.318954647255)*x[0]+(0.210946813363)*x[1]  
         s[1,0,1,1]=(1.31393538581)*x[0]+(0.198463680367)*x[1]  
         s[1,0,2,0]=(1.17799558613)*x[0]+(0.514357347746)*x[1]  
         s[1,0,2,1]=(0.571191341129)*x[0]+(0.694971250457)*x[1]  
         s[1,1,0,0]=(0.132901410189)*x[0]+(-0.262070778236)*x[1]  
         s[1,1,0,1]=(-0.871431837436)*x[0]+(-0.514707012778)*x[1]  
         s[1,1,1,0]=(-0.319003186732)*x[0]+(-0.014973803902)*x[1]  
         s[1,1,1,1]=(0.260213741998)*x[0]+(1.32908581921)*x[1]  
         s[1,1,2,0]=(0.811339404893)*x[0]+(-0.304564391555)*x[1]  
         s[1,1,2,1]=(-0.062193223101)*x[0]+(-0.911704705741)*x[1]  
         s[1,2,0,0]=(0.0932623640149)*x[0]+(1.12570360092)*x[1]  
         s[1,2,0,1]=(1.16504942277)*x[0]+(-0.385840092559)*x[1]  
         s[1,2,1,0]=(1.3440680469)*x[0]+(0.532696669818)*x[1]  
         s[1,2,1,1]=(1.31050128725)*x[0]+(0.00906728815983)*x[1]  
         s[1,2,2,0]=(-1.36931832474)*x[0]+(-1.70562158659)*x[1]  
         s[1,2,2,1]=(-1.8375028036)*x[0]+(1.52366054242)*x[1]  
         s[1,3,0,0]=(0.474023303611)*x[0]+(0.437518737767)*x[1]  
         s[1,3,0,1]=(-0.42921544272)*x[0]+(0.387647202618)*x[1]  
         s[1,3,1,0]=(0.863045413096)*x[0]+(-0.36260979035)*x[1]  
         s[1,3,1,1]=(-0.654365401799)*x[0]+(0.533926246461)*x[1]  
         s[1,3,2,0]=(0.418152564814)*x[0]+(1.11544647745)*x[1]  
         s[1,3,2,1]=(-1.60947873228)*x[0]+(0.591727770738)*x[1]  
         s[1,4,0,0]=(-1.51807668572)*x[0]+(-1.01613349614)*x[1]  
         s[1,4,0,1]=(-1.50163863727)*x[0]+(1.50376272164)*x[1]  
         s[1,4,1,0]=(0.320776223369)*x[0]+(-0.700391339598)*x[1]  
         s[1,4,1,1]=(0.745224476612)*x[0]+(-0.850870606209)*x[1]  
         s[1,4,2,0]=(-0.179598404379)*x[0]+(1.75799776411)*x[1]  
         s[1,4,2,1]=(0.00909330900106)*x[0]+(-0.077399205942)*x[1]  
         s[2,0,0,0]=(0.505719447396)*x[0]+(-0.275603298829)*x[1]  
         s[2,0,0,1]=(1.46787325811)*x[0]+(0.534793377012)*x[1]  
         s[2,0,1,0]=(0.77645891983)*x[0]+(0.540540443218)*x[1]  
         s[2,0,1,1]=(0.429661881583)*x[0]+(1.43421311479)*x[1]  
         s[2,0,2,0]=(1.02806543045)*x[0]+(0.931834883879)*x[1]  
         s[2,0,2,1]=(0.763031666632)*x[0]+(0.873653388204)*x[1]  
         s[2,1,0,0]=(0.261772733655)*x[0]+(-1.18679909814)*x[1]  
         s[2,1,0,1]=(-1.61662908583)*x[0]+(1.10646142209)*x[1]  
         s[2,1,1,0]=(0.188527773811)*x[0]+(-0.772410233645)*x[1]  
         s[2,1,1,1]=(-0.869931105194)*x[0]+(1.51014899284)*x[1]  
         s[2,1,2,0]=(0.252478837689)*x[0]+(1.22480134325)*x[1]  
         s[2,1,2,1]=(1.49578867187)*x[0]+(-0.877973056373)*x[1]  
         s[2,2,0,0]=(-0.209568005598)*x[0]+(-0.0462992389671)*x[1]  
         s[2,2,0,1]=(-0.298130269216)*x[0]+(-0.908352713549)*x[1]  
         s[2,2,1,0]=(-0.586370615835)*x[0]+(-1.72704626602)*x[1]  
         s[2,2,1,1]=(1.26217059553)*x[0]+(0.676548549908)*x[1]  
         s[2,2,2,0]=(0.961200845015)*x[0]+(0.612151157303)*x[1]  
         s[2,2,2,1]=(0.700873758828)*x[0]+(0.800662765762)*x[1]  
         s[2,3,0,0]=(-0.319747641322)*x[0]+(0.689929330298)*x[1]  
         s[2,3,0,1]=(-1.04393759081)*x[0]+(-1.80449230281)*x[1]  
         s[2,3,1,0]=(-0.0410072962318)*x[0]+(-0.678000289402)*x[1]  
         s[2,3,1,1]=(-0.329381648117)*x[0]+(-0.935487069857)*x[1]  
         s[2,3,2,0]=(-0.907460976718)*x[0]+(0.0314212805943)*x[1]  
         s[2,3,2,1]=(0.593604907619)*x[0]+(-0.479146057787)*x[1]  
         s[2,4,0,0]=(-0.0337048332079)*x[0]+(0.239721443625)*x[1]  
         s[2,4,0,1]=(0.721609580339)*x[0]+(-1.06464423044)*x[1]  
         s[2,4,1,0]=(0.670568080353)*x[0]+(1.28774286264)*x[1]  
         s[2,4,1,1]=(0.603608338555)*x[0]+(0.323996221169)*x[1]  
         s[2,4,2,0]=(0.0371268677698)*x[0]+(0.401814556385)*x[1]  
         s[2,4,2,1]=(0.436926475796)*x[0]+(-0.819433312575)*x[1]  
         s[3,0,0,0]=(-0.0190186791033)*x[0]+(0.501672647061)*x[1]  
         s[3,0,0,1]=(0.00060856018325)*x[0]+(-0.414668792931)*x[1]  
         s[3,0,1,0]=(0.699428985955)*x[0]+(0.612631528371)*x[1]  
         s[3,0,1,1]=(-0.659371576463)*x[0]+(-0.0982545515259)*x[1]  
         s[3,0,2,0]=(0.444351889183)*x[0]+(0.53998411713)*x[1]  
         s[3,0,2,1]=(-0.281563709018)*x[0]+(-0.486501437256)*x[1]  
         s[3,1,0,0]=(0.407521411466)*x[0]+(-0.749870044816)*x[1]  
         s[3,1,0,1]=(-0.638780264813)*x[0]+(0.230397511262)*x[1]  
         s[3,1,1,0]=(1.16000440204)*x[0]+(0.13074916095)*x[1]  
         s[3,1,1,1]=(-1.30550439046)*x[0]+(-1.33788704039)*x[1]  
         s[3,1,2,0]=(-0.540767742404)*x[0]+(-0.148316212185)*x[1]  
         s[3,1,2,1]=(1.70452499495)*x[0]+(0.935421717463)*x[1]  
         s[3,2,0,0]=(0.320990904519)*x[0]+(0.467953609756)*x[1]  
         s[3,2,0,1]=(-0.26002228203)*x[0]+(-0.925765706976)*x[1]  
         s[3,2,1,0]=(0.925754935382)*x[0]+(0.240432086422)*x[1]  
         s[3,2,1,1]=(0.0214680080146)*x[0]+(-1.11507977191)*x[1]  
         s[3,2,2,0]=(-0.187946153679)*x[0]+(0.024781322847)*x[1]  
         s[3,2,2,1]=(-1.41866510495)*x[0]+(0.596173034069)*x[1]  
         s[3,3,0,0]=(0.77087649562)*x[0]+(0.848168811103)*x[1]  
         s[3,3,0,1]=(0.218810390517)*x[0]+(0.116909485563)*x[1]  
         s[3,3,1,0]=(-0.889981738645)*x[0]+(-0.506355969844)*x[1]  
         s[3,3,1,1]=(1.15870903185)*x[0]+(-0.8158119166)*x[1]  
         s[3,3,2,0]=(-0.345230989856)*x[0]+(-0.138496974465)*x[1]  
         s[3,3,2,1]=(-0.819830787817)*x[0]+(-1.66747998417)*x[1]  
         s[3,4,0,0]=(-1.74647564112)*x[0]+(0.22309219172)*x[1]  
         s[3,4,0,1]=(0.146804717412)*x[0]+(0.493084518827)*x[1]  
         s[3,4,1,0]=(-0.536943383893)*x[0]+(-0.686288132381)*x[1]  
         s[3,4,1,1]=(-0.142983666789)*x[0]+(-0.183927597857)*x[1]  
         s[3,4,2,0]=(-0.173071632973)*x[0]+(-0.696870700802)*x[1]  
         s[3,4,2,1]=(-0.359163238166)*x[0]+(-0.172033035327)*x[1]  
         ref[0,0,0,0]=(-0.603598770198)/(o+1.)+(0.0525577431575)  
         ref[0,0,0,1]=(1.04505857398)/(o+1.)+(-0.533743185393)  
         ref[0,0,1,0]=(0.00772071573504)/(o+1.)+(-0.101126250473)  
         ref[0,0,1,1]=(-0.290587702404)/(o+1.)+(0.135226081591)  
         ref[0,0,2,0]=(0.614426628234)/(o+1.)+(0.139652536339)  
         ref[0,0,2,1]=(-0.0228094425795)/(o+1.)+(0.510593384465)  
         ref[0,1,0,0]=(-0.436885078328)/(o+1.)+(0.262856671979)  
         ref[0,1,0,1]=(0.0510259667548)/(o+1.)+(-0.523665617945)  
         ref[0,1,1,0]=(0.744462079536)/(o+1.)+(0.448411170508)  
         ref[0,1,1,1]=(1.52720962375)/(o+1.)+(-0.208544753096)  
         ref[0,1,2,0]=(0.73405306307)/(o+1.)+(0.0650286600044)  
         ref[0,1,2,1]=(0.550924984933)/(o+1.)+(0.591746996137)  
         ref[0,2,0,0]=(-0.347797813257)/(o+1.)+(0.404753574338)  
         ref[0,2,0,1]=(0.187043042708)/(o+1.)+(-0.772272089659)  
         ref[0,2,1,0]=(-0.316098850787)/(o+1.)+(0.434161857202)  
         ref[0,2,1,1]=(-0.536124734534)/(o+1.)+(-0.36239012748)  
         ref[0,2,2,0]=(0.585045523113)/(o+1.)+(0.381823199352)  
         ref[0,2,2,1]=(0.422243751365)/(o+1.)+(-0.367492577032)  
         ref[0,3,0,0]=(0.91381158808)/(o+1.)+(0.479450386313)  
         ref[0,3,0,1]=(0.209840671177)/(o+1.)+(0.0575848626616)  
         ref[0,3,1,0]=(0.158639778589)/(o+1.)+(0.140952176353)  
         ref[0,3,1,1]=(-0.364808895601)/(o+1.)+(-0.112177665178)  
         ref[0,3,2,0]=(-0.198937574741)/(o+1.)+(0.0481176387404)  
         ref[0,3,2,1]=(1.05420599501)/(o+1.)+(0.289671467078)  
         ref[0,4,0,0]=(0.811701728881)/(o+1.)+(-0.642991198189)  
         ref[0,4,0,1]=(0.693754647803)/(o+1.)+(0.221925107611)  
         ref[0,4,1,0]=(1.05453609011)/(o+1.)+(0.113347069457)  
         ref[0,4,1,1]=(0.117274271978)/(o+1.)+(0.49222729561)  
         ref[0,4,2,0]=(0.496795563283)/(o+1.)+(0.585368210556)  
         ref[0,4,2,1]=(0.83272690983)/(o+1.)+(0.211636714741)  
         ref[1,0,0,0]=(1.46878592273)/(o+1.)+(0.75908745063)  
         ref[1,0,0,1]=(-0.250785630529)/(o+1.)+(-0.424433789171)  
         ref[1,0,1,0]=(0.161786720779)/(o+1.)+(-0.134897277336)  
         ref[1,0,1,1]=(1.12719401256)/(o+1.)+(0.192602526813)  
         ref[1,0,2,0]=(0.7197235394)/(o+1.)+(0.486314697239)  
         ref[1,0,2,1]=(1.02804458464)/(o+1.)+(0.119059003471)  
         ref[1,1,0,0]=(0.0361584520541)/(o+1.)+(-0.0826639100507)  
         ref[1,1,0,1]=(-1.06091812324)/(o+1.)+(-0.162610363489)  
         ref[1,1,1,0]=(1.13776585837)/(o+1.)+(-0.735871424501)  
         ref[1,1,1,1]=(1.4740891177)/(o+1.)+(0.0576052217538)  
         ref[1,1,2,0]=(0.280616623834)/(o+1.)+(0.113079194752)  
         ref[1,1,2,1]=(-0.491890699653)/(o+1.)+(-0.241003614595)  
         ref[1,2,0,0]=(-0.0342838844534)/(o+1.)+(0.626624924695)  
         ref[1,2,0,1]=(0.770911868081)/(o+1.)+(0.00414873106652)  
         ref[1,2,1,0]=(0.30749084682)/(o+1.)+(0.784636934951)  
         ref[1,2,1,1]=(1.8638645006)/(o+1.)+(-0.272147962595)  
         ref[1,2,2,0]=(-1.46841213372)/(o+1.)+(-0.803263888803)  
         ref[1,2,2,1]=(-0.302454198157)/(o+1.)+(-0.00569403150815)  
         ref[1,3,0,0]=(0.493917522063)/(o+1.)+(0.208812259657)  
         ref[1,3,0,1]=(0.476274657976)/(o+1.)+(-0.258921449039)  
         ref[1,3,1,0]=(-0.736248174893)/(o+1.)+(0.618341898819)  
         ref[1,3,1,1]=(-0.697129670691)/(o+1.)+(0.288345257677)  
         ref[1,3,2,0]=(0.303153912627)/(o+1.)+(0.615222564816)  
         ref[1,3,2,1]=(-0.58122630211)/(o+1.)+(-0.218262329715)  
         ref[1,4,0,0]=(-1.15442442968)/(o+1.)+(-0.689892876091)  
         ref[1,4,0,1]=(0.0585826445649)/(o+1.)+(-0.0282292800982)  
         ref[1,4,1,0]=(0.3252337262)/(o+1.)+(-0.352424421214)  
         ref[1,4,1,1]=(0.512701244088)/(o+1.)+(-0.309173686843)  
         ref[1,4,2,0]=(1.5506882457)/(o+1.)+(0.0138555570174)  
         ref[1,4,2,1]=(-0.940773035102)/(o+1.)+(0.436233569081)  
         ref[2,0,0,0]=(1.54247754874)/(o+1.)+(-0.656180700088)  
         ref[2,0,0,1]=(0.988306961756)/(o+1.)+(0.507179836684)  
         ref[2,0,1,0]=(-0.416628824296)/(o+1.)+(0.866814093672)  
         ref[2,0,1,1]=(1.41006066195)/(o+1.)+(0.22690716721)  
         ref[2,0,2,0]=(0.353011705537)/(o+1.)+(0.803444304396)  
         ref[2,0,2,1]=(0.687642260874)/(o+1.)+(0.474521396981)  
         ref[2,1,0,0]=(-0.218198987148)/(o+1.)+(-0.353413688668)  
         ref[2,1,0,1]=(-0.635306433562)/(o+1.)+(0.0625693849126)  
         ref[2,1,1,0]=(0.53416867099)/(o+1.)+(-0.559025565412)  
         ref[2,1,1,1]=(0.00543686305333)/(o+1.)+(0.317390512297)  
         ref[2,1,2,0]=(0.916573120847)/(o+1.)+(0.280353530048)  
         ref[2,1,2,1]=(-0.0537588152546)/(o+1.)+(0.335787215373)  
         ref[2,2,0,0]=(1.0055660817)/(o+1.)+(-0.630716663133)  
         ref[2,2,0,1]=(0.420474306577)/(o+1.)+(-0.813478644671)  
         ref[2,2,1,0]=(-0.723008657238)/(o+1.)+(-0.795204112308)  
         ref[2,2,1,1]=(0.306188174034)/(o+1.)+(0.816265485704)  
         ref[2,2,2,0]=(0.806158569368)/(o+1.)+(0.383596716475)  
         ref[2,2,2,1]=(1.6353377865)/(o+1.)+(-0.066900630957)  
         ref[2,3,0,0]=(-1.24813850815)/(o+1.)+(0.809160098565)  
         ref[2,3,0,1]=(-1.56942041127)/(o+1.)+(-0.639504741178)  
         ref[2,3,1,0]=(-1.49605878837)/(o+1.)+(0.388525601366)  
         ref[2,3,1,1]=(-0.448403645878)/(o+1.)+(-0.408232536048)  
         ref[2,3,2,0]=(-1.13568794342)/(o+1.)+(0.129824123646)  
         ref[2,3,2,1]=(0.596733666259)/(o+1.)+(-0.241137408214)  
         ref[2,4,0,0]=(0.0191094707617)/(o+1.)+(0.0934535698276)  
         ref[2,4,0,1]=(0.185204097773)/(o+1.)+(-0.264119373935)  
         ref[2,4,1,0]=(1.55855563639)/(o+1.)+(0.199877653305)  
         ref[2,4,1,1]=(0.11469142184)/(o+1.)+(0.406456568942)  
         ref[2,4,2,0]=(-0.954321542363)/(o+1.)+(0.696631483259)  
         ref[2,4,2,1]=(-0.810227566168)/(o+1.)+(0.213860364695)  
         ref[3,0,0,0]=(0.453436736881)/(o+1.)+(0.0146086155385)  
         ref[3,0,0,1]=(-0.210824760654)/(o+1.)+(-0.101617736047)  
         ref[3,0,1,0]=(0.414458928012)/(o+1.)+(0.448800793157)  
         ref[3,0,1,1]=(0.346129385596)/(o+1.)+(-0.551877756793)  
         ref[3,0,2,0]=(1.85496275992)/(o+1.)+(-0.435313376805)  
         ref[3,0,2,1]=(-0.110500317363)/(o+1.)+(-0.328782414455)  
         ref[3,1,0,0]=(0.0399449935267)/(o+1.)+(-0.191146813438)  
         ref[3,1,0,1]=(0.133080949177)/(o+1.)+(-0.270731851364)  
         ref[3,1,1,0]=(0.139648356416)/(o+1.)+(0.575552603289)  
         ref[3,1,1,1]=(-1.45813597924)/(o+1.)+(-0.592627725804)  
         ref[3,1,2,0]=(-0.773854684679)/(o+1.)+(0.0423853650452)  
         ref[3,1,2,1]=(1.2726274277)/(o+1.)+(0.683659642354)  
         ref[3,2,0,0]=(0.555324507349)/(o+1.)+(0.116810003463)  
         ref[3,2,0,1]=(-0.310977730161)/(o+1.)+(-0.437405129422)  
         ref[3,2,1,0]=(1.05800939782)/(o+1.)+(0.0540888119933)  
         ref[3,2,1,1]=(0.386222714751)/(o+1.)+(-0.739917239322)  
         ref[3,2,2,0]=(-0.95705464593)/(o+1.)+(0.396944907549)  
         ref[3,2,2,1]=(-0.491612682819)/(o+1.)+(-0.165439694033)  
         ref[3,3,0,0]=(0.666972772584)/(o+1.)+(0.47603626707)  
         ref[3,3,0,1]=(0.268506355312)/(o+1.)+(0.0336067603842)  
         ref[3,3,1,0]=(-0.57724956178)/(o+1.)+(-0.409544073355)  
         ref[3,3,1,1]=(-0.518808765862)/(o+1.)+(0.430852940555)  
         ref[3,3,2,0]=(-1.95248352029)/(o+1.)+(0.734377777986)  
         ref[3,3,2,1]=(-1.14565232021)/(o+1.)+(-0.67082922589)  
         ref[3,4,0,0]=(-1.13455573259)/(o+1.)+(-0.1944138584)  
         ref[3,4,0,1]=(-0.508914286468)/(o+1.)+(0.574401761354)  
         ref[3,4,1,0]=(-0.319104038837)/(o+1.)+(-0.452063738718)  
         ref[3,4,1,1]=(-0.100356733327)/(o+1.)+(-0.11327726566)  
         ref[3,4,2,0]=(-0.39970881352)/(o+1.)+(-0.235116760127)  
         ref[3,4,2,1]=(-0.339631070901)/(o+1.)+(-0.0957826012957)  
       else:  
         s[0,0,0,0]=(0.0794776522341)*x[0]+(1.69294456255)*x[1]+(0.824115844979)*x[2]  
         s[0,0,0,1]=(0.0720523378919)*x[0]+(-1.39724154561)*x[1]+(-0.010988810956)*x[2]  
         s[0,0,1,0]=(0.985556321125)*x[0]+(1.12133844031)*x[1]+(-0.262491219522)*x[2]  
         s[0,0,1,1]=(0.789643681767)*x[0]+(1.02860624013)*x[1]+(-0.450770685703)*x[2]  
         s[0,0,2,0]=(-0.850427026537)*x[0]+(-0.393993518297)*x[1]+(0.12816296306)*x[2]  
         s[0,0,2,1]=(-0.47508130541)*x[0]+(-0.393857510976)*x[1]+(0.66003641476)*x[2]  
         s[0,1,0,0]=(-1.87725252884)*x[0]+(-0.668075530728)*x[1]+(0.938485679482)*x[2]  
         s[0,1,0,1]=(0.820537136967)*x[0]+(-0.453620529157)*x[1]+(0.811944595883)*x[2]  
         s[0,1,1,0]=(0.914995161971)*x[0]+(-0.196153821444)*x[1]+(0.938555859255)*x[2]  
         s[0,1,1,1]=(-0.866633718493)*x[0]+(-0.534596859321)*x[1]+(0.77514383239)*x[2]  
         s[0,1,2,0]=(0.183094085342)*x[0]+(0.727499336912)*x[1]+(0.170986687969)*x[2]  
         s[0,1,2,1]=(-1.36220673904)*x[0]+(0.0822122492483)*x[1]+(0.124227107716)*x[2]  
         s[0,2,0,0]=(1.55269479425)*x[0]+(-0.14574857122)*x[1]+(1.24120289667)*x[2]  
         s[0,2,0,1]=(-0.464038186768)*x[0]+(0.00554383028356)*x[1]+(-1.14838250985)*x[2]  
         s[0,2,1,0]=(0.904608031363)*x[0]+(-0.313004420619)*x[1]+(-0.10529298073)*x[2]  
         s[0,2,1,1]=(0.156623578469)*x[0]+(0.55127494399)*x[1]+(-0.385447926692)*x[2]  
         s[0,2,2,0]=(-0.766804018933)*x[0]+(0.18519619356)*x[1]+(1.00915540081)*x[2]  
         s[0,2,2,1]=(0.00231157548456)*x[0]+(0.338768642838)*x[1]+(-0.684228602438)*x[2]  
         s[0,3,0,0]=(-0.834810486599)*x[0]+(-0.096360306458)*x[1]+(1.28924889761)*x[2]  
         s[0,3,0,1]=(-0.658443843543)*x[0]+(0.889474267886)*x[1]+(0.566763124725)*x[2]  
         s[0,3,1,0]=(-0.109777093963)*x[0]+(0.228053887631)*x[1]+(1.22952539906)*x[2]  
         s[0,3,1,1]=(-0.749479260801)*x[0]+(-1.01102432725)*x[1]+(-0.196861989291)*x[2]  
         s[0,3,2,0]=(0.650389523509)*x[0]+(0.151701374527)*x[1]+(0.506246388483)*x[2]  
         s[0,3,2,1]=(-0.648510958338)*x[0]+(-0.263590202304)*x[1]+(-1.35992044414)*x[2]  
         s[0,4,0,0]=(0.196976454523)*x[0]+(-0.193947226599)*x[1]+(1.67641586045)*x[2]  
         s[0,4,0,1]=(-0.455868626908)*x[0]+(0.506302321882)*x[1]+(1.1666778393)*x[2]  
         s[0,4,1,0]=(-0.788545609857)*x[0]+(-0.487332926053)*x[1]+(-0.0645141715605)*x[2]  
         s[0,4,1,1]=(-0.320424709093)*x[0]+(-0.683301403769)*x[1]+(-0.222245108268)*x[2]  
         s[0,4,2,0]=(0.876149348517)*x[0]+(0.12449602802)*x[1]+(-0.220531205966)*x[2]  
         s[0,4,2,1]=(-0.2764172159)*x[0]+(-0.894571003479)*x[1]+(-0.595830070177)*x[2]  
         s[1,0,0,0]=(-0.79676665323)*x[0]+(-1.25965739347)*x[1]+(-0.319474113915)*x[2]  
         s[1,0,0,1]=(1.601348448)*x[0]+(0.41027863439)*x[1]+(-0.346758807915)*x[2]  
         s[1,0,1,0]=(0.181292913253)*x[0]+(1.10494312205)*x[1]+(0.196973772813)*x[2]  
         s[1,0,1,1]=(0.562861818795)*x[0]+(-0.997990211102)*x[1]+(0.0332706615838)*x[2]  
         s[1,0,2,0]=(-0.989984164479)*x[0]+(-0.886186583204)*x[1]+(-0.228620900973)*x[2]  
         s[1,0,2,1]=(0.841365917044)*x[0]+(-0.0519066039156)*x[1]+(-0.81126199301)*x[2]  
         s[1,1,0,0]=(-0.613125126303)*x[0]+(0.482770874125)*x[1]+(0.038374960382)*x[2]  
         s[1,1,0,1]=(-0.203719663632)*x[0]+(-0.281873286682)*x[1]+(-0.0303453795347)*x[2]  
         s[1,1,1,0]=(1.11287699536)*x[0]+(-1.04759296757)*x[1]+(1.64257695374)*x[2]  
         s[1,1,1,1]=(-0.0861307607908)*x[0]+(0.261314888791)*x[1]+(-0.204955973137)*x[2]  
         s[1,1,2,0]=(0.821662110998)*x[0]+(-1.05649310988)*x[1]+(0.609822823353)*x[2]  
         s[1,1,2,1]=(-0.730526005063)*x[0]+(1.62018363097)*x[1]+(0.99111776492)*x[2]  
         s[1,2,0,0]=(-1.25039777751)*x[0]+(0.811070034681)*x[1]+(1.32505446058)*x[2]  
         s[1,2,0,1]=(0.753110041895)*x[0]+(0.186756235207)*x[1]+(-1.30430176967)*x[2]  
         s[1,2,1,0]=(0.146182105242)*x[0]+(-0.863831927779)*x[1]+(-1.1030247274)*x[2]  
         s[1,2,1,1]=(0.674634709918)*x[0]+(-0.560866548824)*x[1]+(0.576408322189)*x[2]  
         s[1,2,2,0]=(-0.573489753302)*x[0]+(1.57147013427)*x[1]+(0.711691292064)*x[2]  
         s[1,2,2,1]=(0.549483527739)*x[0]+(-1.14179814973)*x[1]+(1.60524619335)*x[2]  
         s[1,3,0,0]=(0.197453494754)*x[0]+(-0.456559966113)*x[1]+(-1.21423667747)*x[2]  
         s[1,3,0,1]=(-1.76312274691)*x[0]+(-1.04778192886)*x[1]+(-0.185488490674)*x[2]  
         s[1,3,1,0]=(0.0162460011376)*x[0]+(1.16407944993)*x[1]+(1.16424268292)*x[2]  
         s[1,3,1,1]=(-0.513913288204)*x[0]+(-1.46536589962)*x[1]+(-0.906205233261)*x[2]  
         s[1,3,2,0]=(-0.0157400074256)*x[0]+(-0.293812243081)*x[1]+(0.815280978304)*x[2]  
         s[1,3,2,1]=(1.57630585875)*x[0]+(0.290739280065)*x[1]+(-0.771398356417)*x[2]  
         s[1,4,0,0]=(-0.323882779703)*x[0]+(-0.763929395312)*x[1]+(0.738403272406)*x[2]  
         s[1,4,0,1]=(-0.476278532043)*x[0]+(-0.11039317349)*x[1]+(0.346684885005)*x[2]  
         s[1,4,1,0]=(-1.36304063164)*x[0]+(-0.660619165296)*x[1]+(-0.903566907206)*x[2]  
         s[1,4,1,1]=(0.0863780283437)*x[0]+(0.466792514558)*x[1]+(0.448776109878)*x[2]  
         s[1,4,2,0]=(0.74478619068)*x[0]+(0.446314847678)*x[1]+(-0.0481741032015)*x[2]  
         s[1,4,2,1]=(0.746506715398)*x[0]+(-0.432201202785)*x[1]+(0.203440105689)*x[2]  
         s[2,0,0,0]=(-0.785805880678)*x[0]+(-0.862407720473)*x[1]+(-1.21640925829)*x[2]  
         s[2,0,0,1]=(0.647190817984)*x[0]+(0.519851314653)*x[1]+(0.390946186931)*x[2]  
         s[2,0,1,0]=(-1.24831725337)*x[0]+(1.59413938467)*x[1]+(-1.33358250136)*x[2]  
         s[2,0,1,1]=(-0.152213072763)*x[0]+(-1.09357954369)*x[1]+(-1.25586196425)*x[2]  
         s[2,0,2,0]=(-0.0314861108304)*x[0]+(0.293907529511)*x[1]+(-0.21039874768)*x[2]  
         s[2,0,2,1]=(0.0467194832302)*x[0]+(0.527286460462)*x[1]+(-0.415618293894)*x[2]  
         s[2,1,0,0]=(-0.189575051656)*x[0]+(-0.844885847783)*x[1]+(-0.334235875002)*x[2]  
         s[2,1,0,1]=(-0.00822711174783)*x[0]+(-1.5897272285)*x[1]+(1.50002681163)*x[2]  
         s[2,1,1,0]=(-0.841981498104)*x[0]+(-1.10376539971)*x[1]+(0.311385102139)*x[2]  
         s[2,1,1,1]=(1.12897934543)*x[0]+(-0.966261308872)*x[1]+(-1.16359871767)*x[2]  
         s[2,1,2,0]=(-0.957189463062)*x[0]+(0.0471569985184)*x[1]+(0.12392515517)*x[2]  
         s[2,1,2,1]=(-0.752369087888)*x[0]+(1.18176351896)*x[1]+(0.334788137458)*x[2]  
         s[2,2,0,0]=(1.22014205343)*x[0]+(0.784413576281)*x[1]+(0.0962245348039)*x[2]  
         s[2,2,0,1]=(-0.407023035962)*x[0]+(1.11597107325)*x[1]+(0.458612291763)*x[2]  
         s[2,2,1,0]=(-0.0496175828387)*x[0]+(-0.0536216340718)*x[1]+(0.771683970464)*x[2]  
         s[2,2,1,1]=(-0.356958793645)*x[0]+(-1.38580705404)*x[1]+(-0.670167616875)*x[2]  
         s[2,2,2,0]=(0.0804001816041)*x[0]+(-1.16114869406)*x[1]+(0.475472363874)*x[2]  
         s[2,2,2,1]=(0.98238551642)*x[0]+(-1.12578358118)*x[1]+(-0.00970359156434)*x[2]  
         s[2,3,0,0]=(1.0110556058)*x[0]+(-0.488112488916)*x[1]+(0.243005554591)*x[2]  
         s[2,3,0,1]=(-0.16668051279)*x[0]+(0.178067528024)*x[1]+(0.969038052731)*x[2]  
         s[2,3,1,0]=(-0.00345650882131)*x[0]+(-0.941671547756)*x[1]+(-0.49908897105)*x[2]  
         s[2,3,1,1]=(0.716683430797)*x[0]+(-0.585708024289)*x[1]+(-1.19073441986)*x[2]  
         s[2,3,2,0]=(0.400515369791)*x[0]+(-0.454556618814)*x[1]+(0.0782324352019)*x[2]  
         s[2,3,2,1]=(-0.164628093414)*x[0]+(-1.26464027792)*x[1]+(0.179511210919)*x[2]  
         s[2,4,0,0]=(1.33277550072)*x[0]+(1.18570575409)*x[1]+(0.381346013717)*x[2]  
         s[2,4,0,1]=(0.588290284687)*x[0]+(-1.08302445047)*x[1]+(0.166898904485)*x[2]  
         s[2,4,1,0]=(0.131178111015)*x[0]+(-0.749855470189)*x[1]+(-0.1247474719)*x[2]  
         s[2,4,1,1]=(-0.97245336122)*x[0]+(0.873932906896)*x[1]+(0.120264062027)*x[2]  
         s[2,4,2,0]=(-0.722531128456)*x[0]+(0.19636289816)*x[1]+(-0.907945347107)*x[2]  
         s[2,4,2,1]=(-0.711111750197)*x[0]+(0.31947094036)*x[1]+(-1.79333697163)*x[2]  
         s[3,0,0,0]=(-0.184519023765)*x[0]+(0.680221159423)*x[1]+(-0.0244123658903)*x[2]  
         s[3,0,0,1]=(-1.14573637546)*x[0]+(0.0616977700293)*x[1]+(-0.654808111844)*x[2]  
         s[3,0,1,0]=(-1.09297543018)*x[0]+(-1.04184353717)*x[1]+(0.384120100538)*x[2]  
         s[3,0,1,1]=(0.105247846819)*x[0]+(-1.31600150124)*x[1]+(1.43496073616)*x[2]  
         s[3,0,2,0]=(0.881148598911)*x[0]+(-0.478723216871)*x[1]+(-0.0746344543132)*x[2]  
         s[3,0,2,1]=(-1.20828681587)*x[0]+(-1.65808839437)*x[1]+(-0.636678098535)*x[2]  
         s[3,1,0,0]=(-0.213394309668)*x[0]+(-0.240354748844)*x[1]+(0.117282970374)*x[2]  
         s[3,1,0,1]=(1.37462845901)*x[0]+(-0.41583894581)*x[1]+(-0.625626047701)*x[2]  
         s[3,1,1,0]=(1.83991491983)*x[0]+(1.2778674571)*x[1]+(1.35465906139)*x[2]  
         s[3,1,1,1]=(1.58168546715)*x[0]+(0.829809996131)*x[1]+(0.681232260732)*x[2]  
         s[3,1,2,0]=(-0.0212907664121)*x[0]+(1.00109823691)*x[1]+(-1.30845432825)*x[2]  
         s[3,1,2,1]=(0.169920360674)*x[0]+(-0.864995850094)*x[1]+(0.302979947072)*x[2]  
         s[3,2,0,0]=(-0.154084636739)*x[0]+(0.319647474298)*x[1]+(-1.23506947259)*x[2]  
         s[3,2,0,1]=(-0.199216213818)*x[0]+(1.28921202953)*x[1]+(1.65805122541)*x[2]  
         s[3,2,1,0]=(-1.86774194364)*x[0]+(-0.101723263166)*x[1]+(-0.526029332636)*x[2]  
         s[3,2,1,1]=(-0.177960964857)*x[0]+(-0.899073564225)*x[1]+(0.551378002191)*x[2]  
         s[3,2,2,0]=(0.18491319197)*x[0]+(-0.286906366286)*x[1]+(0.583859098776)*x[2]  
         s[3,2,2,1]=(0.38623837272)*x[0]+(-0.653272502002)*x[1]+(-1.46718517275)*x[2]  
         s[3,3,0,0]=(0.0494572779834)*x[0]+(-0.0566099666381)*x[1]+(-0.113874384717)*x[2]  
         s[3,3,0,1]=(0.0241152098269)*x[0]+(-0.317061594612)*x[1]+(1.23769551101)*x[2]  
         s[3,3,1,0]=(-0.107294616786)*x[0]+(-0.651410283508)*x[1]+(0.833104181804)*x[2]  
         s[3,3,1,1]=(0.16676828757)*x[0]+(-0.670496617303)*x[1]+(1.15686719798)*x[2]  
         s[3,3,2,0]=(0.159950143242)*x[0]+(0.0436823700228)*x[1]+(-0.645027680285)*x[2]  
         s[3,3,2,1]=(-1.2697347822)*x[0]+(1.22938250997)*x[1]+(0.208587928792)*x[2]  
         s[3,4,0,0]=(0.575105413412)*x[0]+(-1.44998456404)*x[1]+(-0.516125694177)*x[2]  
         s[3,4,0,1]=(0.0387618783003)*x[0]+(0.859152861676)*x[1]+(1.29847202073)*x[2]  
         s[3,4,1,0]=(-0.842510438531)*x[0]+(0.191878858518)*x[1]+(-0.73453059399)*x[2]  
         s[3,4,1,1]=(1.41435810392)*x[0]+(-0.855734345577)*x[1]+(-0.425917153945)*x[2]  
         s[3,4,2,0]=(-0.58228358663)*x[0]+(0.00936548588525)*x[1]+(-1.38536320116)*x[2]  
         s[3,4,2,1]=(0.0419678913201)*x[0]+(1.02999559903)*x[1]+(-0.464745184871)*x[2]  
         ref[0,0,0,0]=(1.30172410662)/(o+1.)+(0.647406976573)  
         ref[0,0,0,1]=(-1.09442521373)/(o+1.)+(-0.120876402476)  
         ref[0,0,1,0]=(2.01757642043)/(o+1.)+(-0.0865864392547)  
         ref[0,0,1,1]=(1.80034002198)/(o+1.)+(-0.216430392892)  
         ref[0,0,2,0]=(1.13142112916)/(o+1.)+(-1.12383935547)  
         ref[0,0,2,1]=(-0.905515986966)/(o+1.)+(0.34830679267)  
         ref[0,1,0,0]=(-0.210441134504)/(o+1.)+(-0.698200622791)  
         ref[0,1,0,1]=(0.360807961621)/(o+1.)+(0.409026621036)  
         ref[0,1,1,0]=(1.5147969883)/(o+1.)+(0.0713001057429)  
         ref[0,1,1,1]=(0.396123567843)/(o+1.)+(-0.511105156634)  
         ref[0,1,2,0]=(0.184468760768)/(o+1.)+(0.448555674728)  
         ref[0,1,2,1]=(-0.133892978353)/(o+1.)+(-0.510937201862)  
         ref[0,2,0,0]=(1.66137009462)/(o+1.)+(0.493389512541)  
         ref[0,2,0,1]=(0.358452769174)/(o+1.)+(-0.982664817753)  
         ref[0,2,1,0]=(0.966434135345)/(o+1.)+(-0.240061752665)  
         ref[0,2,1,1]=(-0.401753883503)/(o+1.)+(0.362102239635)  
         ref[0,2,2,0]=(-0.0153619747046)/(o+1.)+(0.221454775071)  
         ref[0,2,2,1]=(-0.104138117282)/(o+1.)+(-0.119505133417)  
         ref[0,3,0,0]=(-0.966204569194)/(o+1.)+(0.662141336872)  
         ref[0,3,0,1]=(0.587661220327)/(o+1.)+(0.10506616437)  
         ref[0,3,1,0]=(2.02288199931)/(o+1.)+(-0.337539903289)  
         ref[0,3,1,1]=(-1.78842825396)/(o+1.)+(-0.0844686616883)  
         ref[0,3,2,0]=(0.927282266945)/(o+1.)+(0.190527509786)  
         ref[0,3,2,1]=(-0.679518039292)/(o+1.)+(-0.796251782745)  
         ref[0,4,0,0]=(0.555388124049)/(o+1.)+(0.562028482163)  
         ref[0,4,0,1]=(0.0870397234082)/(o+1.)+(0.565035905435)  
         ref[0,4,1,0]=(-1.1463502212)/(o+1.)+(-0.0970212431374)  
         ref[0,4,1,1]=(0.233233715042)/(o+1.)+(-0.729602468086)  
         ref[0,4,2,0]=(-0.782889963002)/(o+1.)+(0.781502066786)  
         ref[0,4,2,1]=(0.763433249649)/(o+1.)+(-1.2651257696)  
         ref[1,0,0,0]=(-1.00441831898)/(o+1.)+(-0.685739920821)  
         ref[1,0,0,1]=(0.751247546824)/(o+1.)+(0.456810363824)  
         ref[1,0,1,0]=(2.22764882334)/(o+1.)+(-0.372219507613)  
         ref[1,0,1,1]=(-1.19623631804)/(o+1.)+(0.39718929366)  
         ref[1,0,2,0]=(-1.60343741738)/(o+1.)+(-0.250677115636)  
         ref[1,0,2,1]=(-1.25680789752)/(o+1.)+(0.61750260882)  
         ref[1,1,0,0]=(-1.45519189991)/(o+1.)+(0.681606304054)  
         ref[1,1,0,1]=(0.840628495308)/(o+1.)+(-0.678283412578)  
         ref[1,1,1,0]=(1.41826768667)/(o+1.)+(0.144796647431)  
         ref[1,1,1,1]=(-0.933723251106)/(o+1.)+(0.451975702985)  
         ref[1,1,2,0]=(-0.408324994487)/(o+1.)+(0.39165840948)  
         ref[1,1,2,1]=(1.23290517672)/(o+1.)+(0.323935107053)  
         ref[1,2,0,0]=(0.825483086179)/(o+1.)+(0.0301218157877)  
         ref[1,2,0,1]=(-0.0793934768662)/(o+1.)+(-0.142521007854)  
         ref[1,2,1,0]=(-0.0709650957035)/(o+1.)+(-0.874854727116)  
         ref[1,2,1,1]=(1.10714952407)/(o+1.)+(-0.208486520392)  
         ref[1,2,2,0]=(0.99013461187)/(o+1.)+(0.359768530582)  
         ref[1,2,2,1]=(0.0356627876162)/(o+1.)+(0.488634391872)  
         ref[1,3,0,0]=(-0.474442326803)/(o+1.)+(-0.499450411015)  
         ref[1,3,0,1]=(-0.673232992552)/(o+1.)+(-1.16158008694)  
         ref[1,3,1,0]=(0.411652221393)/(o+1.)+(0.966457956295)  
         ref[1,3,1,1]=(-1.76698398732)/(o+1.)+(-0.559250216883)  
         ref[1,3,2,0]=(1.9874048718)/(o+1.)+(-0.740838072)  
         ref[1,3,2,1]=(0.661784629796)/(o+1.)+(0.216931076303)  
         ref[1,4,0,0]=(-0.513029515019)/(o+1.)+(0.0818103062045)  
         ref[1,4,0,1]=(0.282755142694)/(o+1.)+(-0.261370981611)  
         ref[1,4,1,0]=(-1.96973437805)/(o+1.)+(-0.478746163042)  
         ref[1,4,1,1]=(0.908774952181)/(o+1.)+(0.0465858502998)  
         ref[1,4,2,0]=(1.3422757017)/(o+1.)+(-0.0996743832723)  
         ref[1,4,2,1]=(1.21609351443)/(o+1.)+(-0.349173948065)  
         ref[2,0,0,0]=(-1.01744592956)/(o+1.)+(-0.923588464944)  
         ref[2,0,0,1]=(1.10931736222)/(o+1.)+(0.224335478673)  
         ref[2,0,1,0]=(-0.416479828321)/(o+1.)+(-0.285640270869)  
         ref[2,0,1,1]=(-1.5671174369)/(o+1.)+(-0.467268571897)  
         ref[2,0,2,0]=(-0.274214960025)/(o+1.)+(0.163118815513)  
         ref[2,0,2,1]=(0.000680528469817)/(o+1.)+(0.0788535606642)  
         ref[2,1,0,0]=(-0.844192475139)/(o+1.)+(-0.262252149651)  
         ref[2,1,0,1]=(0.69399848864)/(o+1.)+(-0.395963008628)  
         ref[2,1,1,0]=(-1.37742489692)/(o+1.)+(-0.128468449379)  
         ref[2,1,1,1]=(0.282095133276)/(o+1.)+(-0.641487907195)  
         ref[2,1,2,0]=(-1.4727375549)/(o+1.)+(0.343315122764)  
         ref[2,1,2,1]=(0.67637649169)/(o+1.)+(0.0439030384195)  
         ref[2,2,0,0]=(1.58598306034)/(o+1.)+(0.257398552088)  
         ref[2,2,0,1]=(-0.187654980952)/(o+1.)+(0.677607655001)  
         ref[2,2,1,0]=(0.225457027395)/(o+1.)+(0.221493863079)  
         ref[2,2,1,1]=(-1.66885547416)/(o+1.)+(-0.372038995202)  
         ref[2,2,2,0]=(-1.42708510165)/(o+1.)+(0.410904476533)  
         ref[2,2,2,1]=(0.352696956576)/(o+1.)+(-0.252899306452)  
         ref[2,3,0,0]=(0.266365999523)/(o+1.)+(0.249791335977)  
         ref[2,3,0,1]=(0.926084735451)/(o+1.)+(0.0271701662571)  
         ref[2,3,1,0]=(-0.138787407751)/(o+1.)+(-0.652714809939)  
         ref[2,3,1,1]=(-0.834750293031)/(o+1.)+(-0.112504360161)  
         ref[2,3,2,0]=(-0.806210182586)/(o+1.)+(0.415200684382)  
         ref[2,3,2,1]=(0.577899253552)/(o+1.)+(-0.913828206984)  
         ref[2,4,0,0]=(1.38802720612)/(o+1.)+(0.755900031203)  
         ref[2,4,0,1]=(-1.33634216788)/(o+1.)+(0.504253453293)  
         ref[2,4,1,0]=(-1.13393506986)/(o+1.)+(0.195255119392)  
         ref[2,4,1,1]=(-0.384732222354)/(o+1.)+(0.203237915028)  
         ref[2,4,2,0]=(-1.18866097183)/(o+1.)+(-0.122726302784)  
         ref[2,4,2,1]=(-1.41914128138)/(o+1.)+(-0.382918250045)  
         ref[3,0,0,0]=(-1.3617379499)/(o+1.)+(0.916513859836)  
         ref[3,0,0,1]=(-0.577580679368)/(o+1.)+(-0.580633018955)  
         ref[3,0,1,0]=(-0.730926522369)/(o+1.)+(-0.50988617222)  
         ref[3,0,1,1]=(0.852352706539)/(o+1.)+(-0.314072812402)  
         ref[3,0,2,0]=(0.63914695576)/(o+1.)+(-0.155678014016)  
         ref[3,0,2,1]=(-2.31555597527)/(o+1.)+(-0.593748666755)  
         ref[3,1,0,0]=(-0.31308710102)/(o+1.)+(-0.011689493559)  
         ref[3,1,0,1]=(0.565049631081)/(o+1.)+(-0.115943082793)  
         ref[3,1,1,0]=(1.76264026827)/(o+1.)+(1.35490058502)  
         ref[3,1,1,1]=(1.34557111025)/(o+1.)+(0.873578306883)  
         ref[3,1,2,0]=(0.924587947935)/(o+1.)+(-0.626617402844)  
         ref[3,1,2,1]=(-0.679695689354)/(o+1.)+(0.143800073503)  
         ref[3,2,0,0]=(-0.408824291494)/(o+1.)+(-0.330341171766)  
         ref[3,2,0,1]=(1.02728720579)/(o+1.)+(0.860379917667)  
         ref[3,2,1,0]=(-1.99227170213)/(o+1.)+(-0.251611418656)  
         ref[3,2,1,1]=(-0.844161339595)/(o+1.)+(0.159252406352)  
         ref[3,2,2,0]=(1.52009831693)/(o+1.)+(-0.519116196235)  
         ref[3,2,2,1]=(0.323553722724)/(o+1.)+(-1.02888651238)  
         ref[3,3,0,0]=(-1.39647666034)/(o+1.)+(0.637724793483)  
         ref[3,3,0,1]=(0.960901654854)/(o+1.)+(-0.00807626431577)  
         ref[3,3,1,0]=(0.383998350003)/(o+1.)+(-0.154799534246)  
         ref[3,3,1,1]=(-0.851062083214)/(o+1.)+(0.752100475729)  
         ref[3,3,2,0]=(0.788418151505)/(o+1.)+(-0.614906659263)  
         ref[3,3,2,1]=(-0.1028922667)/(o+1.)+(0.135563961629)  
         ref[3,4,0,0]=(-0.540240088251)/(o+1.)+(-0.425382378277)  
         ref[3,4,0,1]=(0.236730341461)/(o+1.)+(0.979828209623)  
         ref[3,4,1,0]=(-0.9880898216)/(o+1.)+(-0.198536176202)  
         ref[3,4,1,1]=(1.06221574228)/(o+1.)+(-0.46475456894)  
         ref[3,4,2,0]=(-1.89471538439)/(o+1.)+(-0.0317829587581)  
         ref[3,4,2,1]=(-1.20699948566)/(o+1.)+(0.907108895566)  
       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_onFunction_fromSymbol_Function_rank0(self):  
       """  
       tests integral of rank 0 Symbol on the Function  
   
       assumptions: Function(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=Function(self.domain)  
       w=Function(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=())  
       s=Data(0,(),w)  
       if dim==2:  
         s=(-0.107044842683)*x[0]**o+(-0.198407800146)*x[0]+(0.877472712926)*x[1]**o+(-0.647405831691)*x[1]  
         ref=(0.770427870243)/(o+1.)+(-0.422906815918)  
       else:  
         s=(-0.559912240782)*x[0]**o+(0.766296134438)*x[0]+(-0.110980192077)*x[1]**o+(-0.608865520099)*x[1]+(0.672667086497)*x[2]**o+(0.334463167521)*x[2]  
         ref=(0.00177465363795)/(o+1.)+(0.24594689093)  
       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_onFunction_fromSymbol_Function_rank1(self):  
       """  
       tests integral of rank 1 Symbol on the Function  
   
       assumptions: Function(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=Function(self.domain)  
       w=Function(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.416213605972)*x[0]**o+(0.77813592218)*x[0]+(-0.222437793488)*x[1]**o+(-0.933738289486)*x[1]  
         s[1]=(0.455257144475)*x[0]**o+(-0.622417334686)*x[0]+(0.806205896623)*x[1]**o+(0.675691766701)*x[1]  
         ref[0]=(-0.638651399461)/(o+1.)+(-0.0778011836529)  
         ref[1]=(1.2614630411)/(o+1.)+(0.0266372160075)  
       else:  
         s[0]=(0.753437228142)*x[0]**o+(0.148952810054)*x[0]+(0.179818865036)*x[1]**o+(0.490547213201)*x[1]+(0.977606414203)*x[2]**o+(0.0928058817324)*x[2]  
         s[1]=(0.964988411956)*x[0]**o+(0.446937048611)*x[0]+(-0.110739634254)*x[1]**o+(0.906002899971)*x[1]+(0.666451027663)*x[2]**o+(0.270230684952)*x[2]  
         ref[0]=(1.91086250738)/(o+1.)+(0.366152952493)  
         ref[1]=(1.52069980537)/(o+1.)+(0.811585316767)  
       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_onFunction_fromSymbol_Function_rank2(self):  
       """  
       tests integral of rank 2 Symbol on the Function  
   
       assumptions: Function(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=Function(self.domain)  
       w=Function(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.08214321783)*x[0]**o+(-0.496010136907)*x[0]+(-0.661161523248)*x[1]**o+(-0.151256978215)*x[1]  
         s[0,1]=(0.00779835697637)*x[0]**o+(0.307130297185)*x[0]+(-0.111598029557)*x[1]**o+(-0.00186165192551)*x[1]  
         s[0,2]=(0.0978324862172)*x[0]**o+(-0.746313762674)*x[0]+(0.519229413642)*x[1]**o+(0.892797139942)*x[1]  
         s[0,3]=(-0.598407415713)*x[0]**o+(0.801307410865)*x[0]+(0.894609711877)*x[1]**o+(0.0520830645255)*x[1]  
         s[0,4]=(0.580674315696)*x[0]**o+(-0.000690290928564)*x[0]+(0.909550857813)*x[1]**o+(-0.766950054968)*x[1]  
         s[1,0]=(0.293745692233)*x[0]**o+(0.581206623889)*x[0]+(0.154848883067)*x[1]**o+(0.260519542891)*x[1]  
         s[1,1]=(0.81822409326)*x[0]**o+(0.0527752269091)*x[0]+(0.960312253084)*x[1]**o+(-0.844575939421)*x[1]  
         s[1,2]=(-0.186016521867)*x[0]**o+(0.316565783375)*x[0]+(-0.206256264607)*x[1]**o+(0.951167349262)*x[1]  
         s[1,3]=(-0.355700637442)*x[0]**o+(-0.636455488757)*x[0]+(0.623605194008)*x[1]**o+(-0.0426220883099)*x[1]  
         s[1,4]=(0.72832697443)*x[0]**o+(-0.349553513535)*x[0]+(-0.128283294734)*x[1]**o+(-0.280029190018)*x[1]  
         s[2,0]=(0.634737331487)*x[0]**o+(-0.0784762897091)*x[0]+(0.49107451702)*x[1]**o+(-0.927830147754)*x[1]  
         s[2,1]=(-0.561516427218)*x[0]**o+(0.414180445476)*x[0]+(-0.32846350728)*x[1]**o+(0.653302722231)*x[1]  
         s[2,2]=(-0.285665357177)*x[0]**o+(-0.495353890909)*x[0]+(-0.300417232522)*x[1]**o+(0.828720486127)*x[1]  
         s[2,3]=(0.582282364197)*x[0]**o+(-0.491365235361)*x[0]+(-0.481532775048)*x[1]**o+(0.843340014315)*x[1]  
         s[2,4]=(0.467528444795)*x[0]**o+(-0.617430509987)*x[0]+(0.0370576618542)*x[1]**o+(0.124933927604)*x[1]  
         s[3,0]=(0.76865308901)*x[0]**o+(0.270205155941)*x[0]+(0.239796830473)*x[1]**o+(-0.732593342574)*x[1]  
         s[3,1]=(0.276346458614)*x[0]**o+(-0.637344640378)*x[0]+(-0.697338900523)*x[1]**o+(0.136084835992)*x[1]  
         s[3,2]=(-0.932808156816)*x[0]**o+(0.296855273797)*x[0]+(-0.417934077535)*x[1]**o+(0.897857223334)*x[1]  
         s[3,3]=(0.358813012298)*x[0]**o+(-0.421306401815)*x[0]+(0.682226516534)*x[1]**o+(-0.0533913429448)*x[1]  
         s[3,4]=(0.27862707257)*x[0]**o+(-0.227499516484)*x[0]+(0.502409049994)*x[1]**o+(0.348218429657)*x[1]  
         ref[0,0]=(-0.579018305418)/(o+1.)+(-0.323633557561)  
         ref[0,1]=(-0.103799672581)/(o+1.)+(0.15263432263)  
         ref[0,2]=(0.617061899859)/(o+1.)+(0.0732416886339)  
         ref[0,3]=(0.296202296164)/(o+1.)+(0.426695237695)  
         ref[0,4]=(1.49022517351)/(o+1.)+(-0.383820172948)  
         ref[1,0]=(0.4485945753)/(o+1.)+(0.42086308339)  
         ref[1,1]=(1.77853634634)/(o+1.)+(-0.395900356256)  
         ref[1,2]=(-0.392272786474)/(o+1.)+(0.633866566319)  
         ref[1,3]=(0.267904556566)/(o+1.)+(-0.339538788533)  
         ref[1,4]=(0.600043679696)/(o+1.)+(-0.314791351776)  
         ref[2,0]=(1.12581184851)/(o+1.)+(-0.503153218732)  
         ref[2,1]=(-0.889979934498)/(o+1.)+(0.533741583854)  
         ref[2,2]=(-0.586082589699)/(o+1.)+(0.166683297609)  
         ref[2,3]=(0.100749589149)/(o+1.)+(0.175987389477)  
         ref[2,4]=(0.504586106649)/(o+1.)+(-0.246248291192)  
         ref[3,0]=(1.00844991948)/(o+1.)+(-0.231194093316)  
         ref[3,1]=(-0.420992441909)/(o+1.)+(-0.250629902193)  
         ref[3,2]=(-1.35074223435)/(o+1.)+(0.597356248566)  
         ref[3,3]=(1.04103952883)/(o+1.)+(-0.23734887238)  
         ref[3,4]=(0.781036122564)/(o+1.)+(0.0603594565866)  
       else:  
         s[0,0]=(-0.941295734032)*x[0]**o+(0.396841358423)*x[0]+(-0.490021992176)*x[1]**o+(-0.346405280728)*x[1]+(-0.201846160921)*x[2]**o+(0.20749764579)*x[2]  
         s[0,1]=(-0.88981448497)*x[0]**o+(-0.884955504659)*x[0]+(0.182259548742)*x[1]**o+(-0.235489618403)*x[1]+(-0.977189329039)*x[2]**o+(-0.514950614838)*x[2]  
         s[0,2]=(0.328187150969)*x[0]**o+(-0.448497961254)*x[0]+(0.472389791923)*x[1]**o+(-0.624930304822)*x[1]+(0.265474988322)*x[2]**o+(-0.0214969683756)*x[2]  
         s[0,3]=(-0.735757404485)*x[0]**o+(-0.92658492028)*x[0]+(0.684533158897)*x[1]**o+(-0.865066520203)*x[1]+(-0.190890639018)*x[2]**o+(-0.529642573907)*x[2]  
         s[0,4]=(0.955420842735)*x[0]**o+(0.773074765628)*x[0]+(-0.382656468864)*x[1]**o+(0.47181739927)*x[1]+(0.873841536673)*x[2]**o+(-0.526372620067)*x[2]  
         s[1,0]=(0.770067221954)*x[0]**o+(-0.406438793272)*x[0]+(0.51351865241)*x[1]**o+(-0.856834133418)*x[1]+(0.589461089026)*x[2]**o+(-0.141812408947)*x[2]  
         s[1,1]=(-0.812514809415)*x[0]**o+(-0.456460678755)*x[0]+(0.430628764669)*x[1]**o+(0.262068556418)*x[1]+(0.597424763719)*x[2]**o+(-0.157908736594)*x[2]  
         s[1,2]=(-0.46727482012)*x[0]**o+(-0.744512472884)*x[0]+(-0.365664650476)*x[1]**o+(-0.361046498637)*x[1]+(-0.166284258648)*x[2]**o+(0.528262791587)*x[2]  
         s[1,3]=(-0.273755634801)*x[0]**o+(-0.15873969342)*x[0]+(-0.368357879665)*x[1]**o+(0.283273650468)*x[1]+(-0.0175031061849)*x[2]**o+(-0.0417868805286)*x[2]  
         s[1,4]=(0.349815667052)*x[0]**o+(-0.175629838767)*x[0]+(0.272305468439)*x[1]**o+(-0.750728619331)*x[1]+(0.0723037064016)*x[2]**o+(0.911924754086)*x[2]  
         s[2,0]=(0.834136592552)*x[0]**o+(0.227306622837)*x[0]+(-0.468357820454)*x[1]**o+(0.0429839240965)*x[1]+(0.397233264579)*x[2]**o+(0.645297775174)*x[2]  
         s[2,1]=(-0.420265217156)*x[0]**o+(-0.762906499224)*x[0]+(0.16960694356)*x[1]**o+(0.381251517238)*x[1]+(-0.740637261618)*x[2]**o+(-0.437283161876)*x[2]  
         s[2,2]=(-0.957535003492)*x[0]**o+(0.546534458865)*x[0]+(0.10634355782)*x[1]**o+(0.0575530053655)*x[1]+(0.395304821296)*x[2]**o+(0.0507237509151)*x[2]  
         s[2,3]=(0.130545158576)*x[0]**o+(-0.297688721316)*x[0]+(-0.193136907135)*x[1]**o+(-0.530687107912)*x[1]+(0.891112852449)*x[2]**o+(0.89025257856)*x[2]  
         s[2,4]=(-0.452227707094)*x[0]**o+(0.518745990389)*x[0]+(-0.848908958687)*x[1]**o+(-0.984222753382)*x[1]+(-0.725703746452)*x[2]**o+(0.29370062408)*x[2]  
         s[3,0]=(0.451818718553)*x[0]**o+(0.15228149344)*x[0]+(0.309329014013)*x[1]**o+(-0.629074550954)*x[1]+(0.925898897131)*x[2]**o+(-0.530392928354)*x[2]  
         s[3,1]=(0.48661045622)*x[0]**o+(0.362115939707)*x[0]+(0.461789600557)*x[1]**o+(-0.0265394801756)*x[1]+(-0.52060582127)*x[2]**o+(0.847046142749)*x[2]  
         s[3,2]=(0.356328974486)*x[0]**o+(0.735492369055)*x[0]+(0.833634465835)*x[1]**o+(-0.603533125221)*x[1]+(-0.799865132292)*x[2]**o+(0.255351535539)*x[2]  
         s[3,3]=(0.821371453867)*x[0]**o+(0.360956876043)*x[0]+(0.0191507582216)*x[1]**o+(-0.995259844736)*x[1]+(-0.00388518722366)*x[2]**o+(-0.0360171649464)*x[2]  
         s[3,4]=(-0.248806545065)*x[0]**o+(-0.598745625081)*x[0]+(0.722047538053)*x[1]**o+(-0.840877899002)*x[1]+(0.920023026949)*x[2]**o+(0.503521861458)*x[2]  
         ref[0,0]=(-1.63316388713)/(o+1.)+(0.128966861742)  
         ref[0,1]=(-1.68474426527)/(o+1.)+(-0.81769786895)  
         ref[0,2]=(1.06605193121)/(o+1.)+(-0.547462617226)  
         ref[0,3]=(-0.242114884606)/(o+1.)+(-1.16064700719)  
         ref[0,4]=(1.44660591054)/(o+1.)+(0.359259772415)  
         ref[1,0]=(1.87304696339)/(o+1.)+(-0.702542667819)  
         ref[1,1]=(0.215538718973)/(o+1.)+(-0.176150429465)  
         ref[1,2]=(-0.999223729244)/(o+1.)+(-0.288648089967)  
         ref[1,3]=(-0.659616620651)/(o+1.)+(0.04137353826)  
         ref[1,4]=(0.694424841892)/(o+1.)+(-0.00721685200611)  
         ref[2,0]=(0.763012036677)/(o+1.)+(0.457794161054)  
         ref[2,1]=(-0.991295535214)/(o+1.)+(-0.409469071931)  
         ref[2,2]=(-0.455886624375)/(o+1.)+(0.327405607573)  
         ref[2,3]=(0.82852110389)/(o+1.)+(0.030938374666)  
         ref[2,4]=(-2.02684041223)/(o+1.)+(-0.0858880694563)  
         ref[3,0]=(1.6870466297)/(o+1.)+(-0.503592992934)  
         ref[3,1]=(0.427794235507)/(o+1.)+(0.59131130114)  
         ref[3,2]=(0.39009830803)/(o+1.)+(0.193655389686)  
         ref[3,3]=(0.836637024865)/(o+1.)+(-0.33516006682)  
         ref[3,4]=(1.39326401994)/(o+1.)+(-0.468050831312)  
       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_onFunction_fromSymbol_Function_rank3(self):  
       """  
       tests integral of rank 3 Symbol on the Function  
   
       assumptions: Function(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=Function(self.domain)  
       w=Function(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.944773955793)*x[0]**o+(-0.662996681032)*x[0]+(-0.442867713759)*x[1]**o+(-0.229023301726)*x[1]  
         s[0,0,1]=(0.0407144183428)*x[0]**o+(-0.669891322439)*x[0]+(0.920328407938)*x[1]**o+(-0.320681600926)*x[1]  
         s[0,1,0]=(0.179693170721)*x[0]**o+(-0.671664515028)*x[0]+(0.525108213743)*x[1]**o+(0.310882938487)*x[1]  
         s[0,1,1]=(-0.0540671676637)*x[0]**o+(0.000853108264254)*x[0]+(-0.370081882537)*x[1]**o+(-0.138484250063)*x[1]  
         s[1,0,0]=(0.631472269828)*x[0]**o+(-0.294848092138)*x[0]+(0.0730087097944)*x[1]**o+(0.0292051228565)*x[1]  
         s[1,0,1]=(-0.576009492093)*x[0]**o+(-0.228105833611)*x[0]+(-0.0563734559287)*x[1]**o+(-0.242583876037)*x[1]  
         s[1,1,0]=(-0.597734903158)*x[0]**o+(0.960078413053)*x[0]+(0.881951380528)*x[1]**o+(-0.186121672274)*x[1]  
         s[1,1,1]=(-0.117005971726)*x[0]**o+(-0.809886380446)*x[0]+(-0.981092676193)*x[1]**o+(0.0636030759105)*x[1]  
         s[2,0,0]=(-0.197553649616)*x[0]**o+(-0.820287165629)*x[0]+(0.359670409851)*x[1]**o+(-0.861222386581)*x[1]  
         s[2,0,1]=(0.968998274457)*x[0]**o+(0.376230063695)*x[0]+(0.283097885679)*x[1]**o+(-0.128262765246)*x[1]  
         s[2,1,0]=(0.0310410423851)*x[0]**o+(0.611929570715)*x[0]+(-0.972311035606)*x[1]**o+(-0.568277782449)*x[1]  
         s[2,1,1]=(0.95074765381)*x[0]**o+(0.338991372672)*x[0]+(0.264103717561)*x[1]**o+(0.370834284282)*x[1]  
         s[3,0,0]=(-0.664867197259)*x[0]**o+(0.917684307761)*x[0]+(-0.319774527149)*x[1]**o+(0.432915185753)*x[1]  
         s[3,0,1]=(-0.162944024583)*x[0]**o+(-0.123907346782)*x[0]+(0.325356901629)*x[1]**o+(0.90249028492)*x[1]  
         s[3,1,0]=(-0.135439910119)*x[0]**o+(0.920226918882)*x[0]+(0.112667508952)*x[1]**o+(0.710942378416)*x[1]  
         s[3,1,1]=(-0.370025988485)*x[0]**o+(0.146841174972)*x[0]+(-0.209033207026)*x[1]**o+(0.270439136519)*x[1]  
         s[4,0,0]=(0.724119312565)*x[0]**o+(0.726636721509)*x[0]+(-0.643509558883)*x[1]**o+(-0.544447102654)*x[1]  
         s[4,0,1]=(-0.563641108028)*x[0]**o+(-0.320916186803)*x[0]+(0.935527371187)*x[1]**o+(0.535917271795)*x[1]  
         s[4,1,0]=(-0.482028335236)*x[0]**o+(-0.510759210235)*x[0]+(-0.105477148218)*x[1]**o+(0.54069501931)*x[1]  
         s[4,1,1]=(0.305620947599)*x[0]**o+(-0.724738374933)*x[0]+(0.470881233144)*x[1]**o+(-0.705410563798)*x[1]  
         s[5,0,0]=(0.168173718235)*x[0]**o+(0.578831386242)*x[0]+(-0.869711732793)*x[1]**o+(-0.176143888818)*x[1]  
         s[5,0,1]=(-0.228160489841)*x[0]**o+(-0.0297036971933)*x[0]+(0.391702396499)*x[1]**o+(0.875713079041)*x[1]  
         s[5,1,0]=(-0.910154283353)*x[0]**o+(-0.0651085103088)*x[0]+(0.0884987382756)*x[1]**o+(-0.937409873275)*x[1]  
         s[5,1,1]=(0.41106472762)*x[0]**o+(-0.801661249269)*x[0]+(0.201137556319)*x[1]**o+(-0.665423718838)*x[1]  
         ref[0,0,0]=(-1.38764166955)/(o+1.)+(-0.446009991379)  
         ref[0,0,1]=(0.961042826281)/(o+1.)+(-0.495286461682)  
         ref[0,1,0]=(0.704801384464)/(o+1.)+(-0.180390788271)  
         ref[0,1,1]=(-0.424149050201)/(o+1.)+(-0.0688155708996)  
         ref[1,0,0]=(0.704480979622)/(o+1.)+(-0.132821484641)  
         ref[1,0,1]=(-0.632382948021)/(o+1.)+(-0.235344854824)  
         ref[1,1,0]=(0.28421647737)/(o+1.)+(0.386978370389)  
         ref[1,1,1]=(-1.09809864792)/(o+1.)+(-0.373141652268)  
         ref[2,0,0]=(0.162116760235)/(o+1.)+(-0.840754776105)  
         ref[2,0,1]=(1.25209616014)/(o+1.)+(0.123983649224)  
         ref[2,1,0]=(-0.941269993221)/(o+1.)+(0.0218258941331)  
         ref[2,1,1]=(1.21485137137)/(o+1.)+(0.354912828477)  
         ref[3,0,0]=(-0.984641724408)/(o+1.)+(0.675299746757)  
         ref[3,0,1]=(0.162412877046)/(o+1.)+(0.389291469069)  
         ref[3,1,0]=(-0.0227724011669)/(o+1.)+(0.815584648649)  
         ref[3,1,1]=(-0.579059195511)/(o+1.)+(0.208640155746)  
         ref[4,0,0]=(0.0806097536818)/(o+1.)+(0.0910948094271)  
         ref[4,0,1]=(0.371886263159)/(o+1.)+(0.107500542496)  
         ref[4,1,0]=(-0.587505483453)/(o+1.)+(0.0149679045376)  
         ref[4,1,1]=(0.776502180743)/(o+1.)+(-0.715074469366)  
         ref[5,0,0]=(-0.701538014558)/(o+1.)+(0.201343748712)  
         ref[5,0,1]=(0.163541906658)/(o+1.)+(0.423004690924)  
         ref[5,1,0]=(-0.821655545078)/(o+1.)+(-0.501259191792)  
         ref[5,1,1]=(0.612202283939)/(o+1.)+(-0.733542484054)  
       else:  
         s[0,0,0]=(-0.0829784527698)*x[0]**o+(-0.332549632616)*x[0]+(0.255962043751)*x[1]**o+(-0.176352635053)*x[1]+(-0.954055133743)*x[2]**o+(-0.898668627164)*x[2]  
         s[0,0,1]=(-0.0566639977041)*x[0]**o+(0.64899823634)*x[0]+(0.339703741475)*x[1]**o+(-0.754613713569)*x[1]+(0.379536135428)*x[2]**o+(0.118057489576)*x[2]  
         s[0,1,0]=(-0.718453260796)*x[0]**o+(0.997156187689)*x[0]+(0.914514642799)*x[1]**o+(-0.633873909376)*x[1]+(-0.485691739694)*x[2]**o+(0.415370908143)*x[2]  
         s[0,1,1]=(0.553256681553)*x[0]**o+(-0.191413319548)*x[0]+(0.800894762679)*x[1]**o+(0.919882584486)*x[1]+(0.127165880997)*x[2]**o+(-0.690488492514)*x[2]  
         s[1,0,0]=(-0.142765560936)*x[0]**o+(-0.303407652797)*x[0]+(0.989394601479)*x[1]**o+(-0.484741465949)*x[1]+(0.732648062756)*x[2]**o+(-0.678857629867)*x[2]  
         s[1,0,1]=(0.288139139594)*x[0]**o+(-0.534820162236)*x[0]+(0.554980676789)*x[1]**o+(-0.917630291921)*x[1]+(0.170042991043)*x[2]**o+(0.826809263768)*x[2]  
         s[1,1,0]=(-0.901850450639)*x[0]**o+(-0.0365789634899)*x[0]+(0.0622336448434)*x[1]**o+(0.22005965603)*x[1]+(0.857183927574)*x[2]**o+(0.254453636804)*x[2]  
         s[1,1,1]=(-0.888020161965)*x[0]**o+(-0.0741224453822)*x[0]+(0.887224038781)*x[1]**o+(0.742137909151)*x[1]+(-0.587100789782)*x[2]**o+(-0.928415179888)*x[2]  
         s[2,0,0]=(0.00216356197373)*x[0]**o+(0.248793770338)*x[0]+(0.518030493147)*x[1]**o+(-0.508299580849)*x[1]+(-0.0290711721801)*x[2]**o+(0.662305993163)*x[2]  
         s[2,0,1]=(0.924293736923)*x[0]**o+(0.218836928692)*x[0]+(-0.270314297479)*x[1]**o+(0.20290032209)*x[1]+(-0.87536943379)*x[2]**o+(-0.864192540105)*x[2]  
         s[2,1,0]=(0.416159016379)*x[0]**o+(-0.30257442476)*x[0]+(-0.257298173268)*x[1]**o+(-0.398564079155)*x[1]+(-0.0699018670952)*x[2]**o+(-0.540145396091)*x[2]  
         s[2,1,1]=(0.82076420765)*x[0]**o+(-0.265319227281)*x[0]+(-0.156971036756)*x[1]**o+(-0.468527020278)*x[1]+(0.2455572117)*x[2]**o+(0.237918192218)*x[2]  
         s[3,0,0]=(-0.645207425303)*x[0]**o+(0.992013339436)*x[0]+(-0.814115520055)*x[1]**o+(-0.0863699557395)*x[1]+(0.356684159665)*x[2]**o+(0.0215161017879)*x[2]  
         s[3,0,1]=(0.429124334865)*x[0]**o+(-0.516632695494)*x[0]+(0.276076705271)*x[1]**o+(0.73233754297)*x[1]+(-0.499960919138)*x[2]**o+(0.927448433933)*x[2]  
         s[3,1,0]=(0.105016655639)*x[0]**o+(0.627563943644)*x[0]+(0.0134384788636)*x[1]**o+(-0.491675197932)*x[1]+(0.850898525327)*x[2]**o+(-0.153767354797)*x[2]  
         s[3,1,1]=(0.0927473537694)*x[0]**o+(-0.164202910181)*x[0]+(-0.246744412752)*x[1]**o+(0.812782310771)*x[1]+(0.452025251957)*x[2]**o+(-0.46155534584)*x[2]  
         s[4,0,0]=(0.466686843553)*x[0]**o+(-0.454360335871)*x[0]+(0.600983402349)*x[1]**o+(-0.248407743104)*x[1]+(-0.114458429866)*x[2]**o+(0.363120759629)*x[2]  
         s[4,0,1]=(0.108248019353)*x[0]**o+(-0.386567024916)*x[0]+(0.589911190112)*x[1]**o+(0.974355188979)*x[1]+(0.956434046018)*x[2]**o+(-0.750308948178)*x[2]  
         s[4,1,0]=(-0.0575495701591)*x[0]**o+(-0.297079422559)*x[0]+(0.173709916352)*x[1]**o+(-0.703203763304)*x[1]+(-0.206920064792)*x[2]**o+(-0.566180018312)*x[2]  
         s[4,1,1]=(0.752722443401)*x[0]**o+(0.287487922131)*x[0]+(-0.253690778509)*x[1]**o+(0.158399655258)*x[1]+(0.365133322462)*x[2]**o+(-0.765340889542)*x[2]  
         s[5,0,0]=(-0.249224479124)*x[0]**o+(-0.81760956491)*x[0]+(0.664454285698)*x[1]**o+(-0.111438607721)*x[1]+(-0.34058205464)*x[2]**o+(-0.604036230847)*x[2]  
         s[5,0,1]=(-0.0489505541715)*x[0]**o+(-0.216719586033)*x[0]+(0.862292178064)*x[1]**o+(-0.978934839395)*x[1]+(-0.229118015068)*x[2]**o+(-0.220547177874)*x[2]  
         s[5,1,0]=(-0.200117801874)*x[0]**o+(0.826116119716)*x[0]+(0.180058706489)*x[1]**o+(0.938844014751)*x[1]+(0.232853505918)*x[2]**o+(-0.0718472890928)*x[2]  
         s[5,1,1]=(0.335820727851)*x[0]**o+(-0.30183416972)*x[0]+(-0.69421482762)*x[1]**o+(0.105894103212)*x[1]+(0.620400009549)*x[2]**o+(0.970029758381)*x[2]  
         ref[0,0,0]=(-0.781071542761)/(o+1.)+(-0.703785447417)  
         ref[0,0,1]=(0.662575879198)/(o+1.)+(0.00622100617352)  
         ref[0,1,0]=(-0.289630357691)/(o+1.)+(0.389326593228)  
         ref[0,1,1]=(1.48131732523)/(o+1.)+(0.0189903862116)  
         ref[1,0,0]=(1.5792771033)/(o+1.)+(-0.733503374307)  
         ref[1,0,1]=(1.01316280743)/(o+1.)+(-0.312820595194)  
         ref[1,1,0]=(0.0175671217784)/(o+1.)+(0.218967164672)  
         ref[1,1,1]=(-0.587896912967)/(o+1.)+(-0.13019985806)  
         ref[2,0,0]=(0.49112288294)/(o+1.)+(0.201400091326)  
         ref[2,0,1]=(-0.221389994346)/(o+1.)+(-0.221227644661)  
         ref[2,1,0]=(0.0889589760167)/(o+1.)+(-0.620641950003)  
         ref[2,1,1]=(0.909350382595)/(o+1.)+(-0.24796402767)  
         ref[3,0,0]=(-1.10263878569)/(o+1.)+(0.463579742742)  
         ref[3,0,1]=(0.205240120999)/(o+1.)+(0.571576640705)  
         ref[3,1,0]=(0.96935365983)/(o+1.)+(-0.00893930454231)  
         ref[3,1,1]=(0.298028192975)/(o+1.)+(0.0935120273748)  
         ref[4,0,0]=(0.953211816036)/(o+1.)+(-0.169823659673)  
         ref[4,0,1]=(1.65459325548)/(o+1.)+(-0.0812603920577)  
         ref[4,1,0]=(-0.0907597185993)/(o+1.)+(-0.783231602088)  
         ref[4,1,1]=(0.864164987355)/(o+1.)+(-0.159726656077)  
         ref[5,0,0]=(0.0746477519342)/(o+1.)+(-0.766542201739)  
         ref[5,0,1]=(0.584223608825)/(o+1.)+(-0.708100801651)  
         ref[5,1,0]=(0.212794410532)/(o+1.)+(0.846556422687)  
         ref[5,1,1]=(0.262005909781)/(o+1.)+(0.387044845936)  
       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_onFunction_fromSymbol_Function_rank4(self):  
       """  
       tests integral of rank 4 Symbol on the Function  
   
       assumptions: Function(self.domain) exists  
                    self.domain supports integral on Function  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=Function(self.domain)  
       w=Function(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.64587181131)*x[0]**o+(-0.142518178492)*x[0]+(-0.399846110498)*x[1]**o+(0.00236392286301)*x[1]  
         s[0,0,0,1]=(0.298109366098)*x[0]**o+(-0.0843450895271)*x[0]+(0.574794599006)*x[1]**o+(-0.107008590623)*x[1]  
         s[0,0,1,0]=(-0.424486704098)*x[0]**o+(-0.382352426027)*x[0]+(0.275387919625)*x[1]**o+(-0.161015391255)*x[1]  
         s[0,0,1,1]=(0.643084919048)*x[0]**o+(0.44303782474)*x[0]+(0.17010706601)*x[1]**o+(-0.160095051974)*x[1]  
         s[0,0,2,0]=(0.255268276945)*x[0]**o+(-0.867088236584)*x[0]+(-0.809452452666)*x[1]**o+(-0.376237703808)*x[1]  
         s[0,0,2,1]=(-0.773368404022)*x[0]**o+(-0.655491257176)*x[0]+(-0.256178554483)*x[1]**o+(0.582354235979)*x[1]  
         s[0,1,0,0]=(0.312387735876)*x[0]**o+(0.36653787868)*x[0]+(-0.160583709945)*x[1]**o+(-0.791133941857)*x[1]  
         s[0,1,0,1]=(-0.57693493814)*x[0]**o+(-0.862135922856)*x[0]+(0.0439301419063)*x[1]**o+(0.959289798443)*x[1]  
         s[0,1,1,0]=(0.121311324776)*x[0]**o+(0.907585047473)*x[0]+(-0.923686957239)*x[1]**o+(-0.652706978591)*x[1]  
         s[0,1,1,1]=(0.682901593615)*x[0]**o+(-0.306481093391)*x[0]+(-0.35714675383)*x[1]**o+(0.500943467097)*x[1]  
         s[0,1,2,0]=(0.647130385973)*x[0]**o+(0.873804224811)*x[0]+(0.78779813495)*x[1]**o+(0.430789257821)*x[1]  
         s[0,1,2,1]=(0.135833683749)*x[0]**o+(0.32862510689)*x[0]+(-0.48350127573)*x[1]**o+(-0.649354230648)*x[1]  
         s[0,2,0,0]=(-0.641045806017)*x[0]**o+(-0.654315036977)*x[0]+(-0.729951508044)*x[1]**o+(0.766934507787)*x[1]  
         s[0,2,0,1]=(0.481734616023)*x[0]**o+(-0.687904467365)*x[0]+(0.630779635862)*x[1]**o+(-0.982134985324)*x[1]  
         s[0,2,1,0]=(-0.0488969750979)*x[0]**o+(-0.804550194421)*x[0]+(-0.721206215475)*x[1]**o+(0.184754632486)*x[1]  
         s[0,2,1,1]=(-0.0554773461175)*x[0]**o+(0.501447670577)*x[0]+(0.214749897505)*x[1]**o+(0.912271898356)*x[1]  
         s[0,2,2,0]=(0.0902819474814)*x[0]**o+(0.182092397318)*x[0]+(-0.48175183483)*x[1]**o+(-0.598040724808)*x[1]  
         s[0,2,2,1]=(0.720795079983)*x[0]**o+(-0.339928403247)*x[0]+(-0.762363891559)*x[1]**o+(0.460915902605)*x[1]  
         s[0,3,0,0]=(0.508573641682)*x[0]**o+(-0.015037165373)*x[0]+(0.448986097944)*x[1]**o+(0.471102721761)*x[1]  
         s[0,3,0,1]=(-0.341905079065)*x[0]**o+(-0.95312476241)*x[0]+(-0.749402955548)*x[1]**o+(-0.372596238803)*x[1]  
         s[0,3,1,0]=(-0.0690403122223)*x[0]**o+(-0.08921421318)*x[0]+(-0.380821740415)*x[1]**o+(-0.599974433304)*x[1]  
         s[0,3,1,1]=(-0.50179318754)*x[0]**o+(0.355355851326)*x[0]+(0.721120108213)*x[1]**o+(0.454667741643)*x[1]  
         s[0,3,2,0]=(0.213191653894)*x[0]**o+(-0.637815219816)*x[0]+(0.0628021542224)*x[1]**o+(-0.284841867085)*x[1]  
         s[0,3,2,1]=(0.226011558647)*x[0]**o+(0.926633205695)*x[0]+(-0.801045292364)*x[1]**o+(0.84320696071)*x[1]  
         s[0,4,0,0]=(-0.925639600998)*x[0]**o+(-0.743975200606)*x[0]+(0.950987915324)*x[1]**o+(-0.919549720538)*x[1]  
         s[0,4,0,1]=(0.295152910157)*x[0]**o+(-0.155400545856)*x[0]+(-0.888657028463)*x[1]**o+(-0.0245586756163)*x[1]  
         s[0,4,1,0]=(0.659416651507)*x[0]**o+(-0.0687605790427)*x[0]+(0.287026029448)*x[1]**o+(0.749704220615)*x[1]  
         s[0,4,1,1]=(0.195399326633)*x[0]**o+(-0.690030508171)*x[0]+(0.812925291301)*x[1]**o+(-0.288219851462)*x[1]  
         s[0,4,2,0]=(0.92210509534)*x[0]**o+(-0.746377740152)*x[0]+(-0.263846201131)*x[1]**o+(0.241927075102)*x[1]  
         s[0,4,2,1]=(-0.342776236669)*x[0]**o+(-0.678319456068)*x[0]+(0.533446356713)*x[1]**o+(0.893285310119)*x[1]  
         s[1,0,0,0]=(-0.35370685183)*x[0]**o+(-0.649199740924)*x[0]+(-0.284557848052)*x[1]**o+(-0.108918514336)*x[1]  
         s[1,0,0,1]=(0.435799676535)*x[0]**o+(-0.560606926167)*x[0]+(0.422473364618)*x[1]**o+(-0.644113034355)*x[1]  
         s[1,0,1,0]=(0.371384490035)*x[0]**o+(0.468745463643)*x[0]+(0.824650091185)*x[1]**o+(0.779212641032)*x[1]  
         s[1,0,1,1]=(0.566680148615)*x[0]**o+(0.70499851212)*x[0]+(-0.622667334132)*x[1]**o+(0.0793283623173)*x[1]  
         s[1,0,2,0]=(-0.137422675839)*x[0]**o+(-0.0828536384824)*x[0]+(0.34029178349)*x[1]**o+(-0.572205817396)*x[1]  
         s[1,0,2,1]=(0.849275927844)*x[0]**o+(0.588676957111)*x[0]+(-0.351435931217)*x[1]**o+(-0.985192646644)*x[1]  
         s[1,1,0,0]=(-0.832427042757)*x[0]**o+(0.511670148283)*x[0]+(-0.225009791535)*x[1]**o+(-0.726486541188)*x[1]  
         s[1,1,0,1]=(-0.370148483489)*x[0]**o+(0.0364804235508)*x[0]+(-0.740077305856)*x[1]**o+(0.123450524426)*x[1]  
         s[1,1,1,0]=(0.989855829356)*x[0]**o+(-0.183176166338)*x[0]+(0.0388003238684)*x[1]**o+(-0.0395036587674)*x[1]  
         s[1,1,1,1]=(-0.775089474977)*x[0]**o+(-0.976089661518)*x[0]+(0.387965308645)*x[1]**o+(0.712155002639)*x[1]  
         s[1,1,2,0]=(0.86011220616)*x[0]**o+(-0.95431213868)*x[0]+(-0.495540857845)*x[1]**o+(-0.701111767974)*x[1]  
         s[1,1,2,1]=(0.827371223575)*x[0]**o+(-0.650031455862)*x[0]+(-0.0269816386714)*x[1]**o+(-0.490304255652)*x[1]  
         s[1,2,0,0]=(-0.718249056807)*x[0]**o+(-0.812216925478)*x[0]+(0.358363619384)*x[1]**o+(-0.555431408236)*x[1]  
         s[1,2,0,1]=(0.502681744448)*x[0]**o+(0.568656095603)*x[0]+(-0.642171078627)*x[1]**o+(-0.678715038904)*x[1]  
         s[1,2,1,0]=(-0.321002503528)*x[0]**o+(0.399915822381)*x[0]+(0.378527801988)*x[1]**o+(0.261422806614)*x[1]  
         s[1,2,1,1]=(-0.296716183029)*x[0]**o+(0.497650651416)*x[0]+(-0.386922791311)*x[1]**o+(-0.91901564657)*x[1]  
         s[1,2,2,0]=(-0.828712534186)*x[0]**o+(-0.0114777410069)*x[0]+(-0.142857241422)*x[1]**o+(0.527573020984)*x[1]  
         s[1,2,2,1]=(0.341639667906)*x[0]**o+(0.773780839708)*x[0]+(0.625113762311)*x[1]**o+(0.700528961096)*x[1]  
         s[1,3,0,0]=(0.763866858532)*x[0]**o+(0.934384862727)*x[0]+(-0.192635958925)*x[1]**o+(-0.531023677701)*x[1]  
         s[1,3,0,1]=(-0.559232654796)*x[0]**o+(-0.381248359127)*x[0]+(0.042953808137)*x[1]**o+(-0.0258385267166)*x[1]  
         s[1,3,1,0]=(-0.596069058223)*x[0]**o+(0.611041390676)*x[0]+(0.320050026897)*x[1]**o+(0.31950524284)*x[1]  
         s[1,3,1,1]=(0.874401923132)*x[0]**o+(0.995518258803)*x[0]+(-0.535120262939)*x[1]**o+(0.160955202392)*x[1]  
         s[1,3,2,0]=(0.352942439272)*x[0]**o+(-0.198121930351)*x[0]+(0.458180780997)*x[1]**o+(-0.415159831726)*x[1]  
         s[1,3,2,1]=(-0.511099937481)*x[0]**o+(0.297820678198)*x[0]+(0.908702936015)*x[1]**o+(0.965700845817)*x[1]  
         s[1,4,0,0]=(0.484158989021)*x[0]**o+(-0.339968620521)*x[0]+(-0.213631360058)*x[1]**o+(0.0279496812648)*x[1]  
         s[1,4,0,1]=(-0.217367899821)*x[0]**o+(0.433458086428)*x[0]+(0.244095485621)*x[1]**o+(-0.210532522829)*x[1]  
         s[1,4,1,0]=(-0.254889249994)*x[0]**o+(-0.61248326904)*x[0]+(0.372253508249)*x[1]**o+(-0.642709327921)*x[1]  
         s[1,4,1,1]=(0.880474654934)*x[0]**o+(0.68839232824)*x[0]+(0.189353506343)*x[1]**o+(-0.880653838654)*x[1]  
         s[1,4,2,0]=(0.894790715592)*x[0]**o+(-0.0486173810442)*x[0]+(-0.246550765358)*x[1]**o+(-0.343955068452)*x[1]  
         s[1,4,2,1]=(-0.801075573104)*x[0]**o+(-0.749933700542)*x[0]+(0.527976119218)*x[1]**o+(-0.671158980138)*x[1]  
         s[2,0,0,0]=(0.114632100765)*x[0]**o+(0.61717357379)*x[0]+(-0.0549019501391)*x[1]**o+(-0.749508575346)*x[1]  
         s[2,0,0,1]=(-0.130970404194)*x[0]**o+(0.707199821591)*x[0]+(-0.903645272692)*x[1]**o+(-0.0334328361989)*x[1]  
         s[2,0,1,0]=(-0.715712763894)*x[0]**o+(-0.675427980461)*x[0]+(-0.366134531475)*x[1]**o+(0.201815564551)*x[1]  
         s[2,0,1,1]=(-0.269870188604)*x[0]**o+(-0.147598844928)*x[0]+(0.677047514973)*x[1]**o+(-0.675438319339)*x[1]  
         s[2,0,2,0]=(0.212062724301)*x[0]**o+(-0.0250868236126)*x[0]+(-0.100922604124)*x[1]**o+(0.427937448863)*x[1]  
         s[2,0,2,1]=(-0.666239860886)*x[0]**o+(0.438278520576)*x[0]+(0.544120816825)*x[1]**o+(-0.473903266225)*x[1]  
         s[2,1,0,0]=(-0.361166717507)*x[0]**o+(0.901751988241)*x[0]+(0.638709648231)*x[1]**o+(-0.235793145944)*x[1]  
         s[2,1,0,1]=(-0.11628481466)*x[0]**o+(-0.0851943604844)*x[0]+(0.832299993845)*x[1]**o+(-0.619236617136)*x[1]  
         s[2,1,1,0]=(-0.960053497178)*x[0]**o+(-0.455025261633)*x[0]+(-0.701715648299)*x[1]**o+(0.728639782857)*x[1]  
         s[2,1,1,1]=(-0.533289133278)*x[0]**o+(-0.370102308202)*x[0]+(0.99106398096)*x[1]**o+(-0.0538096992941)*x[1]  
         s[2,1,2,0]=(0.224553214823)*x[0]**o+(-0.500053815427)*x[0]+(-0.0704009106671)*x[1]**o+(0.0488366166495)*x[1]  
         s[2,1,2,1]=(0.337180739675)*x[0]**o+(-0.981874806959)*x[0]+(-0.731568712654)*x[1]**o+(0.0847072795393)*x[1]  
         s[2,2,0,0]=(-0.222325355327)*x[0]**o+(-0.276984511347)*x[0]+(-0.948381537292)*x[1]**o+(0.766624524385)*x[1]  
         s[2,2,0,1]=(0.938320523187)*x[0]**o+(0.808908551771)*x[0]+(0.765330540739)*x[1]**o+(0.41183946621)*x[1]  
         s[2,2,1,0]=(-0.356223597296)*x[0]**o+(0.898624256746)*x[0]+(0.491456887622)*x[1]**o+(0.454642872239)*x[1]  
         s[2,2,1,1]=(0.70662625865)*x[0]**o+(0.0268161060988)*x[0]+(-0.17883477863)*x[1]**o+(-0.379062708108)*x[1]  
         s[2,2,2,0]=(0.405231213751)*x[0]**o+(-0.339541044657)*x[0]+(0.92369283669)*x[1]**o+(-0.521296842329)*x[1]  
         s[2,2,2,1]=(0.371621085625)*x[0]**o+(-0.277933239024)*x[0]+(0.99545384432)*x[1]**o+(-0.458904147226)*x[1]  
         s[2,3,0,0]=(-0.978371890906)*x[0]**o+(-0.220612890504)*x[0]+(0.485724985276)*x[1]**o+(0.566941748451)*x[1]  
         s[2,3,0,1]=(-0.784455960641)*x[0]**o+(0.488256734495)*x[0]+(-0.85203669445)*x[1]**o+(-0.573678796739)*x[1]  
         s[2,3,1,0]=(-0.083067317174)*x[0]**o+(0.284336362391)*x[0]+(-0.671352852822)*x[1]**o+(0.585391001713)*x[1]  
         s[2,3,1,1]=(0.453596080554)*x[0]**o+(0.382646103643)*x[0]+(0.976202291904)*x[1]**o+(0.269885074758)*x[1]  
         s[2,3,2,0]=(0.58278560743)*x[0]**o+(-0.641861358694)*x[0]+(0.65546441735)*x[1]**o+(-0.510301705975)*x[1]  
         s[2,3,2,1]=(-0.462458062923)*x[0]**o+(-0.860624656355)*x[0]+(-0.795012311004)*x[1]**o+(-0.945015232064)*x[1]  
         s[2,4,0,0]=(0.373515573367)*x[0]**o+(0.429646026706)*x[0]+(0.107731590254)*x[1]**o+(0.404788302157)*x[1]  
         s[2,4,0,1]=(0.922575542165)*x[0]**o+(0.990525976075)*x[0]+(-0.920047278057)*x[1]**o+(-0.606366502396)*x[1]  
         s[2,4,1,0]=(-0.395749593133)*x[0]**o+(-0.303444216059)*x[0]+(0.279159896939)*x[1]**o+(-0.998124949675)*x[1]  
         s[2,4,1,1]=(0.608308919638)*x[0]**o+(0.547633707859)*x[0]+(-0.335546391995)*x[1]**o+(-0.49712570743)*x[1]  
         s[2,4,2,0]=(-0.764049221842)*x[0]**o+(-0.691060860074)*x[0]+(0.576144131381)*x[1]**o+(-0.0692145325011)*x[1]  
         s[2,4,2,1]=(-0.445193960624)*x[0]**o+(-0.299673373394)*x[0]+(-0.17618349631)*x[1]**o+(0.6882025213)*x[1]  
         s[3,0,0,0]=(-0.363639361841)*x[0]**o+(-0.637031005499)*x[0]+(0.750565431989)*x[1]**o+(-0.713309519647)*x[1]  
         s[3,0,0,1]=(0.86686475536)*x[0]**o+(0.857916166663)*x[0]+(-0.233119477582)*x[1]**o+(-0.275718321599)*x[1]  
         s[3,0,1,0]=(0.676379750639)*x[0]**o+(-0.221464786801)*x[0]+(-0.307372968314)*x[1]**o+(-0.974878791542)*x[1]  
         s[3,0,1,1]=(0.963332442265)*x[0]**o+(0.873237489049)*x[0]+(0.347621440028)*x[1]**o+(-0.447236045492)*x[1]  
         s[3,0,2,0]=(0.574231383242)*x[0]**o+(0.406006911504)*x[0]+(0.998282029235)*x[1]**o+(-0.713526415934)*x[1]  
         s[3,0,2,1]=(0.130477890591)*x[0]**o+(-0.994273713498)*x[0]+(-0.836645831178)*x[1]**o+(0.23964737976)*x[1]  
         s[3,1,0,0]=(0.681027983965)*x[0]**o+(0.277762028836)*x[0]+(-0.476680449158)*x[1]**o+(0.863218206262)*x[1]  
         s[3,1,0,1]=(-0.551857608855)*x[0]**o+(0.714701927775)*x[0]+(0.0805460030018)*x[1]**o+(-0.75844120919)*x[1]  
         s[3,1,1,0]=(-0.699952165487)*x[0]**o+(-0.829498201164)*x[0]+(0.518643791102)*x[1]**o+(0.748348341191)*x[1]  
         s[3,1,1,1]=(0.628926227064)*x[0]**o+(0.756291174101)*x[0]+(0.847249240418)*x[1]**o+(-0.694296012132)*x[1]  
         s[3,1,2,0]=(0.300066092357)*x[0]**o+(0.0979478221525)*x[0]+(-0.652853644798)*x[1]**o+(0.87892206219)*x[1]  
         s[3,1,2,1]=(0.820578435316)*x[0]**o+(-0.151267836854)*x[0]+(0.288662297283)*x[1]**o+(-0.530205788227)*x[1]  
         s[3,2,0,0]=(-0.262081376064)*x[0]**o+(0.564488927009)*x[0]+(-0.574271798456)*x[1]**o+(-0.103341985058)*x[1]  
         s[3,2,0,1]=(0.264373345575)*x[0]**o+(0.505975223545)*x[0]+(0.760869432805)*x[1]**o+(-0.348245510796)*x[1]  
         s[3,2,1,0]=(0.382085638525)*x[0]**o+(0.271178748741)*x[0]+(-0.344266263181)*x[1]**o+(0.949904496331)*x[1]  
         s[3,2,1,1]=(0.570382182257)*x[0]**o+(-0.507665638153)*x[0]+(0.675674419969)*x[1]**o+(-0.741319149319)*x[1]  
         s[3,2,2,0]=(-0.0159674521901)*x[0]**o+(-0.201449258763)*x[0]+(-0.774168601079)*x[1]**o+(-0.333025684689)*x[1]  
         s[3,2,2,1]=(0.21116026219)*x[0]**o+(0.174264855243)*x[0]+(-0.693006543432)*x[1]**o+(-0.117768474854)*x[1]  
         s[3,3,0,0]=(-0.0965568139991)*x[0]**o+(-0.305779611724)*x[0]+(-0.905575174356)*x[1]**o+(-0.0438869174233)*x[1]  
         s[3,3,0,1]=(-0.517028280471)*x[0]**o+(0.725783549398)*x[0]+(0.346469604255)*x[1]**o+(-0.958724910661)*x[1]  
         s[3,3,1,0]=(0.673217439387)*x[0]**o+(0.171407887035)*x[0]+(-0.931242988664)*x[1]**o+(0.905785986466)*x[1]  
         s[3,3,1,1]=(-0.806309377174)*x[0]**o+(-0.39154927098)*x[0]+(-0.353245837689)*x[1]**o+(-0.0891421463801)*x[1]  
         s[3,3,2,0]=(0.54365433687)*x[0]**o+(0.328598607479)*x[0]+(-0.134078804517)*x[1]**o+(0.368297327809)*x[1]  
         s[3,3,2,1]=(0.309908919248)*x[0]**o+(-0.366081335409)*x[0]+(0.287094150861)*x[1]**o+(-0.311725137682)*x[1]  
         s[3,4,0,0]=(0.0350561429151)*x[0]**o+(-0.587757161762)*x[0]+(0.105785456873)*x[1]**o+(0.00732306049631)*x[1]  
         s[3,4,0,1]=(0.110213440973)*x[0]**o+(-0.429550096051)*x[0]+(0.471367364287)*x[1]**o+(0.580191251114)*x[1]  
         s[3,4,1,0]=(0.349823338156)*x[0]**o+(0.474522056666)*x[0]+(-0.190656365622)*x[1]**o+(0.872370974782)*x[1]  
         s[3,4,1,1]=(-0.694637797093)*x[0]**o+(0.648769674687)*x[0]+(-0.0962824527574)*x[1]**o+(0.669702141463)*x[1]  
         s[3,4,2,0]=(-0.954369212248)*x[0]**o+(0.558821994909)*x[0]+(-0.196151296515)*x[1]**o+(0.475540095693)*x[1]  
         s[3,4,2,1]=(0.946611204124)*x[0]**o+(-0.452828842027)*x[0]+(-0.167471954345)*x[1]**o+(0.0326624440493)*x[1]  
         ref[0,0,0,0]=(0.246025700812)/(o+1.)+(-0.0700771278147)  
         ref[0,0,0,1]=(0.872903965104)/(o+1.)+(-0.0956768400749)  
         ref[0,0,1,0]=(-0.149098784473)/(o+1.)+(-0.271683908641)  
         ref[0,0,1,1]=(0.813191985058)/(o+1.)+(0.141471386383)  
         ref[0,0,2,0]=(-0.554184175721)/(o+1.)+(-0.621662970196)  
         ref[0,0,2,1]=(-1.0295469585)/(o+1.)+(-0.0365685105983)  
         ref[0,1,0,0]=(0.151804025931)/(o+1.)+(-0.212298031588)  
         ref[0,1,0,1]=(-0.533004796234)/(o+1.)+(0.0485769377937)  
         ref[0,1,1,0]=(-0.802375632463)/(o+1.)+(0.127439034441)  
         ref[0,1,1,1]=(0.325754839785)/(o+1.)+(0.0972311868531)  
         ref[0,1,2,0]=(1.43492852092)/(o+1.)+(0.652296741316)  
         ref[0,1,2,1]=(-0.347667591981)/(o+1.)+(-0.160364561879)  
         ref[0,2,0,0]=(-1.37099731406)/(o+1.)+(0.0563097354051)  
         ref[0,2,0,1]=(1.11251425188)/(o+1.)+(-0.835019726344)  
         ref[0,2,1,0]=(-0.770103190572)/(o+1.)+(-0.309897780967)  
         ref[0,2,1,1]=(0.159272551388)/(o+1.)+(0.706859784466)  
         ref[0,2,2,0]=(-0.391469887349)/(o+1.)+(-0.207974163745)  
         ref[0,2,2,1]=(-0.0415688115757)/(o+1.)+(0.0604937496788)  
         ref[0,3,0,0]=(0.957559739626)/(o+1.)+(0.228032778194)  
         ref[0,3,0,1]=(-1.09130803461)/(o+1.)+(-0.662860500606)  
         ref[0,3,1,0]=(-0.449862052638)/(o+1.)+(-0.344594323242)  
         ref[0,3,1,1]=(0.219326920673)/(o+1.)+(0.405011796484)  
         ref[0,3,2,0]=(0.275993808116)/(o+1.)+(-0.461328543451)  
         ref[0,3,2,1]=(-0.575033733717)/(o+1.)+(0.884920083202)  
         ref[0,4,0,0]=(0.0253483143264)/(o+1.)+(-0.831762460572)  
         ref[0,4,0,1]=(-0.593504118306)/(o+1.)+(-0.0899796107363)  
         ref[0,4,1,0]=(0.946442680954)/(o+1.)+(0.340471820786)  
         ref[0,4,1,1]=(1.00832461793)/(o+1.)+(-0.489125179816)  
         ref[0,4,2,0]=(0.658258894209)/(o+1.)+(-0.252225332525)  
         ref[0,4,2,1]=(0.190670120044)/(o+1.)+(0.107482927026)  
         ref[1,0,0,0]=(-0.638264699882)/(o+1.)+(-0.37905912763)  
         ref[1,0,0,1]=(0.858273041153)/(o+1.)+(-0.602359980261)  
         ref[1,0,1,0]=(1.19603458122)/(o+1.)+(0.623979052337)  
         ref[1,0,1,1]=(-0.0559871855173)/(o+1.)+(0.392163437219)  
         ref[1,0,2,0]=(0.202869107651)/(o+1.)+(-0.327529727939)  
         ref[1,0,2,1]=(0.497839996627)/(o+1.)+(-0.198257844767)  
         ref[1,1,0,0]=(-1.05743683429)/(o+1.)+(-0.107408196452)  
         ref[1,1,0,1]=(-1.11022578935)/(o+1.)+(0.0799654739886)  
         ref[1,1,1,0]=(1.02865615322)/(o+1.)+(-0.111339912553)  
         ref[1,1,1,1]=(-0.387124166332)/(o+1.)+(-0.13196732944)  
         ref[1,1,2,0]=(0.364571348315)/(o+1.)+(-0.827711953327)  
         ref[1,1,2,1]=(0.800389584904)/(o+1.)+(-0.570167855757)  
         ref[1,2,0,0]=(-0.359885437423)/(o+1.)+(-0.683824166857)  
         ref[1,2,0,1]=(-0.139489334179)/(o+1.)+(-0.0550294716506)  
         ref[1,2,1,0]=(0.05752529846)/(o+1.)+(0.330669314498)  
         ref[1,2,1,1]=(-0.68363897434)/(o+1.)+(-0.210682497577)  
         ref[1,2,2,0]=(-0.971569775609)/(o+1.)+(0.258047639988)  
         ref[1,2,2,1]=(0.966753430217)/(o+1.)+(0.737154900402)  
         ref[1,3,0,0]=(0.571230899607)/(o+1.)+(0.201680592513)  
         ref[1,3,0,1]=(-0.516278846659)/(o+1.)+(-0.203543442922)  
         ref[1,3,1,0]=(-0.276019031326)/(o+1.)+(0.465273316758)  
         ref[1,3,1,1]=(0.339281660193)/(o+1.)+(0.578236730598)  
         ref[1,3,2,0]=(0.811123220269)/(o+1.)+(-0.306640881038)  
         ref[1,3,2,1]=(0.397602998535)/(o+1.)+(0.631760762007)  
         ref[1,4,0,0]=(0.270527628963)/(o+1.)+(-0.156009469628)  
         ref[1,4,0,1]=(0.0267275858003)/(o+1.)+(0.1114627818)  
         ref[1,4,1,0]=(0.117364258255)/(o+1.)+(-0.627596298481)  
         ref[1,4,1,1]=(1.06982816128)/(o+1.)+(-0.0961307552069)  
         ref[1,4,2,0]=(0.648239950234)/(o+1.)+(-0.196286224748)  
         ref[1,4,2,1]=(-0.273099453886)/(o+1.)+(-0.71054634034)  
         ref[2,0,0,0]=(0.0597301506259)/(o+1.)+(-0.0661675007782)  
         ref[2,0,0,1]=(-1.03461567689)/(o+1.)+(0.336883492696)  
         ref[2,0,1,0]=(-1.08184729537)/(o+1.)+(-0.236806207955)  
         ref[2,0,1,1]=(0.407177326369)/(o+1.)+(-0.411518582134)  
         ref[2,0,2,0]=(0.111140120177)/(o+1.)+(0.201425312625)  
         ref[2,0,2,1]=(-0.122119044061)/(o+1.)+(-0.0178123728248)  
         ref[2,1,0,0]=(0.277542930723)/(o+1.)+(0.332979421149)  
         ref[2,1,0,1]=(0.716015179185)/(o+1.)+(-0.35221548881)  
         ref[2,1,1,0]=(-1.66176914548)/(o+1.)+(0.136807260612)  
         ref[2,1,1,1]=(0.457774847682)/(o+1.)+(-0.211956003748)  
         ref[2,1,2,0]=(0.154152304156)/(o+1.)+(-0.225608599389)  
         ref[2,1,2,1]=(-0.394387972979)/(o+1.)+(-0.44858376371)  
         ref[2,2,0,0]=(-1.17070689262)/(o+1.)+(0.244820006519)  
         ref[2,2,0,1]=(1.70365106393)/(o+1.)+(0.61037400899)  
         ref[2,2,1,0]=(0.135233290326)/(o+1.)+(0.676633564493)  
         ref[2,2,1,1]=(0.527791480019)/(o+1.)+(-0.176123301004)  
         ref[2,2,2,0]=(1.32892405044)/(o+1.)+(-0.430418943493)  
         ref[2,2,2,1]=(1.36707492995)/(o+1.)+(-0.368418693125)  
         ref[2,3,0,0]=(-0.492646905629)/(o+1.)+(0.173164428973)  
         ref[2,3,0,1]=(-1.63649265509)/(o+1.)+(-0.0427110311218)  
         ref[2,3,1,0]=(-0.754420169996)/(o+1.)+(0.434863682052)  
         ref[2,3,1,1]=(1.42979837246)/(o+1.)+(0.3262655892)  
         ref[2,3,2,0]=(1.23825002478)/(o+1.)+(-0.576081532335)  
         ref[2,3,2,1]=(-1.25747037393)/(o+1.)+(-0.902819944209)  
         ref[2,4,0,0]=(0.48124716362)/(o+1.)+(0.417217164431)  
         ref[2,4,0,1]=(0.00252826410759)/(o+1.)+(0.192079736839)  
         ref[2,4,1,0]=(-0.116589696194)/(o+1.)+(-0.650784582867)  
         ref[2,4,1,1]=(0.272762527643)/(o+1.)+(0.0252540002143)  
         ref[2,4,2,0]=(-0.187905090461)/(o+1.)+(-0.380137696288)  
         ref[2,4,2,1]=(-0.621377456934)/(o+1.)+(0.194264573953)  
         ref[3,0,0,0]=(0.386926070148)/(o+1.)+(-0.675170262573)  
         ref[3,0,0,1]=(0.633745277778)/(o+1.)+(0.291098922532)  
         ref[3,0,1,0]=(0.369006782325)/(o+1.)+(-0.598171789171)  
         ref[3,0,1,1]=(1.31095388229)/(o+1.)+(0.213000721778)  
         ref[3,0,2,0]=(1.57251341248)/(o+1.)+(-0.153759752215)  
         ref[3,0,2,1]=(-0.706167940587)/(o+1.)+(-0.377313166869)  
         ref[3,1,0,0]=(0.204347534807)/(o+1.)+(0.570490117549)  
         ref[3,1,0,1]=(-0.471311605853)/(o+1.)+(-0.0218696407078)  
         ref[3,1,1,0]=(-0.181308374385)/(o+1.)+(-0.0405749299865)  
         ref[3,1,1,1]=(1.47617546748)/(o+1.)+(0.0309975809845)  
         ref[3,1,2,0]=(-0.352787552441)/(o+1.)+(0.488434942171)  
         ref[3,1,2,1]=(1.1092407326)/(o+1.)+(-0.34073681254)  
         ref[3,2,0,0]=(-0.83635317452)/(o+1.)+(0.230573470976)  
         ref[3,2,0,1]=(1.02524277838)/(o+1.)+(0.0788648563748)  
         ref[3,2,1,0]=(0.0378193753437)/(o+1.)+(0.610541622536)  
         ref[3,2,1,1]=(1.24605660223)/(o+1.)+(-0.624492393736)  
         ref[3,2,2,0]=(-0.79013605327)/(o+1.)+(-0.267237471726)  
         ref[3,2,2,1]=(-0.481846281241)/(o+1.)+(0.0282481901946)  
         ref[3,3,0,0]=(-1.00213198835)/(o+1.)+(-0.174833264573)  
         ref[3,3,0,1]=(-0.170558676217)/(o+1.)+(-0.116470680631)  
         ref[3,3,1,0]=(-0.258025549277)/(o+1.)+(0.538596936751)  
         ref[3,3,1,1]=(-1.15955521486)/(o+1.)+(-0.24034570868)  
         ref[3,3,2,0]=(0.409575532352)/(o+1.)+(0.348447967644)  
         ref[3,3,2,1]=(0.597003070109)/(o+1.)+(-0.338903236546)  
         ref[3,4,0,0]=(0.140841599788)/(o+1.)+(-0.290217050633)  
         ref[3,4,0,1]=(0.581580805261)/(o+1.)+(0.0753205775318)  
         ref[3,4,1,0]=(0.159166972534)/(o+1.)+(0.673446515724)  
         ref[3,4,1,1]=(-0.79092024985)/(o+1.)+(0.659235908075)  
         ref[3,4,2,0]=(-1.15052050876)/(o+1.)+(0.517181045301)  
         ref[3,4,2,1]=(0.779139249778)/(o+1.)+(-0.210083198989)  
       else:  
         s[0,0,0,0]=(0.748319783349)*x[0]**o+(-0.176566570347)*x[0]+(-0.302910837408)*x[1]**o+(0.492350205415)*x[1]+(-0.160456161783)*x[2]**o+(0.868280836814)*x[2]  
         s[0,0,0,1]=(-0.51136577317)*x[0]**o+(-0.242417336787)*x[0]+(-0.785996766849)*x[1]**o+(0.606869170308)*x[1]+(0.49391109913)*x[2]**o+(-0.319568202304)*x[2]  
         s[0,0,1,0]=(0.640062862527)*x[0]**o+(0.566706264858)*x[0]+(0.907582097741)*x[1]**o+(0.350910171053)*x[1]+(-0.909242439832)*x[2]**o+(-0.85540876524)*x[2]  
         s[0,0,1,1]=(-0.377548918631)*x[0]**o+(-0.630218128454)*x[0]+(0.45141559373)*x[1]**o+(0.0832708083581)*x[1]+(0.233405447853)*x[2]**o+(0.567903425032)*x[2]  
         s[0,0,2,0]=(-0.497312249883)*x[0]**o+(-0.651244043641)*x[0]+(-0.575450843765)*x[1]**o+(0.0219939930053)*x[1]+(0.570655374403)*x[2]**o+(-0.402040210721)*x[2]  
         s[0,0,2,1]=(0.383694368889)*x[0]**o+(-0.280765736983)*x[0]+(0.644560587428)*x[1]**o+(-0.263879759253)*x[1]+(0.78943504044)*x[2]**o+(0.838120969604)*x[2]  
         s[0,1,0,0]=(0.331871753344)*x[0]**o+(0.731388799379)*x[0]+(0.394440515222)*x[1]**o+(-0.337910220731)*x[1]+(-0.078492234799)*x[2]**o+(0.388988268348)*x[2]  
         s[0,1,0,1]=(0.197262971559)*x[0]**o+(0.482585248548)*x[0]+(0.0890475484335)*x[1]**o+(-0.154881471591)*x[1]+(0.14978160538)*x[2]**o+(-0.115243504627)*x[2]  
         s[0,1,1,0]=(0.338072090662)*x[0]**o+(0.238967458874)*x[0]+(0.4078504965)*x[1]**o+(-0.941497950412)*x[1]+(0.539654579256)*x[2]**o+(0.777502770306)*x[2]  
         s[0,1,1,1]=(-0.876894224774)*x[0]**o+(-0.413741121497)*x[0]+(0.841988144013)*x[1]**o+(-0.987067492493)*x[1]+(-0.0142647738806)*x[2]**o+(0.809756634084)*x[2]  
         s[0,1,2,0]=(0.771962423748)*x[0]**o+(-0.274151695697)*x[0]+(-0.0583329632543)*x[1]**o+(0.290755268126)*x[1]+(0.986842038664)*x[2]**o+(-0.445513638841)*x[2]  
         s[0,1,2,1]=(0.235289294125)*x[0]**o+(-0.0230216115543)*x[0]+(-0.39449823454)*x[1]**o+(0.758538375985)*x[1]+(-0.990485958396)*x[2]**o+(0.441787118653)*x[2]  
         s[0,2,0,0]=(-0.860580472907)*x[0]**o+(-0.480513252563)*x[0]+(0.388567023408)*x[1]**o+(-0.435900869228)*x[1]+(-0.483812008458)*x[2]**o+(0.87821418943)*x[2]  
         s[0,2,0,1]=(-0.391914341084)*x[0]**o+(-0.813798019851)*x[0]+(0.681793443132)*x[1]**o+(-0.422727355552)*x[1]+(-0.0599492576813)*x[2]**o+(0.630302059584)*x[2]  
         s[0,2,1,0]=(-0.857349416782)*x[0]**o+(0.0937767571422)*x[0]+(-0.935044609271)*x[1]**o+(-0.825241166723)*x[1]+(-0.78223171556)*x[2]**o+(0.33550368528)*x[2]  
         s[0,2,1,1]=(-0.366924211693)*x[0]**o+(0.572797118425)*x[0]+(-0.289194982186)*x[1]**o+(-0.942701172085)*x[1]+(0.614219031682)*x[2]**o+(-0.389753632964)*x[2]  
         s[0,2,2,0]=(-0.404732972636)*x[0]**o+(0.631781218361)*x[0]+(-0.263486337549)*x[1]**o+(0.631746356812)*x[1]+(-0.515291196501)*x[2]**o+(-0.363991020547)*x[2]  
         s[0,2,2,1]=(0.892685628814)*x[0]**o+(0.963218649844)*x[0]+(0.483947727789)*x[1]**o+(0.211028649587)*x[1]+(0.50159178018)*x[2]**o+(0.0711392272561)*x[2]  
         s[0,3,0,0]=(-0.33216085676)*x[0]**o+(0.906269165577)*x[0]+(0.874123825651)*x[1]**o+(-0.570808752482)*x[1]+(-0.561182318614)*x[2]**o+(-0.884125641249)*x[2]  
         s[0,3,0,1]=(-0.0703055529684)*x[0]**o+(-0.101044608869)*x[0]+(0.829269084242)*x[1]**o+(-0.497613621381)*x[1]+(0.297140846283)*x[2]**o+(0.566992550301)*x[2]  
         s[0,3,1,0]=(0.00230797481965)*x[0]**o+(-0.561978070323)*x[0]+(-0.874987267344)*x[1]**o+(0.404602330516)*x[1]+(0.541390115931)*x[2]**o+(0.109832470538)*x[2]  
         s[0,3,1,1]=(-0.738073409216)*x[0]**o+(0.016899800363)*x[0]+(0.606773214528)*x[1]**o+(0.607363930641)*x[1]+(-0.755469399679)*x[2]**o+(-0.585951709489)*x[2]  
         s[0,3,2,0]=(0.754566844048)*x[0]**o+(0.353623703809)*x[0]+(0.300465743201)*x[1]**o+(0.4804155825)*x[1]+(-0.500709775706)*x[2]**o+(-0.184866087487)*x[2]  
         s[0,3,2,1]=(0.656642762895)*x[0]**o+(-0.522249569275)*x[0]+(-0.689897112218)*x[1]**o+(0.197660165382)*x[1]+(0.790618474391)*x[2]**o+(0.34534294776)*x[2]  
         s[0,4,0,0]=(0.951780164354)*x[0]**o+(0.227261667276)*x[0]+(-0.388326921756)*x[1]**o+(-0.143812077493)*x[1]+(0.869741228576)*x[2]**o+(0.896296431361)*x[2]  
         s[0,4,0,1]=(0.0418495997166)*x[0]**o+(0.378737546698)*x[0]+(-0.893460535382)*x[1]**o+(-0.0409222699203)*x[1]+(-0.6955627414)*x[2]**o+(-0.993500126323)*x[2]  
         s[0,4,1,0]=(-0.47303219937)*x[0]**o+(0.488878345444)*x[0]+(0.110295068747)*x[1]**o+(-0.775897017507)*x[1]+(-0.664013808104)*x[2]**o+(-0.125758726632)*x[2]  
         s[0,4,1,1]=(0.326490818022)*x[0]**o+(-0.785954928184)*x[0]+(0.85336153105)*x[1]**o+(-0.573522941199)*x[1]+(-0.42185352182)*x[2]**o+(-0.425049668912)*x[2]  
         s[0,4,2,0]=(0.290783142101)*x[0]**o+(-0.502056588268)*x[0]+(0.433355340131)*x[1]**o+(-0.717832338133)*x[1]+(0.254866069131)*x[2]**o+(-0.383849864093)*x[2]  
         s[0,4,2,1]=(-0.796340985968)*x[0]**o+(-0.732115333195)*x[0]+(-0.829732009003)*x[1]**o+(-0.790621874069)*x[1]+(-0.60818338505)*x[2]**o+(-0.892012123169)*x[2]  
         s[1,0,0,0]=(0.150096606609)*x[0]**o+(0.713142060809)*x[0]+(0.0898795205212)*x[1]**o+(-0.682356428859)*x[1]+(0.275326716654)*x[2]**o+(-0.356136748426)*x[2]  
         s[1,0,0,1]=(0.104574120129)*x[0]**o+(-0.895395804614)*x[0]+(-0.00895409609851)*x[1]**o+(0.852200905159)*x[1]+(0.25757145031)*x[2]**o+(-0.578299505429)*x[2]  
         s[1,0,1,0]=(-0.83104126362)*x[0]**o+(-0.587286782794)*x[0]+(0.043755441563)*x[1]**o+(-0.357299738488)*x[1]+(0.900592455437)*x[2]**o+(0.885645422129)*x[2]  
         s[1,0,1,1]=(-0.144444995355)*x[0]**o+(-0.667350132103)*x[0]+(0.949183394884)*x[1]**o+(-0.519086948324)*x[1]+(-0.74215320159)*x[2]**o+(-0.202102401774)*x[2]  
         s[1,0,2,0]=(0.303496934218)*x[0]**o+(-0.02461446864)*x[0]+(-0.0867456086666)*x[1]**o+(0.730962877622)*x[1]+(-0.851607522381)*x[2]**o+(-0.239310033319)*x[2]  
         s[1,0,2,1]=(-0.512139821912)*x[0]**o+(-0.69403755459)*x[0]+(0.462840604615)*x[1]**o+(-0.192161565941)*x[1]+(0.807307771096)*x[2]**o+(0.440024157111)*x[2]  
         s[1,1,0,0]=(-0.693987625939)*x[0]**o+(0.410652593337)*x[0]+(0.665893670901)*x[1]**o+(0.525886124327)*x[1]+(0.200291951309)*x[2]**o+(0.793353011987)*x[2]  
         s[1,1,0,1]=(-0.667911914141)*x[0]**o+(0.693960372567)*x[0]+(-0.0892935574405)*x[1]**o+(0.669184962503)*x[1]+(0.664202374165)*x[2]**o+(-0.474657421474)*x[2]  
         s[1,1,1,0]=(0.4341035606)*x[0]**o+(0.707815942288)*x[0]+(-0.204720100594)*x[1]**o+(-0.816120724182)*x[1]+(-0.259566839542)*x[2]**o+(0.918010553929)*x[2]  
         s[1,1,1,1]=(0.280925026809)*x[0]**o+(0.895509529721)*x[0]+(0.244175246656)*x[1]**o+(0.692059608476)*x[1]+(-0.424963623478)*x[2]**o+(0.985618462184)*x[2]  
         s[1,1,2,0]=(0.172285590575)*x[0]**o+(0.0614208586474)*x[0]+(-0.751024157153)*x[1]**o+(0.182364162229)*x[1]+(-0.400270263752)*x[2]**o+(0.6410957443)*x[2]  
         s[1,1,2,1]=(0.621541338202)*x[0]**o+(0.716601026013)*x[0]+(0.822288477475)*x[1]**o+(0.200859656154)*x[1]+(-0.651437159651)*x[2]**o+(-0.554048539377)*x[2]  
         s[1,2,0,0]=(-0.835149004101)*x[0]**o+(-0.748380867211)*x[0]+(-0.445526738596)*x[1]**o+(0.782304294095)*x[1]+(0.827204947885)*x[2]**o+(0.188779249069)*x[2]  
         s[1,2,0,1]=(0.354866953137)*x[0]**o+(-0.981132219204)*x[0]+(0.488043961513)*x[1]**o+(0.257052078929)*x[1]+(0.719111294043)*x[2]**o+(-0.298289862834)*x[2]  
         s[1,2,1,0]=(0.552605101038)*x[0]**o+(0.145016605474)*x[0]+(0.119161182879)*x[1]**o+(0.723703065293)*x[1]+(-0.011955307053)*x[2]**o+(0.374814299212)*x[2]  
         s[1,2,1,1]=(0.448055014229)*x[0]**o+(-0.320498330109)*x[0]+(0.812977543935)*x[1]**o+(0.374118976348)*x[1]+(0.656782601024)*x[2]**o+(0.0845883407242)*x[2]  
         s[1,2,2,0]=(0.418470977027)*x[0]**o+(-0.324185586615)*x[0]+(0.576184154734)*x[1]**o+(-0.244791711079)*x[1]+(-0.383448002434)*x[2]**o+(-0.425391146295)*x[2]  
         s[1,2,2,1]=(0.885670287748)*x[0]**o+(0.804245948464)*x[0]+(-0.122365449147)*x[1]**o+(0.0526689576387)*x[1]+(0.886983215847)*x[2]**o+(-0.9130795011)*x[2]  
         s[1,3,0,0]=(-0.698202951872)*x[0]**o+(-0.753867598728)*x[0]+(-0.729720876147)*x[1]**o+(-0.535739350698)*x[1]+(0.140570380613)*x[2]**o+(-0.0716035886696)*x[2]  
         s[1,3,0,1]=(-0.898459992298)*x[0]**o+(0.372462814699)*x[0]+(0.605465414867)*x[1]**o+(-0.684605485569)*x[1]+(0.549437793056)*x[2]**o+(-0.010737341414)*x[2]  
         s[1,3,1,0]=(0.792329973599)*x[0]**o+(-0.52685018301)*x[0]+(0.200314760956)*x[1]**o+(0.632873255355)*x[1]+(-0.43152569425)*x[2]**o+(0.348904687244)*x[2]  
         s[1,3,1,1]=(0.209464885105)*x[0]**o+(-0.0146787858502)*x[0]+(0.320235817099)*x[1]**o+(0.86370910616)*x[1]+(-0.202145495919)*x[2]**o+(-0.25657518419)*x[2]  
         s[1,3,2,0]=(0.489051201235)*x[0]**o+(0.349594264623)*x[0]+(-0.574002000861)*x[1]**o+(0.390761344969)*x[1]+(0.1514845518)*x[2]**o+(0.802240236468)*x[2]  
         s[1,3,2,1]=(-0.0182530256393)*x[0]**o+(0.303828930846)*x[0]+(0.618612491362)*x[1]**o+(0.293473693133)*x[1]+(0.763201722939)*x[2]**o+(-0.652537522965)*x[2]  
         s[1,4,0,0]=(0.349015278137)*x[0]**o+(-0.0165197033193)*x[0]+(0.63228324617)*x[1]**o+(-0.934745316284)*x[1]+(-0.187390369535)*x[2]**o+(-0.456599706963)*x[2]  
         s[1,4,0,1]=(0.310212294648)*x[0]**o+(-0.898896972668)*x[0]+(0.229475812326)*x[1]**o+(0.787159228942)*x[1]+(0.133488840506)*x[2]**o+(0.949893906424)*x[2]  
         s[1,4,1,0]=(-0.869667859962)*x[0]**o+(0.624210860706)*x[0]+(0.122085293209)*x[1]**o+(-0.624604470463)*x[1]+(-0.878410325648)*x[2]**o+(-0.0841801197816)*x[2]  
         s[1,4,1,1]=(0.706521970977)*x[0]**o+(0.23837086782)*x[0]+(-0.960682169998)*x[1]**o+(-0.707493453388)*x[1]+(0.828048621994)*x[2]**o+(0.327258769743)*x[2]  
         s[1,4,2,0]=(-0.291203807685)*x[0]**o+(0.707463915698)*x[0]+(-0.860720761064)*x[1]**o+(0.802477835676)*x[1]+(-0.16905212173)*x[2]**o+(0.453497949714)*x[2]  
         s[1,4,2,1]=(0.789863893897)*x[0]**o+(-0.945472074403)*x[0]+(-0.047780484871)*x[1]**o+(0.199167500985)*x[1]+(0.575959160298)*x[2]**o+(-0.181712597239)*x[2]  
         s[2,0,0,0]=(0.61569741708)*x[0]**o+(0.609998488119)*x[0]+(-0.943339902899)*x[1]**o+(-0.962332686128)*x[1]+(0.458927713248)*x[2]**o+(-0.191444752971)*x[2]  
         s[2,0,0,1]=(0.0306432921503)*x[0]**o+(0.326065705299)*x[0]+(0.29054908043)*x[1]**o+(-0.498110577924)*x[1]+(-0.855604413911)*x[2]**o+(-0.832549081863)*x[2]  
         s[2,0,1,0]=(0.539469235745)*x[0]**o+(0.549053450527)*x[0]+(0.379811452156)*x[1]**o+(0.383008863276)*x[1]+(-0.835777000108)*x[2]**o+(0.418879791451)*x[2]  
         s[2,0,1,1]=(0.0773392682115)*x[0]**o+(0.594680641339)*x[0]+(-0.514207317809)*x[1]**o+(0.516677819046)*x[1]+(-0.616548060204)*x[2]**o+(-0.487308340419)*x[2]  
         s[2,0,2,0]=(0.308538286588)*x[0]**o+(0.553188024822)*x[0]+(0.640606076984)*x[1]**o+(0.851001392437)*x[1]+(-0.175136140727)*x[2]**o+(-0.0677219547255)*x[2]  
         s[2,0,2,1]=(0.689683007295)*x[0]**o+(0.0205486604859)*x[0]+(-0.513197632413)*x[1]**o+(-0.589507997499)*x[1]+(0.0967263356508)*x[2]**o+(-0.743224844971)*x[2]  
         s[2,1,0,0]=(0.175040132619)*x[0]**o+(0.0564766932006)*x[0]+(-0.641666937619)*x[1]**o+(0.820974466919)*x[1]+(0.494310429863)*x[2]**o+(-0.704304819607)*x[2]  
         s[2,1,0,1]=(-0.890775824863)*x[0]**o+(-0.500686412296)*x[0]+(0.153470124596)*x[1]**o+(-0.64297395847)*x[1]+(-0.716566099394)*x[2]**o+(0.74578557063)*x[2]  
         s[2,1,1,0]=(-0.999358965815)*x[0]**o+(-0.657733542154)*x[0]+(0.197035042134)*x[1]**o+(-0.887786199345)*x[1]+(-0.0685059299499)*x[2]**o+(0.498972129916)*x[2]  
         s[2,1,1,1]=(0.627376530136)*x[0]**o+(-0.681228319483)*x[0]+(0.552935442983)*x[1]**o+(-0.813921943144)*x[1]+(-0.192761641367)*x[2]**o+(-0.248022829303)*x[2]  
         s[2,1,2,0]=(0.845230425625)*x[0]**o+(-0.503049369073)*x[0]+(-0.705939778787)*x[1]**o+(-0.862373899236)*x[1]+(-0.327695135868)*x[2]**o+(-0.469012024699)*x[2]  
         s[2,1,2,1]=(-0.509720328843)*x[0]**o+(-0.595784133936)*x[0]+(0.703072807212)*x[1]**o+(0.413326203128)*x[1]+(0.819831655306)*x[2]**o+(-0.494002066589)*x[2]  
         s[2,2,0,0]=(-0.349642870638)*x[0]**o+(0.530770622335)*x[0]+(0.132675549915)*x[1]**o+(-0.234998432688)*x[1]+(-0.928123366402)*x[2]**o+(-0.578031336794)*x[2]  
         s[2,2,0,1]=(-0.38335511074)*x[0]**o+(-0.993906933916)*x[0]+(-0.82535132107)*x[1]**o+(0.0112642210987)*x[1]+(0.904749217207)*x[2]**o+(-0.951098241145)*x[2]  
         s[2,2,1,0]=(-0.387786853958)*x[0]**o+(0.455299305562)*x[0]+(0.690526696082)*x[1]**o+(0.192809198912)*x[1]+(-0.0217815689027)*x[2]**o+(0.853966231049)*x[2]  
         s[2,2,1,1]=(0.399193164297)*x[0]**o+(0.19349639518)*x[0]+(0.317501609824)*x[1]**o+(0.240510267197)*x[1]+(0.0450712212053)*x[2]**o+(0.565853605939)*x[2]  
         s[2,2,2,0]=(0.0853562286915)*x[0]**o+(0.122662799465)*x[0]+(0.26271658282)*x[1]**o+(0.90975618664)*x[1]+(-0.4111835609)*x[2]**o+(0.813644048231)*x[2]  
         s[2,2,2,1]=(-0.852594000157)*x[0]**o+(-0.38507970023)*x[0]+(-0.232827312227)*x[1]**o+(0.00790525919862)*x[1]+(-0.3900612508)*x[2]**o+(-0.655554313153)*x[2]  
         s[2,3,0,0]=(0.636184557317)*x[0]**o+(-0.549119485575)*x[0]+(-0.948821359516)*x[1]**o+(0.131451687899)*x[1]+(0.670399101185)*x[2]**o+(0.489217491983)*x[2]  
         s[2,3,0,1]=(-0.856150893763)*x[0]**o+(-0.280815300266)*x[0]+(-0.523050266221)*x[1]**o+(0.520191604865)*x[1]+(0.0521766680699)*x[2]**o+(0.900107417471)*x[2]  
         s[2,3,1,0]=(0.826705547671)*x[0]**o+(0.840439089501)*x[0]+(0.170261390802)*x[1]**o+(0.0811180372799)*x[1]+(-0.150910532868)*x[2]**o+(-0.312396418734)*x[2]  
         s[2,3,1,1]=(-0.761542055765)*x[0]**o+(-0.972348306591)*x[0]+(0.872426053365)*x[1]**o+(-0.395809987519)*x[1]+(0.731896957461)*x[2]**o+(0.743098137394)*x[2]  
         s[2,3,2,0]=(0.702021470374)*x[0]**o+(-0.378108346769)*x[0]+(-0.931728063859)*x[1]**o+(0.387496129463)*x[1]+(-0.0627914582829)*x[2]**o+(-0.648454760891)*x[2]  
         s[2,3,2,1]=(0.694922709107)*x[0]**o+(0.348731283066)*x[0]+(-0.772113301946)*x[1]**o+(0.958191340446)*x[1]+(0.227272159891)*x[2]**o+(-0.553319421819)*x[2]  
         s[2,4,0,0]=(0.201119725976)*x[0]**o+(0.593100698188)*x[0]+(-0.140057809068)*x[1]**o+(-0.0952566649925)*x[1]+(-0.851826547872)*x[2]**o+(0.505822022941)*x[2]  
         s[2,4,0,1]=(0.0212756051792)*x[0]**o+(0.612323788569)*x[0]+(-0.582655513686)*x[1]**o+(0.461920977901)*x[1]+(0.45615084988)*x[2]**o+(-0.831485043604)*x[2]  
         s[2,4,1,0]=(-0.896264627494)*x[0]**o+(0.130655495842)*x[0]+(-0.51905734937)*x[1]**o+(-0.850916009006)*x[1]+(-0.927481150342)*x[2]**o+(-0.394829448395)*x[2]  
         s[2,4,1,1]=(0.589011113198)*x[0]**o+(0.779837449297)*x[0]+(-0.404231103183)*x[1]**o+(-0.818485472133)*x[1]+(-0.975586808573)*x[2]**o+(-0.140406688026)*x[2]  
         s[2,4,2,0]=(0.621779862491)*x[0]**o+(-0.761880142681)*x[0]+(0.373695582445)*x[1]**o+(0.822746723299)*x[1]+(-0.0828625534579)*x[2]**o+(0.0737978389046)*x[2]  
         s[2,4,2,1]=(-0.565625067907)*x[0]**o+(-0.494605807934)*x[0]+(-0.16016442955)*x[1]**o+(0.154859091053)*x[1]+(0.274690562477)*x[2]**o+(-0.0880681582431)*x[2]  
         s[3,0,0,0]=(-0.876284142284)*x[0]**o+(0.833701643665)*x[0]+(-0.343394927755)*x[1]**o+(0.750989322932)*x[1]+(-0.0929682612771)*x[2]**o+(-0.098548374762)*x[2]  
         s[3,0,0,1]=(-0.894241201097)*x[0]**o+(0.960924642371)*x[0]+(-0.385879848199)*x[1]**o+(-0.0740790803068)*x[1]+(-0.202098139954)*x[2]**o+(0.881367694352)*x[2]  
         s[3,0,1,0]=(-0.462333015258)*x[0]**o+(-0.209675407943)*x[0]+(-0.162580359293)*x[1]**o+(0.699769354405)*x[1]+(0.505842739219)*x[2]**o+(-0.0511954656814)*x[2]  
         s[3,0,1,1]=(-0.560563273256)*x[0]**o+(-0.798740244759)*x[0]+(0.661483757231)*x[1]**o+(0.160669606575)*x[1]+(-0.433798248002)*x[2]**o+(-0.573448279579)*x[2]  
         s[3,0,2,0]=(-0.05963441333)*x[0]**o+(0.123422468842)*x[0]+(-0.0794480113474)*x[1]**o+(-0.980566064632)*x[1]+(0.172807620144)*x[2]**o+(0.290739484628)*x[2]  
         s[3,0,2,1]=(-0.824869737132)*x[0]**o+(-0.236911913997)*x[0]+(-0.168741303105)*x[1]**o+(0.115993599766)*x[1]+(0.345866352676)*x[2]**o+(-0.810213944202)*x[2]  
         s[3,1,0,0]=(-0.413325465485)*x[0]**o+(0.622383829933)*x[0]+(-0.517445935411)*x[1]**o+(0.968177050325)*x[1]+(-0.257376473971)*x[2]**o+(0.614956161076)*x[2]  
         s[3,1,0,1]=(0.998189367064)*x[0]**o+(0.222064685116)*x[0]+(0.0082228342872)*x[1]**o+(-0.779543154084)*x[1]+(-0.566689004021)*x[2]**o+(0.580783912818)*x[2]  
         s[3,1,1,0]=(0.245064518006)*x[0]**o+(0.252652697672)*x[0]+(-0.0750782925877)*x[1]**o+(0.216217715236)*x[1]+(-0.0766336852144)*x[2]**o+(0.819380420323)*x[2]  
         s[3,1,1,1]=(-0.262865184606)*x[0]**o+(0.200232864872)*x[0]+(0.378217877682)*x[1]**o+(-0.560693320189)*x[1]+(0.235131793324)*x[2]**o+(0.0374878565262)*x[2]  
         s[3,1,2,0]=(0.475538018977)*x[0]**o+(-0.731782099691)*x[0]+(-0.983895939904)*x[1]**o+(-0.505746472336)*x[1]+(-0.393214081403)*x[2]**o+(0.48342413719)*x[2]  
         s[3,1,2,1]=(0.298214379)*x[0]**o+(-0.232901801182)*x[0]+(-0.47025072398)*x[1]**o+(-0.0935590248775)*x[1]+(-0.270755608412)*x[2]**o+(0.232963599748)*x[2]  
         s[3,2,0,0]=(0.544547455045)*x[0]**o+(-0.238443336164)*x[0]+(0.104607358043)*x[1]**o+(0.700551882808)*x[1]+(-0.154865547453)*x[2]**o+(0.897044366696)*x[2]  
         s[3,2,0,1]=(-0.226438512542)*x[0]**o+(-0.889161505097)*x[0]+(0.844759329847)*x[1]**o+(0.67393984486)*x[1]+(0.600583328853)*x[2]**o+(0.14085768238)*x[2]  
         s[3,2,1,0]=(-0.303519143875)*x[0]**o+(-0.480627582343)*x[0]+(0.711647844961)*x[1]**o+(-0.827593833605)*x[1]+(-0.551933240305)*x[2]**o+(-0.358612992123)*x[2]  
         s[3,2,1,1]=(-0.284375845165)*x[0]**o+(-0.144660681111)*x[0]+(-0.520160492072)*x[1]**o+(0.175169216201)*x[1]+(-0.500839582917)*x[2]**o+(-0.816514398637)*x[2]  
         s[3,2,2,0]=(-0.563952264023)*x[0]**o+(0.104321734788)*x[0]+(-0.469018385204)*x[1]**o+(0.0093577376129)*x[1]+(-0.732696251175)*x[2]**o+(-0.178803413304)*x[2]  
         s[3,2,2,1]=(0.774737106755)*x[0]**o+(0.860675883412)*x[0]+(0.79787325945)*x[1]**o+(0.664362658951)*x[1]+(-0.178147456548)*x[2]**o+(-0.253548140518)*x[2]  
         s[3,3,0,0]=(-0.218464111878)*x[0]**o+(-0.255988638178)*x[0]+(0.278107535041)*x[1]**o+(0.40326101595)*x[1]+(-0.2331761004)*x[2]**o+(-0.317553406707)*x[2]  
         s[3,3,0,1]=(-0.537282071415)*x[0]**o+(0.601952446965)*x[0]+(0.381109335541)*x[1]**o+(0.669261809466)*x[1]+(0.945072492166)*x[2]**o+(0.853596132501)*x[2]  
         s[3,3,1,0]=(0.847664465983)*x[0]**o+(0.8066212639)*x[0]+(-0.857726357776)*x[1]**o+(0.474266813247)*x[1]+(-0.201605613201)*x[2]**o+(-0.793421334897)*x[2]  
         s[3,3,1,1]=(-0.420235472332)*x[0]**o+(0.691721844986)*x[0]+(-0.265495062345)*x[1]**o+(0.275291637819)*x[1]+(0.935918852363)*x[2]**o+(0.682857746339)*x[2]  
         s[3,3,2,0]=(-0.507370968068)*x[0]**o+(0.73174079427)*x[0]+(0.260834780217)*x[1]**o+(0.0234116684785)*x[1]+(-0.259405028241)*x[2]**o+(-0.95866122285)*x[2]  
         s[3,3,2,1]=(-0.739777982614)*x[0]**o+(-0.634784565277)*x[0]+(-0.459700756224)*x[1]**o+(-0.668028439149)*x[1]+(0.543643060627)*x[2]**o+(0.481120453087)*x[2]  
         s[3,4,0,0]=(-0.564521203332)*x[0]**o+(0.875264891992)*x[0]+(-0.711596964515)*x[1]**o+(0.516599187629)*x[1]+(0.803187045453)*x[2]**o+(0.130416944939)*x[2]  
         s[3,4,0,1]=(-0.233194158029)*x[0]**o+(0.124405220571)*x[0]+(-0.0969251448946)*x[1]**o+(-0.13351738113)*x[1]+(-0.426939325117)*x[2]**o+(-0.0127989581875)*x[2]  
         s[3,4,1,0]=(-0.654825260357)*x[0]**o+(-0.073851613222)*x[0]+(-0.866970362806)*x[1]**o+(-0.417768390991)*x[1]+(0.876189107492)*x[2]**o+(0.57905826773)*x[2]  
         s[3,4,1,1]=(0.62991933581)*x[0]**o+(0.0333499904703)*x[0]+(0.296962053291)*x[1]**o+(-0.203151609982)*x[1]+(-0.416709189249)*x[2]**o+(-0.815746328506)*x[2]  
         s[3,4,2,0]=(-0.720775085901)*x[0]**o+(0.96283858374)*x[0]+(0.23423515114)*x[1]**o+(0.640634860355)*x[1]+(-0.819346396686)*x[2]**o+(-0.807002446047)*x[2]  
         s[3,4,2,1]=(-0.0608202717996)*x[0]**o+(0.339885794306)*x[0]+(-0.317314034496)*x[1]**o+(-0.672508392809)*x[1]+(0.63517267097)*x[2]**o+(-0.00885735344423)*x[2]  
         ref[0,0,0,0]=(0.284952784158)/(o+1.)+(0.592032235941)  
         ref[0,0,0,1]=(-0.803451440889)/(o+1.)+(0.0224418156084)  
         ref[0,0,1,0]=(0.638402520436)/(o+1.)+(0.0311038353355)  
         ref[0,0,1,1]=(0.307272122952)/(o+1.)+(0.0104780524684)  
         ref[0,0,2,0]=(-0.502107719245)/(o+1.)+(-0.515645130678)  
         ref[0,0,2,1]=(1.81768999676)/(o+1.)+(0.146737736684)  
         ref[0,1,0,0]=(0.647820033767)/(o+1.)+(0.391233423499)  
         ref[0,1,0,1]=(0.436092125372)/(o+1.)+(0.106230136165)  
         ref[0,1,1,0]=(1.28557716642)/(o+1.)+(0.0374861393842)  
         ref[0,1,1,1]=(-0.0491708546408)/(o+1.)+(-0.295525989953)  
         ref[0,1,2,0]=(1.70047149916)/(o+1.)+(-0.214455033205)  
         ref[0,1,2,1]=(-1.14969489881)/(o+1.)+(0.588651941542)  
         ref[0,2,0,0]=(-0.955825457958)/(o+1.)+(-0.0190999661809)  
         ref[0,2,0,1]=(0.229929844366)/(o+1.)+(-0.30311165791)  
         ref[0,2,1,0]=(-2.57462574161)/(o+1.)+(-0.197980362151)  
         ref[0,2,1,1]=(-0.0419001621974)/(o+1.)+(-0.379828843312)  
         ref[0,2,2,0]=(-1.18351050669)/(o+1.)+(0.449768277313)  
         ref[0,2,2,1]=(1.87822513678)/(o+1.)+(0.622693263344)  
         ref[0,3,0,0]=(-0.0192193497223)/(o+1.)+(-0.274332614077)  
         ref[0,3,0,1]=(1.05610437756)/(o+1.)+(-0.0158328399745)  
         ref[0,3,1,0]=(-0.331289176593)/(o+1.)+(-0.023771634635)  
         ref[0,3,1,1]=(-0.886769594367)/(o+1.)+(0.0191560107572)  
         ref[0,3,2,0]=(0.554322811543)/(o+1.)+(0.324586599411)  
         ref[0,3,2,1]=(0.757364125068)/(o+1.)+(0.0103767719331)  
         ref[0,4,0,0]=(1.43319447117)/(o+1.)+(0.489873010572)  
         ref[0,4,0,1]=(-1.54717367706)/(o+1.)+(-0.327842424773)  
         ref[0,4,1,0]=(-1.02675093873)/(o+1.)+(-0.206388699347)  
         ref[0,4,1,1]=(0.757998827253)/(o+1.)+(-0.892263769148)  
         ref[0,4,2,0]=(0.979004551362)/(o+1.)+(-0.801869395247)  
         ref[0,4,2,1]=(-2.23425638002)/(o+1.)+(-1.20737466522)  
         ref[1,0,0,0]=(0.515302843784)/(o+1.)+(-0.162675558238)  
         ref[1,0,0,1]=(0.353191474341)/(o+1.)+(-0.310747202442)  
         ref[1,0,1,0]=(0.11330663338)/(o+1.)+(-0.0294705495767)  
         ref[1,0,1,1]=(0.0625851979387)/(o+1.)+(-0.6942697411)  
         ref[1,0,2,0]=(-0.634856196829)/(o+1.)+(0.233519187832)  
         ref[1,0,2,1]=(0.758008553799)/(o+1.)+(-0.22308748171)  
         ref[1,1,0,0]=(0.172197996272)/(o+1.)+(0.864945864826)  
         ref[1,1,0,1]=(-0.0930030974171)/(o+1.)+(0.444243956798)  
         ref[1,1,1,0]=(-0.0301833795362)/(o+1.)+(0.404852886018)  
         ref[1,1,1,1]=(0.100136649986)/(o+1.)+(1.28659380019)  
         ref[1,1,2,0]=(-0.97900883033)/(o+1.)+(0.442440382588)  
         ref[1,1,2,1]=(0.792392656026)/(o+1.)+(0.181706071395)  
         ref[1,2,0,0]=(-0.453470794812)/(o+1.)+(0.111351337976)  
         ref[1,2,0,1]=(1.56202220869)/(o+1.)+(-0.511185001555)  
         ref[1,2,1,0]=(0.659810976864)/(o+1.)+(0.621766984989)  
         ref[1,2,1,1]=(1.91781515919)/(o+1.)+(0.0691044934815)  
         ref[1,2,2,0]=(0.611207129327)/(o+1.)+(-0.497184221995)  
         ref[1,2,2,1]=(1.65028805445)/(o+1.)+(-0.0280822974985)  
         ref[1,3,0,0]=(-1.28735344741)/(o+1.)+(-0.680605269048)  
         ref[1,3,0,1]=(0.256443215625)/(o+1.)+(-0.161440006142)  
         ref[1,3,1,0]=(0.561119040305)/(o+1.)+(0.227463879795)  
         ref[1,3,1,1]=(0.327555206284)/(o+1.)+(0.29622756806)  
         ref[1,3,2,0]=(0.0665337521742)/(o+1.)+(0.77129792303)  
         ref[1,3,2,1]=(1.36356118866)/(o+1.)+(-0.0276174494925)  
         ref[1,4,0,0]=(0.793908154771)/(o+1.)+(-0.703932363283)  
         ref[1,4,0,1]=(0.67317694748)/(o+1.)+(0.419078081349)  
         ref[1,4,1,0]=(-1.6259928924)/(o+1.)+(-0.0422868647694)  
         ref[1,4,1,1]=(0.573888422973)/(o+1.)+(-0.0709319079127)  
         ref[1,4,2,0]=(-1.32097669048)/(o+1.)+(0.981719850544)  
         ref[1,4,2,1]=(1.31804256932)/(o+1.)+(-0.464008585329)  
         ref[2,0,0,0]=(0.131285227429)/(o+1.)+(-0.27188947549)  
         ref[2,0,0,1]=(-0.534412041331)/(o+1.)+(-0.502296977244)  
         ref[2,0,1,0]=(0.0835036877928)/(o+1.)+(0.675471052627)  
         ref[2,0,1,1]=(-1.0534161098)/(o+1.)+(0.312025059983)  
         ref[2,0,2,0]=(0.774008222845)/(o+1.)+(0.668233731266)  
         ref[2,0,2,1]=(0.273211710533)/(o+1.)+(-0.656092090992)  
         ref[2,1,0,0]=(0.0276836248637)/(o+1.)+(0.0865731702563)  
         ref[2,1,0,1]=(-1.45387179966)/(o+1.)+(-0.198937400068)  
         ref[2,1,1,0]=(-0.870829853631)/(o+1.)+(-0.523273805792)  
         ref[2,1,1,1]=(0.987550331752)/(o+1.)+(-0.871586545966)  
         ref[2,1,2,0]=(-0.188404489031)/(o+1.)+(-0.917217646504)  
         ref[2,1,2,1]=(1.01318413367)/(o+1.)+(-0.338229998699)  
         ref[2,2,0,0]=(-1.14509068713)/(o+1.)+(-0.141129573573)  
         ref[2,2,0,1]=(-0.303957214603)/(o+1.)+(-0.966870476981)  
         ref[2,2,1,0]=(0.280958273221)/(o+1.)+(0.751037367762)  
         ref[2,2,1,1]=(0.761765995326)/(o+1.)+(0.499930134158)  
         ref[2,2,2,0]=(-0.0631107493882)/(o+1.)+(0.923031517168)  
         ref[2,2,2,1]=(-1.47548256318)/(o+1.)+(-0.516364377092)  
         ref[2,3,0,0]=(0.357762298985)/(o+1.)+(0.0357748471536)  
         ref[2,3,0,1]=(-1.32702449191)/(o+1.)+(0.569741861035)  
         ref[2,3,1,0]=(0.846056405606)/(o+1.)+(0.304580354023)  
         ref[2,3,1,1]=(0.842780955061)/(o+1.)+(-0.312530078358)  
         ref[2,3,2,0]=(-0.292498051768)/(o+1.)+(-0.319533489098)  
         ref[2,3,2,1]=(0.150081567052)/(o+1.)+(0.376801600846)  
         ref[2,4,0,0]=(-0.790764630964)/(o+1.)+(0.501833028068)  
         ref[2,4,0,1]=(-0.105229058628)/(o+1.)+(0.121379861433)  
         ref[2,4,1,0]=(-2.34280312721)/(o+1.)+(-0.557544980779)  
         ref[2,4,1,1]=(-0.790806798558)/(o+1.)+(-0.0895273554309)  
         ref[2,4,2,0]=(0.912612891478)/(o+1.)+(0.0673322097612)  
         ref[2,4,2,1]=(-0.45109893498)/(o+1.)+(-0.213907437562)  
         ref[3,0,0,0]=(-1.31264733132)/(o+1.)+(0.743071295917)  
         ref[3,0,0,1]=(-1.48221918925)/(o+1.)+(0.884106628208)  
         ref[3,0,1,0]=(-0.119070635332)/(o+1.)+(0.21944924039)  
         ref[3,0,1,1]=(-0.332877764028)/(o+1.)+(-0.605759458881)  
         ref[3,0,2,0]=(0.0337251954668)/(o+1.)+(-0.283202055581)  
         ref[3,0,2,1]=(-0.64774468756)/(o+1.)+(-0.465566129216)  
         ref[3,1,0,0]=(-1.18814787487)/(o+1.)+(1.10275852067)  
         ref[3,1,0,1]=(0.43972319733)/(o+1.)+(0.0116527219252)  
         ref[3,1,1,0]=(0.0933525402037)/(o+1.)+(0.644125416616)  
         ref[3,1,1,1]=(0.350484486401)/(o+1.)+(-0.161486299395)  
         ref[3,1,2,0]=(-0.90157200233)/(o+1.)+(-0.377052217418)  
         ref[3,1,2,1]=(-0.442791953392)/(o+1.)+(-0.0467486131556)  
         ref[3,2,0,0]=(0.494289265635)/(o+1.)+(0.67957645667)  
         ref[3,2,0,1]=(1.21890414616)/(o+1.)+(-0.0371819889285)  
         ref[3,2,1,0]=(-0.143804539219)/(o+1.)+(-0.833417204036)  
         ref[3,2,1,1]=(-1.30537592015)/(o+1.)+(-0.393002931773)  
         ref[3,2,2,0]=(-1.7656669004)/(o+1.)+(-0.0325619704518)  
         ref[3,2,2,1]=(1.39446290966)/(o+1.)+(0.635745200922)  
         ref[3,3,0,0]=(-0.173532677236)/(o+1.)+(-0.0851405144673)  
         ref[3,3,0,1]=(0.788899756292)/(o+1.)+(1.06240519447)  
         ref[3,3,1,0]=(-0.211667504994)/(o+1.)+(0.243733371125)  
         ref[3,3,1,1]=(0.250188317686)/(o+1.)+(0.824935614572)  
         ref[3,3,2,0]=(-0.505941216092)/(o+1.)+(-0.101754380051)  
         ref[3,3,2,1]=(-0.655835678211)/(o+1.)+(-0.410846275669)  
         ref[3,4,0,0]=(-0.472931122393)/(o+1.)+(0.76114051228)  
         ref[3,4,0,1]=(-0.757058628041)/(o+1.)+(-0.0109555593731)  
         ref[3,4,1,0]=(-0.645606515671)/(o+1.)+(0.0437191317586)  
         ref[3,4,1,1]=(0.510172199852)/(o+1.)+(-0.492773974009)  
         ref[3,4,2,0]=(-1.30588633145)/(o+1.)+(0.398235499024)  
         ref[3,4,2,1]=(0.257038364674)/(o+1.)+(-0.170739975974)  
       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")  
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
3987     def test_integrate_onReducedFunction_fromData_ContinuousFunction_rank0(self):     def test_integrate_onReducedFunction_fromData_ContinuousFunction_rank0(self):
3988        """        """
3989        tests integral of rank 0 Data on the ReducedFunction        tests integral of rank 0 Data on the ReducedFunction
# Line 11749  class Test_Util_SpatialFunctions_noGradO Line 7839  class Test_Util_SpatialFunctions_noGradO
7839        self.assertEqual(res.shape,(4, 5, 3, 2),"wrong shape of result.")        self.assertEqual(res.shape,(4, 5, 3, 2),"wrong shape of result.")
7840        self.assertTrue(Lsup(res-ref)<=self.RES_TOL*Lsup(ref),"wrong result")        self.assertTrue(Lsup(res-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
7841     #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++     #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    def test_integrate_onReducedFunction_fromSymbol_ContinuousFunction_rank0(self):  
       """  
       tests integral of rank 0 Symbol on the ReducedFunction  
   
       assumptions: ContinuousFunction(self.domain) exists  
                    self.domain supports integral on ReducedFunction  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=ReducedFunction(self.domain)  
       w=ContinuousFunction(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=())  
       s=Data(0,(),w)  
       if dim==2:  
         s=(-0.640162884104)*x[0]**o+(-0.686170347303)*x[0]+(0.0531418393824)*x[1]**o+(-0.0288840863965)*x[1]  
         ref=(-0.587021044721)/(o+1.)+(-0.35752721685)  
       else:  
         s=(0.835059122976)*x[0]**o+(-0.876192510448)*x[0]+(0.229125107737)*x[1]**o+(-0.378923833918)*x[1]+(0.734383439043)*x[2]**o+(0.987756783011)*x[2]  
         ref=(1.79856766975)/(o+1.)+(-0.133679780678)  
       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_onReducedFunction_fromSymbol_ContinuousFunction_rank1(self):  
       """  
       tests integral of rank 1 Symbol on the ReducedFunction  
   
       assumptions: ContinuousFunction(self.domain) exists  
                    self.domain supports integral on ReducedFunction  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=ReducedFunction(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.292137623974)*x[0]**o+(0.75950865395)*x[0]+(-0.205837757637)*x[1]**o+(0.90443054103)*x[1]  
         s[1]=(0.407997882771)*x[0]**o+(0.335693471916)*x[0]+(0.755336837856)*x[1]**o+(0.218679559306)*x[1]  
         ref[0]=(-0.497975381612)/(o+1.)+(0.83196959749)  
         ref[1]=(1.16333472063)/(o+1.)+(0.277186515611)  
       else:  
         s[0]=(-0.393835090841)*x[0]**o+(-0.474828597107)*x[0]+(0.465782088981)*x[1]**o+(-0.882630637032)*x[1]+(0.849599914303)*x[2]**o+(0.737421732808)*x[2]  
         s[1]=(-0.589146617652)*x[0]**o+(-0.412139119114)*x[0]+(0.970406630484)*x[1]**o+(0.363942463909)*x[1]+(-0.372574721521)*x[2]**o+(-0.798081163974)*x[2]  
         ref[0]=(0.921546912444)/(o+1.)+(-0.310018750665)  
         ref[1]=(0.00868529131054)/(o+1.)+(-0.42313890959)  
       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_onReducedFunction_fromSymbol_ContinuousFunction_rank2(self):  
       """  
       tests integral of rank 2 Symbol on the ReducedFunction  
   
       assumptions: ContinuousFunction(self.domain) exists  
                    self.domain supports integral on ReducedFunction  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=ReducedFunction(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.542564643665)*x[0]**o+(0.869139399504)*x[0]+(-0.918464318956)*x[1]**o+(0.258557879364)*x[1]  
         s[0,1]=(0.797108788422)*x[0]**o+(-0.200368785173)*x[0]+(-0.518597299854)*x[1]**o+(-0.647852667874)*x[1]  
         s[0,2]=(0.692223658744)*x[0]**o+(-0.103586429107)*x[0]+(0.282165531986)*x[1]**o+(-0.191815912482)*x[1]  
         s[0,3]=(-0.370167730862)*x[0]**o+(-0.822713005318)*x[0]+(-0.00317012401339)*x[1]**o+(-0.848121245241)*x[1]  
         s[0,4]=(-0.52733376174)*x[0]**o+(-0.314966701977)*x[0]+(0.755974759737)*x[1]**o+(-0.483207203205)*x[1]  
         s[1,0]=(-0.709714610043)*x[0]**o+(0.647231907198)*x[0]+(-0.577474021122)*x[1]**o+(-0.124504757353)*x[1]  
         s[1,1]=(-0.723690611716)*x[0]**o+(-0.617424586153)*x[0]+(-0.536447933353)*x[1]**o+(0.255892253884)*x[1]  
         s[1,2]=(-0.201052994401)*x[0]**o+(-0.519971533366)*x[0]+(0.515314592901)*x[1]**o+(0.831783913039)*x[1]  
         s[1,3]=(0.505769313912)*x[0]**o+(-0.460235423669)*x[0]+(0.982458353968)*x[1]**o+(0.479022475503)*x[1]  
         s[1,4]=(0.624910824579)*x[0]**o+(0.563956018517)*x[0]+(0.0129379080194)*x[1]**o+(-0.634601977633)*x[1]  
         s[2,0]=(-0.765921383834)*x[0]**o+(0.0199045688425)*x[0]+(-0.0666443330576)*x[1]**o+(-0.929035862007)*x[1]  
         s[2,1]=(0.698423948822)*x[0]**o+(-0.529311289681)*x[0]+(-0.563339072497)*x[1]**o+(-0.494985449663)*x[1]  
         s[2,2]=(0.101812328764)*x[0]**o+(-0.922547259485)*x[0]+(-0.45388897835)*x[1]**o+(0.357458826452)*x[1]  
         s[2,3]=(0.643691149734)*x[0]**o+(-0.791395473264)*x[0]+(-0.919285047298)*x[1]**o+(-0.732314921151)*x[1]  
         s[2,4]=(0.770509137995)*x[0]**o+(-0.399023743738)*x[0]+(-0.0887239237676)*x[1]**o+(0.846766840231)*x[1]  
         s[3,0]=(-0.258188916476)*x[0]**o+(-0.192762172857)*x[0]+(-0.291360534186)*x[1]**o+(-0.828483492861)*x[1]  
         s[3,1]=(-0.180563503871)*x[0]**o+(0.411356882323)*x[0]+(0.144166964346)*x[1]**o+(-0.817750491386)*x[1]  
         s[3,2]=(-0.56008111033)*x[0]**o+(-0.903908126304)*x[0]+(-0.795710525329)*x[1]**o+(0.42957467817)*x[1]  
         s[3,3]=(-0.435823321725)*x[0]**o+(-0.687506280092)*x[0]+(0.512172892719)*x[1]**o+(0.624268656549)*x[1]  
         s[3,4]=(0.0995998270974)*x[0]**o+(0.54337587883)*x[0]+(-0.589282344971)*x[1]**o+(0.551709444954)*x[1]  
         ref[0,0]=(-0.375899675291)/(o+1.)+(0.563848639434)  
         ref[0,1]=(0.278511488568)/(o+1.)+(-0.424110726524)  
         ref[0,2]=(0.97438919073)/(o+1.)+(-0.147701170794)  
         ref[0,3]=(-0.373337854876)/(o+1.)+(-0.835417125279)  
         ref[0,4]=(0.228640997997)/(o+1.)+(-0.399086952591)  
         ref[1,0]=(-1.28718863116)/(o+1.)+(0.261363574923)  
         ref[1,1]=(-1.26013854507)/(o+1.)+(-0.180766166134)  
         ref[1,2]=(0.3142615985)/(o+1.)+(0.155906189837)  
         ref[1,3]=(1.48822766788)/(o+1.)+(0.00939352591692)  
         ref[1,4]=(0.637848732599)/(o+1.)+(-0.0353229795581)  
         ref[2,0]=(-0.832565716891)/(o+1.)+(-0.454565646582)  
         ref[2,1]=(0.135084876326)/(o+1.)+(-0.512148369672)  
         ref[2,2]=(-0.352076649587)/(o+1.)+(-0.282544216517)  
         ref[2,3]=(-0.275593897564)/(o+1.)+(-0.761855197208)  
         ref[2,4]=(0.681785214228)/(o+1.)+(0.223871548247)  
         ref[3,0]=(-0.549549450662)/(o+1.)+(-0.510622832859)  
         ref[3,1]=(-0.0363965395244)/(o+1.)+(-0.203196804532)  
         ref[3,2]=(-1.35579163566)/(o+1.)+(-0.237166724067)  
         ref[3,3]=(0.0763495709944)/(o+1.)+(-0.0316188117717)  
         ref[3,4]=(-0.489682517873)/(o+1.)+(0.547542661892)  
       else:  
         s[0,0]=(-0.547777970569)*x[0]**o+(-0.644569779184)*x[0]+(-0.247447574507)*x[1]**o+(-0.165674972238)*x[1]+(0.492011982518)*x[2]**o+(0.824373100652)*x[2]  
         s[0,1]=(0.714120627471)*x[0]**o+(-0.343344240726)*x[0]+(0.846874965081)*x[1]**o+(0.955417725709)*x[1]+(-0.462347625853)*x[2]**o+(0.236518016678)*x[2]  
         s[0,2]=(0.649286582806)*x[0]**o+(-0.712764590386)*x[0]+(-0.364435855331)*x[1]**o+(0.529624579838)*x[1]+(-0.478005452391)*x[2]**o+(0.79676822654)*x[2]  
         s[0,3]=(0.186538430487)*x[0]**o+(0.873009863028)*x[0]+(-0.617246224023)*x[1]**o+(0.212670710234)*x[1]+(-0.568924203263)*x[2]**o+(-0.591868989872)*x[2]  
         s[0,4]=(0.0764403834746)*x[0]**o+(0.580116472215)*x[0]+(-0.964832163438)*x[1]**o+(0.146621202039)*x[1]+(0.303667547632)*x[2]**o+(-0.572109268772)*x[2]  
         s[1,0]=(0.0466497527173)*x[0]**o+(-0.660397185235)*x[0]+(0.314235627776)*x[1]**o+(-0.0219053335847)*x[1]+(0.0341017375209)*x[2]**o+(-0.138388505919)*x[2]  
         s[1,1]=(-0.306253609605)*x[0]**o+(-0.274894845016)*x[0]+(0.590915613652)*x[1]**o+(0.466423547973)*x[1]+(-0.65224024787)*x[2]**o+(0.011478276889)*x[2]  
         s[1,2]=(-0.850811667442)*x[0]**o+(-0.362611692783)*x[0]+(-0.132198189858)*x[1]**o+(0.613225855964)*x[1]+(-0.995844863385)*x[2]**o+(-0.00228774595319)*x[2]  
         s[1,3]=(-0.331021120468)*x[0]**o+(0.262316324101)*x[0]+(0.693647465307)*x[1]**o+(-0.758663328061)*x[1]+(0.563291863323)*x[2]**o+(-0.464786381036)*x[2]  
         s[1,4]=(-0.297063926313)*x[0]**o+(0.258694451069)*x[0]+(0.453986223203)*x[1]**o+(0.516652862875)*x[1]+(-0.119453447306)*x[2]**o+(0.13369866553)*x[2]  
         s[2,0]=(0.895304992051)*x[0]**o+(-0.581521556328)*x[0]+(-0.102534354406)*x[1]**o+(-0.312191328622)*x[1]+(0.00625028874943)*x[2]**o+(0.455967398752)*x[2]  
         s[2,1]=(0.0129094351309)*x[0]**o+(-0.284360799298)*x[0]+(0.254610787505)*x[1]**o+(0.232923077121)*x[1]+(0.884382417671)*x[2]**o+(0.879710026011)*x[2]  
         s[2,2]=(0.978354808904)*x[0]**o+(0.45417061753)*x[0]+(-0.617831296441)*x[1]**o+(-0.540161947193)*x[1]+(0.749817874967)*x[2]**o+(0.85276098284)*x[2]  
         s[2,3]=(0.790036783517)*x[0]**o+(-0.461944315129)*x[0]+(0.0177930616139)*x[1]**o+(0.827267186021)*x[1]+(-0.5681970366)*x[2]**o+(0.0800529373343)*x[2]  
         s[2,4]=(0.320372577784)*x[0]**o+(-0.988843069534)*x[0]+(0.366830399498)*x[1]**o+(0.0749365557309)*x[1]+(-0.964416326732)*x[2]**o+(0.0589434543979)*x[2]  
         s[3,0]=(-0.143156890467)*x[0]**o+(0.665143613007)*x[0]+(0.324524292861)*x[1]**o+(0.573292071297)*x[1]+(0.55975986068)*x[2]**o+(-0.703161304253)*x[2]  
         s[3,1]=(0.827768123756)*x[0]**o+(-0.565184841493)*x[0]+(0.724124619351)*x[1]**o+(-0.375933144184)*x[1]+(-0.186573364344)*x[2]**o+(0.174303241336)*x[2]  
         s[3,2]=(0.19505934899)*x[0]**o+(-0.378308488179)*x[0]+(-0.542115440091)*x[1]**o+(-0.864956237152)*x[1]+(0.0489116293809)*x[2]**o+(0.149786871599)*x[2]  
         s[3,3]=(-0.151225736973)*x[0]**o+(-0.491229793833)*x[0]+(-0.704529608083)*x[1]**o+(-0.790051884866)*x[1]+(-0.202633581578)*x[2]**o+(0.0769118984781)*x[2]  
         s[3,4]=(0.523527337562)*x[0]**o+(0.266094832079)*x[0]+(-0.147028009699)*x[1]**o+(-0.683770701764)*x[1]+(0.794443408406)*x[2]**o+(-0.0536824425549)*x[2]  
         ref[0,0]=(-0.303213562559)/(o+1.)+(0.00706417461518)  
         ref[0,1]=(1.0986479667)/(o+1.)+(0.42429575083)  
         ref[0,2]=(-0.193154724916)/(o+1.)+(0.306814107996)  
         ref[0,3]=(-0.999631996799)/(o+1.)+(0.246905791695)  
         ref[0,4]=(-0.584724232331)/(o+1.)+(0.0773142027411)  
         ref[1,0]=(0.394987118014)/(o+1.)+(-0.410345512369)  
         ref[1,1]=(-0.367578243823)/(o+1.)+(0.101503489923)  
         ref[1,2]=(-1.97885472069)/(o+1.)+(0.124163208614)  
         ref[1,3]=(0.925918208162)/(o+1.)+(-0.480566692498)  
         ref[1,4]=(0.0374688495844)/(o+1.)+(0.454522989737)  
         ref[2,0]=(0.799020926395)/(o+1.)+(-0.218872743099)  
         ref[2,1]=(1.15190264031)/(o+1.)+(0.414136151917)  
         ref[2,2]=(1.11034138743)/(o+1.)+(0.383384826588)  
         ref[2,3]=(0.239632808531)/(o+1.)+(0.222687904113)  
         ref[2,4]=(-0.27721334945)/(o+1.)+(-0.427481529703)  
         ref[3,0]=(0.741127263073)/(o+1.)+(0.267637190026)  
         ref[3,1]=(1.36531937876)/(o+1.)+(-0.383407372171)  
         ref[3,2]=(-0.29814446172)/(o+1.)+(-0.546738926866)  
         ref[3,3]=(-1.05838892663)/(o+1.)+(-0.602184890111)  
         ref[3,4]=(1.17094273627)/(o+1.)+(-0.23567915612)  
       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_onReducedFunction_fromSymbol_ContinuousFunction_rank3(self):  
       """  
       tests integral of rank 3 Symbol on the ReducedFunction  
   
       assumptions: ContinuousFunction(self.domain) exists  
                    self.domain supports integral on ReducedFunction  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=ReducedFunction(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.630010583318)*x[0]**o+(0.0494796640212)*x[0]+(0.471665362166)*x[1]**o+(0.392459033784)*x[1]  
         s[0,0,1]=(-0.423295675063)*x[0]**o+(0.24240367131)*x[0]+(-0.724581249901)*x[1]**o+(-0.131295119605)*x[1]  
         s[0,1,0]=(-0.410928342692)*x[0]**o+(-0.541418037237)*x[0]+(-0.232546576693)*x[1]**o+(-0.0784119675747)*x[1]  
         s[0,1,1]=(0.789988066595)*x[0]**o+(-0.243498836345)*x[0]+(0.368561675765)*x[1]**o+(-0.747610528524)*x[1]  
         s[1,0,0]=(-0.326293541804)*x[0]**o+(0.101066389163)*x[0]+(-0.184367851)*x[1]**o+(0.568769737008)*x[1]  
         s[1,0,1]=(-0.015503180143)*x[0]**o+(0.819464848547)*x[0]+(0.979976262017)*x[1]**o+(-0.0389216169058)*x[1]  
         s[1,1,0]=(-0.542766421816)*x[0]**o+(-0.373053336375)*x[0]+(-0.938010294052)*x[1]**o+(-0.399667401896)*x[1]  
         s[1,1,1]=(0.0200936228416)*x[0]**o+(0.770519603961)*x[0]+(0.620955090369)*x[1]**o+(-0.330894822252)*x[1]  
         s[2,0,0]=(-0.171145765903)*x[0]**o+(0.612313985433)*x[0]+(0.0479528062441)*x[1]**o+(-0.281058939492)*x[1]  
         s[2,0,1]=(-0.332826833153)*x[0]**o+(0.944629304493)*x[0]+(-0.487576018254)*x[1]**o+(-0.904875326977)*x[1]  
         s[2,1,0]=(-0.00808555466364)*x[0]**o+(0.245367446684)*x[0]+(-0.164397692869)*x[1]**o+(-0.198574049753)*x[1]  
         s[2,1,1]=(-0.0469077421177)*x[0]**o+(0.89449436367)*x[0]+(-0.802161009378)*x[1]**o+(-0.0767107312174)*x[1]  
         s[3,0,0]=(0.530561159497)*x[0]**o+(-0.0909174483134)*x[0]+(0.159443779335)*x[1]**o+(-0.178020813545)*x[1]  
         s[3,0,1]=(-0.216531776351)*x[0]**o+(-0.531806095078)*x[0]+(0.653531437331)*x[1]**o+(0.21339193674)*x[1]  
         s[3,1,0]=(0.254391857637)*x[0]**o+(0.619393713071)*x[0]+(-0.260306661561)*x[1]**o+(-0.473743696717)*x[1]  
         s[3,1,1]=(-0.921367458187)*x[0]**o+(-0.69212037605)*x[0]+(0.6216551239)*x[1]**o+(0.7963578436)*x[1]  
         s[4,0,0]=(-0.506208138693)*x[0]**o+(-0.103718686465)*x[0]+(0.771724985573)*x[1]**o+(0.815749872065)*x[1]  
         s[4,0,1]=(-0.21355375924)*x[0]**o+(0.635638481649)*x[0]+(0.274581141313)*x[1]**o+(-0.947357183419)*x[1]  
         s[4,1,0]=(0.35658463006)*x[0]**o+(-0.351876832623)*x[0]+(-0.0999414279107)*x[1]**o+(0.212979499129)*x[1]  
         s[4,1,1]=(0.494190940488)*x[0]**o+(0.0851596543145)*x[0]+(-0.433440340709)*x[1]**o+(-0.0173667523032)*x[1]  
         s[5,0,0]=(0.53169691054)*x[0]**o+(0.952395156793)*x[0]+(-0.127903378991)*x[1]**o+(-0.605192547481)*x[1]  
         s[5,0,1]=(0.795535841954)*x[0]**o+(-0.615332450079)*x[0]+(0.764586784938)*x[1]**o+(0.420251114523)*x[1]  
         s[5,1,0]=(-0.699722370082)*x[0]**o+(0.608404015259)*x[0]+(-0.166384830092)*x[1]**o+(-0.0611871373695)*x[1]  
         s[5,1,1]=(0.545721411662)*x[0]**o+(-0.426115151805)*x[0]+(-0.438291880099)*x[1]**o+(0.0686028790393)*x[1]  
         ref[0,0,0]=(1.10167594548)/(o+1.)+(0.220969348903)  
         ref[0,0,1]=(-1.14787692496)/(o+1.)+(0.055554275852)  
         ref[0,1,0]=(-0.643474919385)/(o+1.)+(-0.309915002406)  
         ref[0,1,1]=(1.15854974236)/(o+1.)+(-0.495554682434)  
         ref[1,0,0]=(-0.510661392804)/(o+1.)+(0.334918063085)  
         ref[1,0,1]=(0.964473081874)/(o+1.)+(0.390271615821)  
         ref[1,1,0]=(-1.48077671587)/(o+1.)+(-0.386360369136)  
         ref[1,1,1]=(0.64104871321)/(o+1.)+(0.219812390854)  
         ref[2,0,0]=(-0.123192959659)/(o+1.)+(0.16562752297)  
         ref[2,0,1]=(-0.820402851406)/(o+1.)+(0.0198769887578)  
         ref[2,1,0]=(-0.172483247533)/(o+1.)+(0.0233966984659)  
         ref[2,1,1]=(-0.849068751496)/(o+1.)+(0.408891816226)  
         ref[3,0,0]=(0.690004938832)/(o+1.)+(-0.134469130929)  
         ref[3,0,1]=(0.43699966098)/(o+1.)+(-0.159207079169)  
         ref[3,1,0]=(-0.00591480392415)/(o+1.)+(0.0728250081768)  
         ref[3,1,1]=(-0.299712334287)/(o+1.)+(0.0521187337749)  
         ref[4,0,0]=(0.265516846879)/(o+1.)+(0.3560155928)  
         ref[4,0,1]=(0.0610273820724)/(o+1.)+(-0.155859350885)  
         ref[4,1,0]=(0.256643202149)/(o+1.)+(-0.0694486667468)  
         ref[4,1,1]=(0.0607505997785)/(o+1.)+(0.0338964510057)  
         ref[5,0,0]=(0.403793531549)/(o+1.)+(0.173601304656)  
         ref[5,0,1]=(1.56012262689)/(o+1.)+(-0.0975406677777)  
         ref[5,1,0]=(-0.866107200175)/(o+1.)+(0.273608438945)  
         ref[5,1,1]=(0.107429531563)/(o+1.)+(-0.178756136383)  
       else:  
         s[0,0,0]=(0.584550224653)*x[0]**o+(-0.106569322848)*x[0]+(0.728893354651)*x[1]**o+(0.237029650377)*x[1]+(-0.546491966553)*x[2]**o+(0.0390698430932)*x[2]  
         s[0,0,1]=(0.0636227774465)*x[0]**o+(0.934881844205)*x[0]+(-0.545166942655)*x[1]**o+(0.08148757249)*x[1]+(-0.179461185461)*x[2]**o+(0.641018091939)*x[2]  
         s[0,1,0]=(0.325463516488)*x[0]**o+(-0.620730155784)*x[0]+(0.154991661017)*x[1]**o+(0.245046216313)*x[1]+(0.645726837044)*x[2]**o+(-0.230093713841)*x[2]  
         s[0,1,1]=(-0.321016164146)*x[0]**o+(-0.0509943423674)*x[0]+(-0.479999557029)*x[1]**o+(0.569709724552)*x[1]+(0.190221146753)*x[2]**o+(-0.919477787005)*x[2]  
         s[1,0,0]=(0.929113150774)*x[0]**o+(-0.733802947668)*x[0]+(0.8108269457)*x[1]**o+(-0.488163027335)*x[1]+(-0.745575620351)*x[2]**o+(-0.486955144862)*x[2]  
         s[1,0,1]=(-0.017329684129)*x[0]**o+(0.147982077718)*x[0]+(-0.144958156543)*x[1]**o+(-0.300572864309)*x[1]+(0.00787918928353)*x[2]**o+(-0.532824168573)*x[2]  
         s[1,1,0]=(0.685828903913)*x[0]**o+(-0.567114040704)*x[0]+(-0.0471407827804)*x[1]**o+(0.511415127351)*x[1]+(-0.554086444893)*x[2]**o+(-0.226435378121)*x[2]  
         s[1,1,1]=(-0.415793464117)*x[0]**o+(-0.777707665965)*x[0]+(-0.846630968003)*x[1]**o+(0.389596880295)*x[1]+(-0.213682650766)*x[2]**o+(-0.0851017843465)*x[2]  
         s[2,0,0]=(0.932561239744)*x[0]**o+(0.0615709255597)*x[0]+(0.634288279118)*x[1]**o+(0.293277319848)*x[1]+(-0.429481015254)*x[2]**o+(0.778577347672)*x[2]  
         s[2,0,1]=(0.857123773566)*x[0]**o+(-0.47446916241)*x[0]+(0.951211790713)*x[1]**o+(0.443028899356)*x[1]+(0.0861361311835)*x[2]**o+(0.597277083437)*x[2]  
         s[2,1,0]=(0.874693704519)*x[0]**o+(-0.920294692148)*x[0]+(-0.03228863342)*x[1]**o+(0.248843294667)*x[1]+(-0.926343823806)*x[2]**o+(0.15109837142)*x[2]  
         s[2,1,1]=(0.840368685645)*x[0]**o+(-0.200563324888)*x[0]+(0.88039674632)*x[1]**o+(-0.349512401298)*x[1]+(0.25915053789)*x[2]**o+(-0.48356523029)*x[2]  
         s[3,0,0]=(0.758393510867)*x[0]**o+(0.666093057943)*x[0]+(-0.453617931299)*x[1]**o+(-0.134152843992)*x[1]+(-0.0117598390465)*x[2]**o+(-0.730981155782)*x[2]  
         s[3,0,1]=(0.205572845432)*x[0]**o+(0.46935055342)*x[0]+(-0.415086164167)*x[1]**o+(0.276709685737)*x[1]+(0.341889576347)*x[2]**o+(0.170610214566)*x[2]  
         s[3,1,0]=(0.926107056617)*x[0]**o+(-0.928101461122)*x[0]+(-0.639162904468)*x[1]**o+(-0.787501002441)*x[1]+(0.615156638997)*x[2]**o+(0.444030323472)*x[2]  
         s[3,1,1]=(0.458304153272)*x[0]**o+(0.119383772473)*x[0]+(-0.816833779036)*x[1]**o+(0.428980054603)*x[1]+(0.176196071727)*x[2]**o+(0.294498083663)*x[2]  
         s[4,0,0]=(-0.184477855098)*x[0]**o+(-0.281312358692)*x[0]+(-0.259869292769)*x[1]**o+(0.670877642172)*x[1]+(0.710140723846)*x[2]**o+(-0.738455024569)*x[2]  
         s[4,0,1]=(0.790994543706)*x[0]**o+(0.594490423343)*x[0]+(0.737641957747)*x[1]**o+(-0.974154697219)*x[1]+(-0.228328212417)*x[2]**o+(-0.870422565759)*x[2]  
         s[4,1,0]=(0.538277719545)*x[0]**o+(0.0405414212643)*x[0]+(-0.340695322783)*x[1]**o+(-0.925052511534)*x[1]+(0.77026668428)*x[2]**o+(0.872129470246)*x[2]  
         s[4,1,1]=(0.35315629997)*x[0]**o+(-0.581808852999)*x[0]+(-0.506082324541)*x[1]**o+(-0.979298372486)*x[1]+(0.269130557602)*x[2]**o+(0.0297188290624)*x[2]  
         s[5,0,0]=(0.13627346547)*x[0]**o+(-0.634005099347)*x[0]+(0.413163361533)*x[1]**o+(-0.445924057754)*x[1]+(0.317763103856)*x[2]**o+(-0.0934833794122)*x[2]  
         s[5,0,1]=(0.775864446863)*x[0]**o+(0.647005517482)*x[0]+(-0.922488575786)*x[1]**o+(0.592973645448)*x[1]+(0.752015212966)*x[2]**o+(-0.700335290015)*x[2]  
         s[5,1,0]=(0.376707292205)*x[0]**o+(-0.185352369466)*x[0]+(0.701616000772)*x[1]**o+(-0.496738161848)*x[1]+(-0.722103675479)*x[2]**o+(-0.124090359996)*x[2]  
         s[5,1,1]=(-0.070302198698)*x[0]**o+(-0.701418359643)*x[0]+(0.131136807633)*x[1]**o+(-0.0581346703562)*x[1]+(0.378664686889)*x[2]**o+(0.785268912587)*x[2]  
         ref[0,0,0]=(0.766951612751)/(o+1.)+(0.0847650853109)  
         ref[0,0,1]=(-0.66100535067)/(o+1.)+(0.828693754317)  
         ref[0,1,0]=(1.12618201455)/(o+1.)+(-0.302888826656)  
         ref[0,1,1]=(-0.610794574422)/(o+1.)+(-0.20038120241)  
         ref[1,0,0]=(0.994364476124)/(o+1.)+(-0.854460559932)  
         ref[1,0,1]=(-0.154408651388)/(o+1.)+(-0.342707477582)  
         ref[1,1,0]=(0.0846016762395)/(o+1.)+(-0.141067145737)  
         ref[1,1,1]=(-1.47610708289)/(o+1.)+(-0.236606285008)  
         ref[2,0,0]=(1.13736850361)/(o+1.)+(0.56671279654)  
         ref[2,0,1]=(1.89447169546)/(o+1.)+(0.282918410191)  
         ref[2,1,0]=(-0.0839387527076)/(o+1.)+(-0.260176513031)  
         ref[2,1,1]=(1.97991596985)/(o+1.)+(-0.516820478238)  
         ref[3,0,0]=(0.293015740521)/(o+1.)+(-0.0995204709152)  
         ref[3,0,1]=(0.132376257612)/(o+1.)+(0.458335226861)  
         ref[3,1,0]=(0.902100791146)/(o+1.)+(-0.635786070046)  
         ref[3,1,1]=(-0.182333554037)/(o+1.)+(0.421430955369)  
         ref[4,0,0]=(0.265793575979)/(o+1.)+(-0.174444870545)  
         ref[4,0,1]=(1.30030828904)/(o+1.)+(-0.625043419818)  
         ref[4,1,0]=(0.967849081042)/(o+1.)+(-0.00619081001188)  
         ref[4,1,1]=(0.116204533031)/(o+1.)+(-0.765694198211)  
         ref[5,0,0]=(0.867199930859)/(o+1.)+(-0.586706268257)  
         ref[5,0,1]=(0.605391084042)/(o+1.)+(0.269821936457)  
         ref[5,1,0]=(0.356219617498)/(o+1.)+(-0.403090445655)  
         ref[5,1,1]=(0.439499295823)/(o+1.)+(0.0128579412935)  
       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_onReducedFunction_fromSymbol_ContinuousFunction_rank4(self):  
       """  
       tests integral of rank 4 Symbol on the ReducedFunction  
   
       assumptions: ContinuousFunction(self.domain) exists  
                    self.domain supports integral on ReducedFunction  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=ReducedFunction(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.904602515522)*x[0]**o+(-0.371521279208)*x[0]+(-0.452933934201)*x[1]**o+(-0.202117873586)*x[1]  
         s[0,0,0,1]=(0.046504512522)*x[0]**o+(-0.23169139456)*x[0]+(0.260745907068)*x[1]**o+(-0.280939854842)*x[1]  
         s[0,0,1,0]=(0.150287081226)*x[0]**o+(-0.62438094501)*x[0]+(-0.617182852213)*x[1]**o+(0.0366613552193)*x[1]  
         s[0,0,1,1]=(0.0710288489579)*x[0]**o+(-0.111273065295)*x[0]+(0.41817519756)*x[1]**o+(0.792759228517)*x[1]  
         s[0,0,2,0]=(-0.00835504723814)*x[0]**o+(-0.928910786463)*x[0]+(-0.830115466368)*x[1]**o+(0.117896100163)*x[1]  
         s[0,0,2,1]=(0.178088696257)*x[0]**o+(0.378404605517)*x[0]+(-0.0609283403081)*x[1]**o+(-0.0543695218661)*x[1]  
         s[0,1,0,0]=(-0.0689997578822)*x[0]**o+(-0.632975314677)*x[0]+(0.817036198517)*x[1]**o+(0.83235818794)*x[1]  
         s[0,1,0,1]=(0.307747809333)*x[0]**o+(-0.119316653583)*x[0]+(-0.962502450634)*x[1]**o+(0.730005736334)*x[1]  
         s[0,1,1,0]=(0.474932601365)*x[0]**o+(-0.672778327766)*x[0]+(0.0931366097943)*x[1]**o+(0.441430893263)*x[1]  
         s[0,1,1,1]=(-0.688077109622)*x[0]**o+(-0.0904781446959)*x[0]+(0.75334586689)*x[1]**o+(0.64166855195)*x[1]  
         s[0,1,2,0]=(-0.445313569413)*x[0]**o+(0.0860176511221)*x[0]+(0.816569466868)*x[1]**o+(-0.716517326506)*x[1]  
         s[0,1,2,1]=(-0.282441352341)*x[0]**o+(-0.63704220861)*x[0]+(-0.0493662512733)*x[1]**o+(0.568004633808)*x[1]  
         s[0,2,0,0]=(-0.39629286578)*x[0]**o+(-0.930416708861)*x[0]+(0.426475002251)*x[1]**o+(-0.156685168112)*x[1]  
         s[0,2,0,1]=(-0.932671691096)*x[0]**o+(-0.918584855074)*x[0]+(0.820320229167)*x[1]**o+(0.39108460143)*x[1]  
         s[0,2,1,0]=(0.904161654788)*x[0]**o+(0.580424354995)*x[0]+(0.901999297026)*x[1]**o+(0.16227344306)*x[1]  
         s[0,2,1,1]=(0.80438774629)*x[0]**o+(0.132549332211)*x[0]+(0.799348114478)*x[1]**o+(-0.22361807585)*x[1]  
         s[0,2,2,0]=(-0.561135188306)*x[0]**o+(0.584405140552)*x[0]+(0.655074058246)*x[1]**o+(0.145893780708)*x[1]  
         s[0,2,2,1]=(-0.252147320901)*x[0]**o+(0.798853343056)*x[0]+(0.615093018404)*x[1]**o+(0.394704774949)*x[1]  
         s[0,3,0,0]=(0.36142643768)*x[0]**o+(0.307386971305)*x[0]+(-0.294243769289)*x[1]**o+(-0.516116390793)*x[1]  
         s[0,3,0,1]=(-0.258524392445)*x[0]**o+(-0.955667526515)*x[0]+(-0.268164834645)*x[1]**o+(-0.0982143901681)*x[1]  
         s[0,3,1,0]=(-0.363719831483)*x[0]**o+(0.542839794876)*x[0]+(-0.591176577173)*x[1]**o+(-0.885630814734)*x[1]  
         s[0,3,1,1]=(-0.857066901153)*x[0]**o+(0.146459811163)*x[0]+(0.167525505888)*x[1]**o+(-0.823988951028)*x[1]  
         s[0,3,2,0]=(-0.67987029357)*x[0]**o+(0.484426195638)*x[0]+(0.357896203022)*x[1]**o+(-0.225752357797)*x[1]  
         s[0,3,2,1]=(-0.580488963435)*x[0]**o+(-0.561249356735)*x[0]+(0.383669718576)*x[1]**o+(0.657077607148)*x[1]  
         s[0,4,0,0]=(0.69915173204)*x[0]**o+(-0.98282597178)*x[0]+(-0.107525636764)*x[1]**o+(0.860091695416)*x[1]  
         s[0,4,0,1]=(-0.52652663231)*x[0]**o+(0.0466888351687)*x[0]+(0.490026321752)*x[1]**o+(0.694751470792)*x[1]  
         s[0,4,1,0]=(0.824302118883)*x[0]**o+(0.00719006856334)*x[0]+(-0.539797289173)*x[1]**o+(0.690123831564)*x[1]  
         s[0,4,1,1]=(-0.472128229772)*x[0]**o+(-0.648689330166)*x[0]+(0.391117917633)*x[1]**o+(-0.162627834297)*x[1]  
         s[0,4,2,0]=(0.225959403713)*x[0]**o+(-0.955982321286)*x[0]+(0.98648257289)*x[1]**o+(0.685606762198)*x[1]  
         s[0,4,2,1]=(0.344295953653)*x[0]**o+(0.0937724197016)*x[0]+(0.334346155325)*x[1]**o+(0.240553977121)*x[1]  
         s[1,0,0,0]=(0.195329436142)*x[0]**o+(-0.391787107203)*x[0]+(0.282744654065)*x[1]**o+(0.525383075525)*x[1]  
         s[1,0,0,1]=(0.0500438294543)*x[0]**o+(0.91622484244)*x[0]+(-0.678531170299)*x[1]**o+(-0.992341400238)*x[1]  
         s[1,0,1,0]=(0.297013531565)*x[0]**o+(-0.11033494708)*x[0]+(-0.0204768747597)*x[1]**o+(0.911044821444)*x[1]  
         s[1,0,1,1]=(-0.318409579239)*x[0]**o+(-0.0397282629607)*x[0]+(0.126590560999)*x[1]**o+(-0.583058191524)*x[1]  
         s[1,0,2,0]=(-0.928353567554)*x[0]**o+(-0.290772724182)*x[0]+(0.114112299004)*x[1]**o+(0.320854358475)*x[1]  
         s[1,0,2,1]=(-0.570768568717)*x[0]**o+(-0.824979336359)*x[0]+(-0.521612560762)*x[1]**o+(0.892935684254)*x[1]  
         s[1,1,0,0]=(0.409271921712)*x[0]**o+(0.656688417546)*x[0]+(-0.552252115532)*x[1]**o+(-0.252684939643)*x[1]  
         s[1,1,0,1]=(0.650926797031)*x[0]**o+(0.937738666477)*x[0]+(-0.280790296797)*x[1]**o+(0.214208558313)*x[1]  
         s[1,1,1,0]=(0.1256718371)*x[0]**o+(0.261580183407)*x[0]+(-0.57943553377)*x[1]**o+(-0.746871082838)*x[1]  
         s[1,1,1,1]=(0.935864480093)*x[0]**o+(-0.438674963211)*x[0]+(0.18368021533)*x[1]**o+(-0.694240108689)*x[1]  
         s[1,1,2,0]=(-0.0397072007891)*x[0]**o+(-0.745343758112)*x[0]+(0.641693619013)*x[1]**o+(-0.658786784991)*x[1]  
         s[1,1,2,1]=(-0.695558285084)*x[0]**o+(-0.650222199462)*x[0]+(-0.386725498078)*x[1]**o+(-0.674446830484)*x[1]  
         s[1,2,0,0]=(0.905187721767)*x[0]**o+(-0.415012814051)*x[0]+(0.797167315255)*x[1]**o+(-0.80569654981)*x[1]  
         s[1,2,0,1]=(-0.425831083968)*x[0]**o+(-0.306155499216)*x[0]+(0.878423386932)*x[1]**o+(-0.204033374375)*x[1]  
         s[1,2,1,0]=(0.0315352399527)*x[0]**o+(-0.0864621608168)*x[0]+(0.953279645196)*x[1]**o+(-0.350121337825)*x[1]  
         s[1,2,1,1]=(0.30461258451)*x[0]**o+(-0.825063058949)*x[0]+(0.512058260572)*x[1]**o+(0.748809814194)*x[1]  
         s[1,2,2,0]=(-0.739360626393)*x[0]**o+(-0.163606333648)*x[0]+(0.0928076120668)*x[1]**o+(0.720798765678)*x[1]  
         s[1,2,2,1]=(0.199986177011)*x[0]**o+(-0.355098022147)*x[0]+(-0.429976374764)*x[1]**o+(-0.333973984813)*x[1]  
         s[1,3,0,0]=(0.245099889527)*x[0]**o+(-0.272006414876)*x[0]+(0.19038825631)*x[1]**o+(0.141537376325)*x[1]  
         s[1,3,0,1]=(0.964892470064)*x[0]**o+(0.266000699533)*x[0]+(0.281992883406)*x[1]**o+(0.0470036363258)*x[1]  
         s[1,3,1,0]=(-0.406024010771)*x[0]**o+(0.211515087571)*x[0]+(-0.139150083168)*x[1]**o+(0.694931678647)*x[1]  
         s[1,3,1,1]=(0.719958915132)*x[0]**o+(0.425474993616)*x[0]+(0.381998339685)*x[1]**o+(-0.587210328527)*x[1]  
         s[1,3,2,0]=(-0.446628131313)*x[0]**o+(0.147944239049)*x[0]+(0.858318344908)*x[1]**o+(0.141912002794)*x[1]  
         s[1,3,2,1]=(0.123237888525)*x[0]**o+(0.609628760233)*x[0]+(-0.0997977880881)*x[1]**o+(0.776602457692)*x[1]  
         s[1,4,0,0]=(-0.205992404955)*x[0]**o+(0.95994896532)*x[0]+(-0.668831643097)*x[1]**o+(0.400688887056)*x[1]  
         s[1,4,0,1]=(-0.551761785809)*x[0]**o+(-0.188933577465)*x[0]+(-0.445368366446)*x[1]**o+(-0.487934192641)*x[1]  
         s[1,4,1,0]=(0.806637485565)*x[0]**o+(-0.912751633205)*x[0]+(-0.0317735780285)*x[1]**o+(0.397954044901)*x[1]  
         s[1,4,1,1]=(0.321015788412)*x[0]**o+(0.0387288594742)*x[0]+(0.924286425546)*x[1]**o+(0.636709951581)*x[1]  
         s[1,4,2,0]=(0.822453145379)*x[0]**o+(-0.763204841293)*x[0]+(-0.821998150153)*x[1]**o+(-0.0455190284992)*x[1]  
         s[1,4,2,1]=(-0.769855780302)*x[0]**o+(0.175243832232)*x[0]+(0.643564391513)*x[1]**o+(0.167745614405)*x[1]  
         s[2,0,0,0]=(-0.703387009485)*x[0]**o+(-0.165672894741)*x[0]+(-0.593523456406)*x[1]**o+(-0.953916267625)*x[1]  
         s[2,0,0,1]=(0.189269691722)*x[0]**o+(0.0650904594513)*x[0]+(-0.972603715891)*x[1]**o+(0.632748799808)*x[1]  
         s[2,0,1,0]=(-0.355043086131)*x[0]**o+(0.223886836405)*x[0]+(0.0812465154386)*x[1]**o+(-0.123342881585)*x[1]  
         s[2,0,1,1]=(0.111949886338)*x[0]**o+(0.333936233092)*x[0]+(-0.726855801653)*x[1]**o+(-0.410644679001)*x[1]  
         s[2,0,2,0]=(-0.514134171061)*x[0]**o+(-0.920122884271)*x[0]+(-0.257750657117)*x[1]**o+(-0.920243692547)*x[1]  
         s[2,0,2,1]=(-0.845077655219)*x[0]**o+(-0.208901924124)*x[0]+(0.337378697599)*x[1]**o+(0.801979415473)*x[1]  
         s[2,1,0,0]=(0.193043677084)*x[0]**o+(-0.0599530199511)*x[0]+(0.43567411879)*x[1]**o+(0.500546331575)*x[1]  
         s[2,1,0,1]=(0.599088933494)*x[0]**o+(-0.468604163828)*x[0]+(0.429967954899)*x[1]**o+(-0.492384378174)*x[1]  
         s[2,1,1,0]=(-0.720574232874)*x[0]**o+(0.821661207615)*x[0]+(0.724662820892)*x[1]**o+(0.753198897961)*x[1]  
         s[2,1,1,1]=(-0.448359465447)*x[0]**o+(0.693373974155)*x[0]+(-0.484872729016)*x[1]**o+(-0.192659481547)*x[1]  
         s[2,1,2,0]=(0.703509253973)*x[0]**o+(-0.0365462091464)*x[0]+(0.240885950313)*x[1]**o+(-0.321055059013)*x[1]  
         s[2,1,2,1]=(0.247817476916)*x[0]**o+(-0.138605619124)*x[0]+(0.697567286153)*x[1]**o+(0.727793395093)*x[1]  
         s[2,2,0,0]=(0.0419479009665)*x[0]**o+(0.66706255286)*x[0]+(-0.330849950899)*x[1]**o+(-0.600398002711)*x[1]  
         s[2,2,0,1]=(0.0302303643583)*x[0]**o+(0.851488267489)*x[0]+(-0.568849620793)*x[1]**o+(-0.363234175722)*x[1]  
         s[2,2,1,0]=(-0.0230217508795)*x[0]**o+(0.118232576333)*x[0]+(0.0810817815326)*x[1]**o+(-0.58292650684)*x[1]  
         s[2,2,1,1]=(-0.372568177431)*x[0]**o+(-0.613455954736)*x[0]+(0.223650823501)*x[1]**o+(-0.310111084313)*x[1]  
         s[2,2,2,0]=(-0.297770107968)*x[0]**o+(0.334407378326)*x[0]+(0.0820495048815)*x[1]**o+(0.670675755602)*x[1]  
         s[2,2,2,1]=(-0.884675664948)*x[0]**o+(-0.141329306491)*x[0]+(0.125135636826)*x[1]**o+(-0.911348264716)*x[1]  
         s[2,3,0,0]=(0.538935527955)*x[0]**o+(0.513300520882)*x[0]+(0.850744598079)*x[1]**o+(0.751590880335)*x[1]  
         s[2,3,0,1]=(-0.821182874204)*x[0]**o+(-0.186188144846)*x[0]+(-0.107871578183)*x[1]**o+(0.462281422576)*x[1]  
         s[2,3,1,0]=(0.699998387809)*x[0]**o+(0.497080130045)*x[0]+(-0.876146393883)*x[1]**o+(-0.966792776701)*x[1]  
         s[2,3,1,1]=(-0.755486256523)*x[0]**o+(0.482429742628)*x[0]+(0.64207235708)*x[1]**o+(0.792668637521)*x[1]  
         s[2,3,2,0]=(0.480810051431)*x[0]**o+(0.526844732935)*x[0]+(0.358083926997)*x[1]**o+(0.975251790749)*x[1]  
         s[2,3,2,1]=(-0.71380930491)*x[0]**o+(0.321062714102)*x[0]+(-0.393765851515)*x[1]**o+(0.758037335781)*x[1]  
         s[2,4,0,0]=(0.799658695022)*x[0]**o+(-0.970884788767)*x[0]+(-0.909912887472)*x[1]**o+(-0.118569854978)*x[1]  
         s[2,4,0,1]=(0.22665071178)*x[0]**o+(-0.866764191923)*x[0]+(0.760310143236)*x[1]**o+(0.979622869213)*x[1]  
         s[2,4,1,0]=(-0.639860894248)*x[0]**o+(-0.254761334846)*x[0]+(0.844133251872)*x[1]**o+(-0.0823600617007)*x[1]  
         s[2,4,1,1]=(0.699864723463)*x[0]**o+(-0.941417107514)*x[0]+(-0.939935969783)*x[1]**o+(0.307212220608)*x[1]  
         s[2,4,2,0]=(-0.597501168242)*x[0]**o+(-0.855810189779)*x[0]+(-0.616246893869)*x[1]**o+(0.862508316402)*x[1]  
         s[2,4,2,1]=(0.279133829297)*x[0]**o+(-0.963434838906)*x[0]+(-0.927999672088)*x[1]**o+(-0.633147829562)*x[1]  
         s[3,0,0,0]=(-0.228495811891)*x[0]**o+(-0.253261426268)*x[0]+(-0.487641848136)*x[1]**o+(0.321239316844)*x[1]  
         s[3,0,0,1]=(-0.226385127812)*x[0]**o+(-0.903861474811)*x[0]+(0.0285492108309)*x[1]**o+(0.199168585275)*x[1]  
         s[3,0,1,0]=(-0.0670214317839)*x[0]**o+(-0.169290931005)*x[0]+(0.859675236893)*x[1]**o+(0.673436325782)*x[1]  
         s[3,0,1,1]=(0.589201260546)*x[0]**o+(-0.931566266675)*x[0]+(0.127884139041)*x[1]**o+(-0.0831271642138)*x[1]  
         s[3,0,2,0]=(-0.228265145653)*x[0]**o+(-0.449360641451)*x[0]+(0.0895266621221)*x[1]**o+(0.516248722513)*x[1]  
         s[3,0,2,1]=(0.726271772612)*x[0]**o+(-0.834727339534)*x[0]+(0.779809207203)*x[1]**o+(-0.2745165742)*x[1]  
         s[3,1,0,0]=(-0.528300011184)*x[0]**o+(0.0728636912947)*x[0]+(-0.953454233615)*x[1]**o+(0.582219621875)*x[1]  
         s[3,1,0,1]=(0.196609308635)*x[0]**o+(0.162717112564)*x[0]+(0.449469968326)*x[1]**o+(-0.174119135554)*x[1]  
         s[3,1,1,0]=(-0.261855816805)*x[0]**o+(0.607391359963)*x[0]+(-0.793775568608)*x[1]**o+(-0.950278043961)*x[1]  
         s[3,1,1,1]=(0.240905287034)*x[0]**o+(-0.204299485241)*x[0]+(-0.825848364133)*x[1]**o+(-0.00971732871232)*x[1]  
         s[3,1,2,0]=(0.798049323787)*x[0]**o+(0.0710454406309)*x[0]+(0.990006532214)*x[1]**o+(0.711055965038)*x[1]  
         s[3,1,2,1]=(-0.406803353709)*x[0]**o+(0.120946506707)*x[0]+(-0.410263830047)*x[1]**o+(0.988997635486)*x[1]  
         s[3,2,0,0]=(0.181718966759)*x[0]**o+(-0.0262352524424)*x[0]+(-0.1917125307)*x[1]**o+(-0.169130797999)*x[1]  
         s[3,2,0,1]=(-0.00378400436872)*x[0]**o+(-0.970892218185)*x[0]+(-0.563995443607)*x[1]**o+(0.906996441633)*x[1]  
         s[3,2,1,0]=(-0.858412521643)*x[0]**o+(-0.133539980742)*x[0]+(-0.692474245554)*x[1]**o+(0.0128241106616)*x[1]  
         s[3,2,1,1]=(-0.272651295849)*x[0]**o+(-0.185053306751)*x[0]+(-0.034278709119)*x[1]**o+(-0.201998293805)*x[1]  
         s[3,2,2,0]=(-0.0376999069998)*x[0]**o+(-0.895215920335)*x[0]+(0.944947071273)*x[1]**o+(-0.732964572204)*x[1]  
         s[3,2,2,1]=(0.0771318167573)*x[0]**o+(0.051862360377)*x[0]+(-0.837260137737)*x[1]**o+(-0.770673420806)*x[1]  
         s[3,3,0,0]=(-0.258989060244)*x[0]**o+(-0.699818576225)*x[0]+(-0.311518509076)*x[1]**o+(0.517397173211)*x[1]  
         s[3,3,0,1]=(-0.443559295683)*x[0]**o+(-0.0544611458142)*x[0]+(0.983503123196)*x[1]**o+(0.248879114721)*x[1]  
         s[3,3,1,0]=(0.626729673965)*x[0]**o+(0.347363767931)*x[0]+(0.956080389131)*x[1]**o+(0.429076008118)*x[1]  
         s[3,3,1,1]=(-0.508758891471)*x[0]**o+(0.616615567996)*x[0]+(0.221644986884)*x[1]**o+(-0.904935728116)*x[1]  
         s[3,3,2,0]=(0.254341631925)*x[0]**o+(-0.908688314004)*x[0]+(-0.0449719498093)*x[1]**o+(0.871189405684)*x[1]  
         s[3,3,2,1]=(0.506459636421)*x[0]**o+(0.978066502797)*x[0]+(-0.212934438396)*x[1]**o+(-0.355665670198)*x[1]  
         s[3,4,0,0]=(0.0152292845756)*x[0]**o+(-0.400615592376)*x[0]+(0.264352702586)*x[1]**o+(-0.0677780689342)*x[1]  
         s[3,4,0,1]=(0.734077033298)*x[0]**o+(-0.171218476666)*x[0]+(-0.399285387071)*x[1]**o+(-0.589596788961)*x[1]  
         s[3,4,1,0]=(-0.903602643334)*x[0]**o+(0.0527455440694)*x[0]+(-0.973273256059)*x[1]**o+(0.76054623312)*x[1]  
         s[3,4,1,1]=(0.368219867735)*x[0]**o+(0.857361275285)*x[0]+(0.297273583978)*x[1]**o+(0.243120582563)*x[1]  
         s[3,4,2,0]=(0.518637118464)*x[0]**o+(-0.961371552746)*x[0]+(0.283809772558)*x[1]**o+(-0.947184379737)*x[1]  
         s[3,4,2,1]=(-0.514398206056)*x[0]**o+(-0.499373736713)*x[0]+(-0.756154352548)*x[1]**o+(0.814078333554)*x[1]  
         ref[0,0,0,0]=(0.451668581322)/(o+1.)+(-0.286819576397)  
         ref[0,0,0,1]=(0.30725041959)/(o+1.)+(-0.256315624701)  
         ref[0,0,1,0]=(-0.466895770987)/(o+1.)+(-0.293859794895)  
         ref[0,0,1,1]=(0.489204046518)/(o+1.)+(0.340743081611)  
         ref[0,0,2,0]=(-0.838470513606)/(o+1.)+(-0.40550734315)  
         ref[0,0,2,1]=(0.117160355949)/(o+1.)+(0.162017541826)  
         ref[0,1,0,0]=(0.748036440634)/(o+1.)+(0.0996914366319)  
         ref[0,1,0,1]=(-0.654754641301)/(o+1.)+(0.305344541376)  
         ref[0,1,1,0]=(0.568069211159)/(o+1.)+(-0.115673717252)  
         ref[0,1,1,1]=(0.0652687572678)/(o+1.)+(0.275595203627)  
         ref[0,1,2,0]=(0.371255897455)/(o+1.)+(-0.315249837692)  
         ref[0,1,2,1]=(-0.331807603614)/(o+1.)+(-0.0345187874006)  
         ref[0,2,0,0]=(0.0301821364712)/(o+1.)+(-0.543550938487)  
         ref[0,2,0,1]=(-0.112351461929)/(o+1.)+(-0.263750126822)  
         ref[0,2,1,0]=(1.80616095181)/(o+1.)+(0.371348899028)  
         ref[0,2,1,1]=(1.60373586077)/(o+1.)+(-0.0455343718196)  
         ref[0,2,2,0]=(0.0939388699401)/(o+1.)+(0.36514946063)  
         ref[0,2,2,1]=(0.362945697503)/(o+1.)+(0.596779059003)  
         ref[0,3,0,0]=(0.0671826683913)/(o+1.)+(-0.104364709744)  
         ref[0,3,0,1]=(-0.52668922709)/(o+1.)+(-0.526940958341)  
         ref[0,3,1,0]=(-0.954896408656)/(o+1.)+(-0.171395509929)  
         ref[0,3,1,1]=(-0.689541395265)/(o+1.)+(-0.338764569932)  
         ref[0,3,2,0]=(-0.321974090548)/(o+1.)+(0.12933691892)  
         ref[0,3,2,1]=(-0.196819244859)/(o+1.)+(0.0479141252065)  
         ref[0,4,0,0]=(0.591626095276)/(o+1.)+(-0.061367138182)  
         ref[0,4,0,1]=(-0.0365003105586)/(o+1.)+(0.37072015298)  
         ref[0,4,1,0]=(0.28450482971)/(o+1.)+(0.348656950064)  
         ref[0,4,1,1]=(-0.0810103121392)/(o+1.)+(-0.405658582232)  
         ref[0,4,2,0]=(1.2124419766)/(o+1.)+(-0.135187779544)  
         ref[0,4,2,1]=(0.678642108977)/(o+1.)+(0.167163198411)  
         ref[1,0,0,0]=(0.478074090207)/(o+1.)+(0.066797984161)  
         ref[1,0,0,1]=(-0.628487340845)/(o+1.)+(-0.0380582788988)  
         ref[1,0,1,0]=(0.276536656806)/(o+1.)+(0.400354937182)  
         ref[1,0,1,1]=(-0.191819018239)/(o+1.)+(-0.311393227243)  
         ref[1,0,2,0]=(-0.81424126855)/(o+1.)+(0.0150408171462)  
         ref[1,0,2,1]=(-1.09238112948)/(o+1.)+(0.0339781739475)  
         ref[1,1,0,0]=(-0.142980193819)/(o+1.)+(0.202001738951)  
         ref[1,1,0,1]=(0.370136500233)/(o+1.)+(0.575973612395)  
         ref[1,1,1,0]=(-0.45376369667)/(o+1.)+(-0.242645449715)  
         ref[1,1,1,1]=(1.11954469542)/(o+1.)+(-0.56645753595)  
         ref[1,1,2,0]=(0.601986418224)/(o+1.)+(-0.702065271552)  
         ref[1,1,2,1]=(-1.08228378316)/(o+1.)+(-0.662334514973)  
         ref[1,2,0,0]=(1.70235503702)/(o+1.)+(-0.61035468193)  
         ref[1,2,0,1]=(0.452592302963)/(o+1.)+(-0.255094436796)  
         ref[1,2,1,0]=(0.984814885149)/(o+1.)+(-0.218291749321)  
         ref[1,2,1,1]=(0.816670845082)/(o+1.)+(-0.0381266223775)  
         ref[1,2,2,0]=(-0.646553014327)/(o+1.)+(0.278596216015)  
         ref[1,2,2,1]=(-0.229990197753)/(o+1.)+(-0.34453600348)  
         ref[1,3,0,0]=(0.435488145837)/(o+1.)+(-0.0652345192758)  
         ref[1,3,0,1]=(1.24688535347)/(o+1.)+(0.15650216793)  
         ref[1,3,1,0]=(-0.545174093939)/(o+1.)+(0.453223383109)  
         ref[1,3,1,1]=(1.10195725482)/(o+1.)+(-0.0808676674551)  
         ref[1,3,2,0]=(0.411690213595)/(o+1.)+(0.144928120921)  
         ref[1,3,2,1]=(0.0234401004369)/(o+1.)+(0.693115608963)  
         ref[1,4,0,0]=(-0.874824048052)/(o+1.)+(0.680318926188)  
         ref[1,4,0,1]=(-0.997130152255)/(o+1.)+(-0.338433885053)  
         ref[1,4,1,0]=(0.774863907537)/(o+1.)+(-0.257398794152)  
         ref[1,4,1,1]=(1.24530221396)/(o+1.)+(0.337719405527)  
         ref[1,4,2,0]=(0.000454995225935)/(o+1.)+(-0.404361934896)  
         ref[1,4,2,1]=(-0.126291388789)/(o+1.)+(0.171494723319)  
         ref[2,0,0,0]=(-1.29691046589)/(o+1.)+(-0.559794581183)  
         ref[2,0,0,1]=(-0.783334024169)/(o+1.)+(0.348919629629)  
         ref[2,0,1,0]=(-0.273796570692)/(o+1.)+(0.0502719774097)  
         ref[2,0,1,1]=(-0.614905915315)/(o+1.)+(-0.0383542229546)  
         ref[2,0,2,0]=(-0.771884828178)/(o+1.)+(-0.920183288409)  
         ref[2,0,2,1]=(-0.50769895762)/(o+1.)+(0.296538745675)  
         ref[2,1,0,0]=(0.628717795874)/(o+1.)+(0.220296655812)  
         ref[2,1,0,1]=(1.02905688839)/(o+1.)+(-0.480494271001)  
         ref[2,1,1,0]=(0.00408858801768)/(o+1.)+(0.787430052788)  
         ref[2,1,1,1]=(-0.933232194463)/(o+1.)+(0.250357246304)  
         ref[2,1,2,0]=(0.944395204286)/(o+1.)+(-0.17880063408)  
         ref[2,1,2,1]=(0.945384763069)/(o+1.)+(0.294593887985)  
         ref[2,2,0,0]=(-0.288902049932)/(o+1.)+(0.0333322750744)  
         ref[2,2,0,1]=(-0.538619256435)/(o+1.)+(0.244127045883)  
         ref[2,2,1,0]=(0.0580600306531)/(o+1.)+(-0.232346965253)  
         ref[2,2,1,1]=(-0.148917353929)/(o+1.)+(-0.461783519524)  
         ref[2,2,2,0]=(-0.215720603086)/(o+1.)+(0.502541566964)  
         ref[2,2,2,1]=(-0.759540028122)/(o+1.)+(-0.526338785603)  
         ref[2,3,0,0]=(1.38968012603)/(o+1.)+(0.632445700608)  
         ref[2,3,0,1]=(-0.929054452386)/(o+1.)+(0.138046638865)  
         ref[2,3,1,0]=(-0.176148006073)/(o+1.)+(-0.234856323328)  
         ref[2,3,1,1]=(-0.113413899443)/(o+1.)+(0.637549190074)  
         ref[2,3,2,0]=(0.838893978428)/(o+1.)+(0.751048261842)  
         ref[2,3,2,1]=(-1.10757515642)/(o+1.)+(0.539550024941)  
         ref[2,4,0,0]=(-0.11025419245)/(o+1.)+(-0.544727321873)  
         ref[2,4,0,1]=(0.986960855016)/(o+1.)+(0.056429338645)  
         ref[2,4,1,0]=(0.204272357624)/(o+1.)+(-0.168560698273)  
         ref[2,4,1,1]=(-0.24007124632)/(o+1.)+(-0.317102443453)  
         ref[2,4,2,0]=(-1.21374806211)/(o+1.)+(0.00334906331113)  
         ref[2,4,2,1]=(-0.648865842791)/(o+1.)+(-0.798291334234)  
         ref[3,0,0,0]=(-0.716137660027)/(o+1.)+(0.033988945288)  
         ref[3,0,0,1]=(-0.197835916981)/(o+1.)+(-0.352346444768)  
         ref[3,0,1,0]=(0.792653805109)/(o+1.)+(0.252072697388)  
         ref[3,0,1,1]=(0.717085399588)/(o+1.)+(-0.507346715445)  
         ref[3,0,2,0]=(-0.138738483531)/(o+1.)+(0.0334440405313)  
         ref[3,0,2,1]=(1.50608097982)/(o+1.)+(-0.554621956867)  
         ref[3,1,0,0]=(-1.4817542448)/(o+1.)+(0.327541656585)  
         ref[3,1,0,1]=(0.64607927696)/(o+1.)+(-0.00570101149523)  
         ref[3,1,1,0]=(-1.05563138541)/(o+1.)+(-0.171443341999)  
         ref[3,1,1,1]=(-0.5849430771)/(o+1.)+(-0.107008406977)  
         ref[3,1,2,0]=(1.788055856)/(o+1.)+(0.391050702835)  
         ref[3,1,2,1]=(-0.817067183756)/(o+1.)+(0.554972071097)  
         ref[3,2,0,0]=(-0.00999356394068)/(o+1.)+(-0.0976830252209)  
         ref[3,2,0,1]=(-0.567779447976)/(o+1.)+(-0.031947888276)  
         ref[3,2,1,0]=(-1.5508867672)/(o+1.)+(-0.0603579350402)  
         ref[3,2,1,1]=(-0.306930004968)/(o+1.)+(-0.193525800278)  
         ref[3,2,2,0]=(0.907247164273)/(o+1.)+(-0.81409024627)  
         ref[3,2,2,1]=(-0.76012832098)/(o+1.)+(-0.359405530215)  
         ref[3,3,0,0]=(-0.57050756932)/(o+1.)+(-0.0912107015068)  
         ref[3,3,0,1]=(0.539943827514)/(o+1.)+(0.0972089844535)  
         ref[3,3,1,0]=(1.5828100631)/(o+1.)+(0.388219888025)  
         ref[3,3,1,1]=(-0.287113904587)/(o+1.)+(-0.14416008006)  
         ref[3,3,2,0]=(0.209369682116)/(o+1.)+(-0.01874945416)  
         ref[3,3,2,1]=(0.293525198025)/(o+1.)+(0.311200416299)  
         ref[3,4,0,0]=(0.279581987162)/(o+1.)+(-0.234196830655)  
         ref[3,4,0,1]=(0.334791646227)/(o+1.)+(-0.380407632814)  
         ref[3,4,1,0]=(-1.87687589939)/(o+1.)+(0.406645888595)  
         ref[3,4,1,1]=(0.665493451713)/(o+1.)+(0.550240928924)  
         ref[3,4,2,0]=(0.802446891023)/(o+1.)+(-0.954277966241)  
         ref[3,4,2,1]=(-1.2705525586)/(o+1.)+(0.15735229842)  
       else:  
         s[0,0,0,0]=(0.641376947921)*x[0]**o+(-0.761647983943)*x[0]+(0.1869803104)*x[1]**o+(-0.325986059158)*x[1]+(-0.0520537723186)*x[2]**o+(-0.242075762859)*x[2]  
         s[0,0,0,1]=(0.774456605418)*x[0]**o+(0.321485563379)*x[0]+(0.0248450395096)*x[1]**o+(-0.425638835963)*x[1]+(-0.0622024423983)*x[2]**o+(0.0431057597271)*x[2]  
         s[0,0,1,0]=(0.661432460103)*x[0]**o+(-0.653382716149)*x[0]+(0.596912471264)*x[1]**o+(-0.375947479542)*x[1]+(0.370999295823)*x[2]**o+(0.791872078833)*x[2]  
         s[0,0,1,1]=(0.258860589295)*x[0]**o+(-0.802340135742)*x[0]+(0.569149399765)*x[1]**o+(-0.505649920225)*x[1]+(0.384267048627)*x[2]**o+(-0.791015249057)*x[2]  
         s[0,0,2,0]=(0.219942214071)*x[0]**o+(0.360851774828)*x[0]+(-0.456714182675)*x[1]**o+(0.0965079164275)*x[1]+(-0.752467360132)*x[2]**o+(-0.285016148963)*x[2]  
         s[0,0,2,1]=(0.227249920303)*x[0]**o+(-0.63371992192)*x[0]+(-0.751996139921)*x[1]**o+(-0.804517033328)*x[1]+(-0.0202988256583)*x[2]**o+(0.531173510334)*x[2]  
         s[0,1,0,0]=(0.530838912723)*x[0]**o+(0.230970767172)*x[0]+(-0.424131392941)*x[1]**o+(-0.606417012546)*x[1]+(-0.318937522783)*x[2]**o+(0.179390519765)*x[2]  
         s[0,1,0,1]=(-0.776569569832)*x[0]**o+(0.918265838431)*x[0]+(-0.091878191762)*x[1]**o+(0.698951377419)*x[1]+(0.244940000061)*x[2]**o+(0.0452610075428)*x[2]  
         s[0,1,1,0]=(0.435082117831)*x[0]**o+(0.889881605799)*x[0]+(-0.219619308431)*x[1]**o+(-0.672303092957)*x[1]+(0.987619326906)*x[2]**o+(0.220516905778)*x[2]  
         s[0,1,1,1]=(-0.118683589446)*x[0]**o+(0.965421464735)*x[0]+(-0.863562140452)*x[1]**o+(-0.231242073932)*x[1]+(0.568240493507)*x[2]**o+(0.734578820791)*x[2]  
         s[0,1,2,0]=(0.511447709837)*x[0]**o+(-0.274507694143)*x[0]+(0.576288098696)*x[1]**o+(0.655476727813)*x[1]+(0.602315737594)*x[2]**o+(0.817938429306)*x[2]  
         s[0,1,2,1]=(-0.319953701981)*x[0]**o+(-0.0816890923671)*x[0]+(0.84471771093)*x[1]**o+(0.216072534675)*x[1]+(0.782233227772)*x[2]**o+(0.761080396806)*x[2]  
         s[0,2,0,0]=(0.371971964019)*x[0]**o+(-0.914300658178)*x[0]+(-0.421914056897)*x[1]**o+(-0.366900498221)*x[1]+(-0.224742744541)*x[2]**o+(0.718117565395)*x[2]  
         s[0,2,0,1]=(0.390948765614)*x[0]**o+(0.523332138936)*x[0]+(0.207458000485)*x[1]**o+(0.704266764721)*x[1]+(0.194539635633)*x[2]**o+(-0.0310558120915)*x[2]  
         s[0,2,1,0]=(-0.00308409831643)*x[0]**o+(0.0874338943679)*x[0]+(0.792479180633)*x[1]**o+(-0.840935676827)*x[1]+(0.183535198853)*x[2]**o+(-0.632484318094)*x[2]  
         s[0,2,1,1]=(0.93055010195)*x[0]**o+(-0.592883255994)*x[0]+(-0.293724124968)*x[1]**o+(-0.532867438247)*x[1]+(-0.731629824662)*x[2]**o+(-0.926457959344)*x[2]  
         s[0,2,2,0]=(-0.410766259996)*x[0]**o+(0.153463001676)*x[0]+(-0.22434101683)*x[1]**o+(0.792184946048)*x[1]+(0.217569318007)*x[2]**o+(-0.746503700782)*x[2]  
         s[0,2,2,1]=(-0.48097027987)*x[0]**o+(-0.855259653713)*x[0]+(0.297296031945)*x[1]**o+(0.486702064445)*x[1]+(-0.15982283079)*x[2]**o+(0.943473459324)*x[2]  
         s[0,3,0,0]=(0.440444162838)*x[0]**o+(-0.411163880392)*x[0]+(0.434891712314)*x[1]**o+(0.421032339491)*x[1]+(0.185417751167)*x[2]**o+(0.774341796864)*x[2]  
         s[0,3,0,1]=(0.418605026678)*x[0]**o+(0.697823127475)*x[0]+(-0.490471272795)*x[1]**o+(0.889959972523)*x[1]+(-0.935571921221)*x[2]**o+(-0.477163919777)*x[2]  
         s[0,3,1,0]=(0.240863375001)*x[0]**o+(0.171535577067)*x[0]+(-0.798318413682)*x[1]**o+(0.165523160187)*x[1]+(-0.793244034855)*x[2]**o+(-0.639277575041)*x[2]  
         s[0,3,1,1]=(0.202212256877)*x[0]**o+(0.387471670954)*x[0]+(-0.198376856629)*x[1]**o+(-0.679099770813)*x[1]+(-0.213566318573)*x[2]**o+(-0.591165980661)*x[2]  
         s[0,3,2,0]=(0.764050063724)*x[0]**o+(-0.921472809292)*x[0]+(-0.483029501792)*x[1]**o+(0.198096560699)*x[1]+(-0.161449532882)*x[2]**o+(-0.854460510477)*x[2]  
         s[0,3,2,1]=(0.491500019407)*x[0]**o+(0.830069678076)*x[0]+(-0.597452015974)*x[1]**o+(-0.893928655959)*x[1]+(0.940149982314)*x[2]**o+(0.17300719331)*x[2]  
         s[0,4,0,0]=(0.0798620352831)*x[0]**o+(0.0237937127416)*x[0]+(-0.086351109139)*x[1]**o+(0.729882388424)*x[1]+(-0.7065299588)*x[2]**o+(-0.632673206138)*x[2]  
         s[0,4,0,1]=(-0.809989577091)*x[0]**o+(0.0981392253023)*x[0]+(0.831656529801)*x[1]**o+(0.0337424060561)*x[1]+(-0.210067786784)*x[2]**o+(-0.0549477247313)*x[2]  
         s[0,4,1,0]=(-0.0632498403207)*x[0]**o+(-0.992515766051)*x[0]+(0.579065868983)*x[1]**o+(0.201496477221)*x[1]+(0.147678629343)*x[2]**o+(0.396978535826)*x[2]  
         s[0,4,1,1]=(0.538470621207)*x[0]**o+(0.125447714672)*x[0]+(0.345561739505)*x[1]**o+(-0.898311293341)*x[1]+(0.695965393051)*x[2]**o+(0.456779053964)*x[2]  
         s[0,4,2,0]=(-0.461938934992)*x[0]**o+(0.815268894146)*x[0]+(0.529702893063)*x[1]**o+(0.106752164506)*x[1]+(-0.892819156049)*x[2]**o+(-0.540251931665)*x[2]  
         s[0,4,2,1]=(-0.890961526208)*x[0]**o+(-0.0522965595586)*x[0]+(-0.166811931177)*x[1]**o+(-0.32795191314)*x[1]+(0.827693520674)*x[2]**o+(-0.858862162004)*x[2]  
         s[1,0,0,0]=(0.0341612512071)*x[0]**o+(0.704407020254)*x[0]+(-0.0212728069872)*x[1]**o+(-0.360120370601)*x[1]+(0.0355417904312)*x[2]**o+(-0.899016835477)*x[2]  
         s[1,0,0,1]=(-0.254336879728)*x[0]**o+(-0.749583807992)*x[0]+(-0.822540014653)*x[1]**o+(0.321686636614)*x[1]+(-0.110121756691)*x[2]**o+(0.995172970249)*x[2]  
         s[1,0,1,0]=(0.538783330989)*x[0]**o+(0.425931208203)*x[0]+(0.808850719257)*x[1]**o+(-0.616824777466)*x[1]+(-0.999643426203)*x[2]**o+(0.206956920828)*x[2]  
         s[1,0,1,1]=(0.92122724205)*x[0]**o+(-0.0077578775328)*x[0]+(-0.455369944999)*x[1]**o+(0.069992464289)*x[1]+(-0.625922232223)*x[2]**o+(0.308582889054)*x[2]  
         s[1,0,2,0]=(0.812275176702)*x[0]**o+(-0.0737918971904)*x[0]+(-0.352834721968)*x[1]**o+(-0.485715856695)*x[1]+(0.893012104541)*x[2]**o+(-0.50277227482)*x[2]  
         s[1,0,2,1]=(0.327001325412)*x[0]**o+(0.248420422978)*x[0]+(0.934489184596)*x[1]**o+(0.645665157141)*x[1]+(-0.125952174434)*x[2]**o+(-0.589610796444)*x[2]  
         s[1,1,0,0]=(-0.19439618112)*x[0]**o+(-0.473153238554)*x[0]+(0.441593313035)*x[1]**o+(0.560223203285)*x[1]+(0.744701337265)*x[2]**o+(0.588942879247)*x[2]  
         s[1,1,0,1]=(0.956622537359)*x[0]**o+(0.388369191252)*x[0]+(-0.912880779816)*x[1]**o+(-0.930624449932)*x[1]+(-0.0693131490103)*x[2]**o+(0.79864169138)*x[2]  
         s[1,1,1,0]=(0.0802315160845)*x[0]**o+(0.360021747567)*x[0]+(-0.838148172909)*x[1]**o+(0.974574791036)*x[1]+(0.134930445828)*x[2]**o+(-0.224819866647)*x[2]  
         s[1,1,1,1]=(0.0408467896812)*x[0]**o+(-0.527931565684)*x[0]+(-0.294779051686)*x[1]**o+(0.655648246879)*x[1]+(0.206641334088)*x[2]**o+(0.244207224731)*x[2]  
         s[1,1,2,0]=(-0.695324333815)*x[0]**o+(-0.76302643793)*x[0]+(-0.445448086412)*x[1]**o+(0.387620295728)*x[1]+(0.410986742302)*x[2]**o+(-0.903330791078)*x[2]  
         s[1,1,2,1]=(0.725983511781)*x[0]**o+(-0.55616923731)*x[0]+(0.694922396401)*x[1]**o+(0.969679789365)*x[1]+(0.390140728655)*x[2]**o+(0.616506146743)*x[2]  
         s[1,2,0,0]=(-0.847983007272)*x[0]**o+(-0.21379616326)*x[0]+(-0.221990648875)*x[1]**o+(0.542144543115)*x[1]+(-0.476016238668)*x[2]**o+(0.239835257111)*x[2]  
         s[1,2,0,1]=(0.382592141805)*x[0]**o+(-0.547322693057)*x[0]+(0.207135932694)*x[1]**o+(0.479160574257)*x[1]+(-0.406772807762)*x[2]**o+(0.0827537744696)*x[2]  
         s[1,2,1,0]=(0.385177578855)*x[0]**o+(-0.96749949076)*x[0]+(-0.980528334919)*x[1]**o+(0.846145425556)*x[1]+(0.663229596459)*x[2]**o+(0.234589730098)*x[2]  
         s[1,2,1,1]=(0.326538279652)*x[0]**o+(0.864444241537)*x[0]+(0.925715710223)*x[1]**o+(0.901973119241)*x[1]+(0.489827899451)*x[2]**o+(-0.446654474045)*x[2]  
         s[1,2,2,0]=(0.623521048768)*x[0]**o+(0.00694630100059)*x[0]+(-0.316266037281)*x[1]**o+(-0.296669528851)*x[1]+(-0.345499066232)*x[2]**o+(-0.781251040298)*x[2]  
         s[1,2,2,1]=(-0.564332000062)*x[0]**o+(-0.838410587038)*x[0]+(0.105923226211)*x[1]**o+(0.027080971794)*x[1]+(0.656502442527)*x[2]**o+(-0.968700980875)*x[2]  
         s[1,3,0,0]=(0.28297404936)*x[0]**o+(0.906254282744)*x[0]+(0.426459225459)*x[1]**o+(0.474780047643)*x[1]+(0.915469451254)*x[2]**o+(0.150014279679)*x[2]  
         s[1,3,0,1]=(0.417919974897)*x[0]**o+(0.118528892402)*x[0]+(0.456086489559)*x[1]**o+(0.407436737785)*x[1]+(-0.594040737087)*x[2]**o+(-0.0968244395915)*x[2]  
         s[1,3,1,0]=(-0.00608149061984)*x[0]**o+(0.279861847458)*x[0]+(0.622153448276)*x[1]**o+(0.307580940395)*x[1]+(-0.311958042371)*x[2]**o+(0.951637572927)*x[2]  
         s[1,3,1,1]=(0.0620010964861)*x[0]**o+(0.694489586135)*x[0]+(-0.397214573709)*x[1]**o+(0.816641484229)*x[1]+(-0.55010098877)*x[2]**o+(-0.252677099684)*x[2]  
         s[1,3,2,0]=(0.347469613465)*x[0]**o+(-0.793025539854)*x[0]+(0.340939082154)*x[1]**o+(0.00135134646417)*x[1]+(-0.253753620216)*x[2]**o+(-0.795217820163)*x[2]  
         s[1,3,2,1]=(-0.77663362989)*x[0]**o+(-0.0454794482729)*x[0]+(0.0346722039087)*x[1]**o+(-0.137241685281)*x[1]+(0.984186419894)*x[2]**o+(0.884865835233)*x[2]  
         s[1,4,0,0]=(-0.344544201299)*x[0]**o+(0.118604431816)*x[0]+(0.735491059587)*x[1]**o+(-0.474594418844)*x[1]+(-0.160183641095)*x[2]**o+(0.0442675403903)*x[2]  
         s[1,4,0,1]=(0.159437065336)*x[0]**o+(0.357454800453)*x[0]+(0.0623836301056)*x[1]**o+(0.255296236156)*x[1]+(0.586460110084)*x[2]**o+(-0.557870816384)*x[2]  
         s[1,4,1,0]=(0.272212988717)*x[0]**o+(-0.00218257591936)*x[0]+(0.637653920938)*x[1]**o+(0.474154612654)*x[1]+(0.0927963495169)*x[2]**o+(0.688169553045)*x[2]  
         s[1,4,1,1]=(-0.296752052135)*x[0]**o+(0.222825403373)*x[0]+(-0.61297870931)*x[1]**o+(-0.772169949259)*x[1]+(0.267924738357)*x[2]**o+(-0.98640521973)*x[2]  
         s[1,4,2,0]=(-0.528327447355)*x[0]**o+(-0.13640459815)*x[0]+(-0.839608161898)*x[1]**o+(0.79996626812)*x[1]+(0.0889785028146)*x[2]**o+(0.483698551365)*x[2]  
         s[1,4,2,1]=(-0.888180576683)*x[0]**o+(-0.243274686308)*x[0]+(-0.459488747018)*x[1]**o+(0.770881162569)*x[1]+(-0.502642334958)*x[2]**o+(-0.0596414308521)*x[2]  
         s[2,0,0,0]=(-0.765317614505)*x[0]**o+(-0.220818348989)*x[0]+(-0.185228616416)*x[1]**o+(-0.0787003843488)*x[1]+(-0.412520273332)*x[2]**o+(0.192760450932)*x[2]  
         s[2,0,0,1]=(0.913449879489)*x[0]**o+(-0.219345049089)*x[0]+(0.54504962001)*x[1]**o+(0.623236284643)*x[1]+(-0.350717162156)*x[2]**o+(-0.623681076852)*x[2]  
         s[2,0,1,0]=(-0.940664057127)*x[0]**o+(0.251319839352)*x[0]+(0.877556299495)*x[1]**o+(0.016160084659)*x[1]+(-0.544235646954)*x[2]**o+(-0.343760171279)*x[2]  
         s[2,0,1,1]=(0.324227271021)*x[0]**o+(-0.380692454159)*x[0]+(-0.727849414028)*x[1]**o+(0.955281983149)*x[1]+(-0.898073831095)*x[2]**o+(0.858127409364)*x[2]  
         s[2,0,2,0]=(-0.111449036516)*x[0]**o+(0.928827923826)*x[0]+(-0.992899512514)*x[1]**o+(0.0150334039442)*x[1]+(-0.552135666421)*x[2]**o+(0.406949591012)*x[2]  
         s[2,0,2,1]=(0.241832900797)*x[0]**o+(0.684688614786)*x[0]+(0.842064214069)*x[1]**o+(-0.718696633586)*x[1]+(0.352196331118)*x[2]**o+(-0.260343576356)*x[2]  
         s[2,1,0,0]=(0.426302002061)*x[0]**o+(0.573786857786)*x[0]+(0.909827742357)*x[1]**o+(0.34656984965)*x[1]+(0.379863389758)*x[2]**o+(0.0322921482901)*x[2]  
         s[2,1,0,1]=(0.34423098891)*x[0]**o+(0.959825965873)*x[0]+(-0.458147326954)*x[1]**o+(-0.190830182513)*x[1]+(-0.0836184656488)*x[2]**o+(0.711921183181)*x[2]  
         s[2,1,1,0]=(0.813184534496)*x[0]**o+(-0.551568400877)*x[0]+(0.0282287303962)*x[1]**o+(0.421838849382)*x[1]+(0.312118130223)*x[2]**o+(-0.276104599646)*x[2]  
         s[2,1,1,1]=(0.39842349776)*x[0]**o+(0.0505250495963)*x[0]+(-0.398145839899)*x[1]**o+(0.712110112191)*x[1]+(-0.646997386195)*x[2]**o+(-0.584123612783)*x[2]  
         s[2,1,2,0]=(-0.722790769831)*x[0]**o+(0.850227076858)*x[0]+(0.204013681627)*x[1]**o+(0.924250450519)*x[1]+(-0.0736995922058)*x[2]**o+(-0.597799712798)*x[2]  
         s[2,1,2,1]=(0.314644875138)*x[0]**o+(-0.636988948936)*x[0]+(-0.641641656145)*x[1]**o+(0.788809853074)*x[1]+(0.993531553111)*x[2]**o+(-0.495755039677)*x[2]  
         s[2,2,0,0]=(0.633851639171)*x[0]**o+(0.523452525521)*x[0]+(-0.382111999068)*x[1]**o+(-0.63124196783)*x[1]+(-0.147565214833)*x[2]**o+(0.0331370104049)*x[2]  
         s[2,2,0,1]=(0.526384634874)*x[0]**o+(0.133282991706)*x[0]+(0.805017307077)*x[1]**o+(-0.266487317047)*x[1]+(0.33606063535)*x[2]**o+(0.805493533241)*x[2]  
         s[2,2,1,0]=(0.346357232135)*x[0]**o+(-0.787017955245)*x[0]+(0.30877740144)*x[1]**o+(0.451911959523)*x[1]+(0.747842891938)*x[2]**o+(-0.44945658191)*x[2]  
         s[2,2,1,1]=(-0.546211248475)*x[0]**o+(0.247263733668)*x[0]+(-0.594514097121)*x[1]**o+(-0.264637607913)*x[1]+(0.418219952147)*x[2]**o+(-0.816923592759)*x[2]  
         s[2,2,2,0]=(0.0563761896319)*x[0]**o+(-0.736507329679)*x[0]+(0.470349998404)*x[1]**o+(-0.932042349224)*x[1]+(0.462401759004)*x[2]**o+(-0.714392002134)*x[2]  
         s[2,2,2,1]=(0.240181845755)*x[0]**o+(-0.55763353473)*x[0]+(0.285496776429)*x[1]**o+(0.842557595355)*x[1]+(-0.672368632752)*x[2]**o+(0.298762100435)*x[2]  
         s[2,3,0,0]=(0.316677723523)*x[0]**o+(-0.637036430356)*x[0]+(0.00972363132121)*x[1]**o+(-0.30937691623)*x[1]+(-0.757958054703)*x[2]**o+(0.261972786754)*x[2]  
         s[2,3,0,1]=(-0.0111918506129)*x[0]**o+(-0.79939173162)*x[0]+(0.237847735286)*x[1]**o+(-0.78668226084)*x[1]+(0.707378088836)*x[2]**o+(-0.934201311773)*x[2]  
         s[2,3,1,0]=(-0.0276842306357)*x[0]**o+(0.353182001738)*x[0]+(0.458929280756)*x[1]**o+(0.845593054688)*x[1]+(-0.0437171694787)*x[2]**o+(-0.75271342809)*x[2]  
         s[2,3,1,1]=(0.752394290258)*x[0]**o+(-0.179837111909)*x[0]+(0.939093046468)*x[1]**o+(0.460733186456)*x[1]+(0.747517309414)*x[2]**o+(-0.58266983679)*x[2]  
         s[2,3,2,0]=(-0.951300235705)*x[0]**o+(-0.350444110401)*x[0]+(-0.904564312825)*x[1]**o+(0.356471509479)*x[1]+(0.0971202512406)*x[2]**o+(0.227621817712)*x[2]  
         s[2,3,2,1]=(0.404143843413)*x[0]**o+(-0.911041017819)*x[0]+(-0.567863808091)*x[1]**o+(0.228161895607)*x[1]+(-0.160584718896)*x[2]**o+(-0.951937728172)*x[2]  
         s[2,4,0,0]=(-0.284708280204)*x[0]**o+(-0.225655800044)*x[0]+(0.0189816391307)*x[1]**o+(-0.847695463473)*x[1]+(-0.603035310159)*x[2]**o+(0.878440760667)*x[2]  
         s[2,4,0,1]=(0.249580969821)*x[0]**o+(0.00196364400716)*x[0]+(-0.580222966198)*x[1]**o+(0.266039411545)*x[1]+(-0.0857426202045)*x[2]**o+(0.297517844516)*x[2]  
         s[2,4,1,0]=(-0.847202130689)*x[0]**o+(-0.409645962819)*x[0]+(-0.914867914136)*x[1]**o+(0.464829575727)*x[1]+(0.2358554853)*x[2]**o+(-0.951825555951)*x[2]  
         s[2,4,1,1]=(-0.925109552513)*x[0]**o+(0.57253113036)*x[0]+(0.531590407505)*x[1]**o+(-0.812964837422)*x[1]+(-0.354555503225)*x[2]**o+(-0.453054364223)*x[2]  
         s[2,4,2,0]=(0.669533379208)*x[0]**o+(0.147512160447)*x[0]+(0.730871788446)*x[1]**o+(-0.2646655671)*x[1]+(-0.890950482274)*x[2]**o+(0.28244962845)*x[2]  
         s[2,4,2,1]=(-0.11059763341)*x[0]**o+(0.276920644999)*x[0]+(-0.869145286116)*x[1]**o+(-0.403772968269)*x[1]+(0.319872723054)*x[2]**o+(-0.172168932529)*x[2]  
         s[3,0,0,0]=(-0.309323319641)*x[0]**o+(-0.520023896018)*x[0]+(-0.91435931387)*x[1]**o+(-0.994973476595)*x[1]+(-0.372209395986)*x[2]**o+(0.980356617984)*x[2]  
         s[3,0,0,1]=(0.741365113034)*x[0]**o+(-0.42466697031)*x[0]+(-0.800148478866)*x[1]**o+(0.891726804851)*x[1]+(0.173578031033)*x[2]**o+(-0.830047254257)*x[2]  
         s[3,0,1,0]=(0.292501009071)*x[0]**o+(-0.643570264019)*x[0]+(0.549854764281)*x[1]**o+(-0.359686767247)*x[1]+(-0.242285567291)*x[2]**o+(-0.905609679312)*x[2]  
         s[3,0,1,1]=(-0.340043108142)*x[0]**o+(0.654957588422)*x[0]+(-0.709296972181)*x[1]**o+(0.997889126174)*x[1]+(-0.0231005104624)*x[2]**o+(0.736312548493)*x[2]  
         s[3,0,2,0]=(-0.724460864229)*x[0]**o+(-0.367115506582)*x[0]+(0.932338820643)*x[1]**o+(0.386420866744)*x[1]+(0.0937739144019)*x[2]**o+(0.980197176095)*x[2]  
         s[3,0,2,1]=(-0.123268193799)*x[0]**o+(0.775389790643)*x[0]+(0.374761099968)*x[1]**o+(-0.410566663234)*x[1]+(0.61390455683)*x[2]**o+(-0.424980785321)*x[2]  
         s[3,1,0,0]=(-0.931705529761)*x[0]**o+(-0.883420554924)*x[0]+(0.364171802711)*x[1]**o+(-0.120720945763)*x[1]+(-0.264662446682)*x[2]**o+(0.694245672188)*x[2]  
         s[3,1,0,1]=(0.507167558745)*x[0]**o+(0.41310141465)*x[0]+(0.951808421277)*x[1]**o+(0.194810425697)*x[1]+(0.656365011417)*x[2]**o+(-0.869365458629)*x[2]  
         s[3,1,1,0]=(-0.00813347718406)*x[0]**o+(0.410334738969)*x[0]+(0.749864796873)*x[1]**o+(-0.592730297251)*x[1]+(-0.739489287628)*x[2]**o+(0.620937075039)*x[2]  
         s[3,1,1,1]=(-0.598495133204)*x[0]**o+(0.933561890579)*x[0]+(0.711594544245)*x[1]**o+(-0.307136681784)*x[1]+(-0.391014626741)*x[2]**o+(0.237572771088)*x[2]  
         s[3,1,2,0]=(0.0815836502329)*x[0]**o+(0.265301269129)*x[0]+(0.151163193573)*x[1]**o+(0.734126505497)*x[1]+(-0.607886397818)*x[2]**o+(-0.96735041904)*x[2]  
         s[3,1,2,1]=(0.264092716207)*x[0]**o+(-0.0674826292731)*x[0]+(0.163729761978)*x[1]**o+(-0.76481590065)*x[1]+(0.23022017141)*x[2]**o+(0.0749358120678)*x[2]  
         s[3,2,0,0]=(-0.0551562544206)*x[0]**o+(0.529626011841)*x[0]+(0.394111309195)*x[1]**o+(-0.315588836981)*x[1]+(-0.821692537082)*x[2]**o+(0.687214393749)*x[2]  
         s[3,2,0,1]=(-0.400905852693)*x[0]**o+(-0.588175641647)*x[0]+(-0.759129469971)*x[1]**o+(-0.234537321811)*x[1]+(-0.506929882395)*x[2]**o+(-0.354376736058)*x[2]  
         s[3,2,1,0]=(0.517928718456)*x[0]**o+(0.340801973663)*x[0]+(0.648735816398)*x[1]**o+(0.566053973455)*x[1]+(0.42463576352)*x[2]**o+(0.0873509981339)*x[2]  
         s[3,2,1,1]=(0.452898115077)*x[0]**o+(0.122517234268)*x[0]+(-0.98577530096)*x[1]**o+(-0.353319422026)*x[1]+(0.926541753948)*x[2]**o+(-0.393031058333)*x[2]  
         s[3,2,2,0]=(0.667750444088)*x[0]**o+(0.00375536977016)*x[0]+(0.268195379568)*x[1]**o+(0.50950653377)*x[1]+(-0.262580606419)*x[2]**o+(-0.417690499605)*x[2]  
         s[3,2,2,1]=(-0.16803158003)*x[0]**o+(0.186259658616)*x[0]+(-0.200850683296)*x[1]**o+(-0.443680999529)*x[1]+(0.0208407252003)*x[2]**o+(-0.724292481324)*x[2]  
         s[3,3,0,0]=(-0.35345741052)*x[0]**o+(0.217412970886)*x[0]+(0.27307889565)*x[1]**o+(0.267600255726)*x[1]+(-0.973212265009)*x[2]**o+(-0.129667297553)*x[2]  
         s[3,3,0,1]=(-0.891104426101)*x[0]**o+(-0.613334258669)*x[0]+(-0.373828493642)*x[1]**o+(-0.0702748602911)*x[1]+(0.236710052698)*x[2]**o+(-0.358872144334)*x[2]  
         s[3,3,1,0]=(-0.0928125660128)*x[0]**o+(0.413580667461)*x[0]+(0.8369960454)*x[1]**o+(0.77176338641)*x[1]+(-0.0577873035722)*x[2]**o+(-0.702932886813)*x[2]  
         s[3,3,1,1]=(-0.241426495256)*x[0]**o+(0.525912190909)*x[0]+(-0.428192935989)*x[1]**o+(0.892165668837)*x[1]+(0.0334032549752)*x[2]**o+(0.882084846304)*x[2]  
         s[3,3,2,0]=(-0.891362453397)*x[0]**o+(-0.339599362928)*x[0]+(0.473329812864)*x[1]**o+(-0.371616732026)*x[1]+(0.660699523287)*x[2]**o+(-0.119309478457)*x[2]  
         s[3,3,2,1]=(0.243522118981)*x[0]**o+(0.155411321418)*x[0]+(-0.230275201921)*x[1]**o+(0.63515968566)*x[1]+(0.794898971569)*x[2]**o+(0.409779242619)*x[2]  
         s[3,4,0,0]=(-0.854632433212)*x[0]**o+(-0.195836100347)*x[0]+(-0.437665256019)*x[1]**o+(0.576362236865)*x[1]+(-0.0965898541616)*x[2]**o+(0.477972926354)*x[2]  
         s[3,4,0,1]=(0.570617061345)*x[0]**o+(-0.0667297487904)*x[0]+(0.81823573301)*x[1]**o+(-0.721189008734)*x[1]+(0.314807619532)*x[2]**o+(-0.376322628683)*x[2]  
         s[3,4,1,0]=(-0.580668389702)*x[0]**o+(-0.60760839523)*x[0]+(0.686535934072)*x[1]**o+(0.0779142152446)*x[1]+(0.373571653006)*x[2]**o+(-0.88636603136)*x[2]  
         s[3,4,1,1]=(0.987949055842)*x[0]**o+(-0.370309316213)*x[0]+(0.491077591851)*x[1]**o+(0.544978214302)*x[1]+(0.0979248628028)*x[2]**o+(0.0838359159228)*x[2]  
         s[3,4,2,0]=(-0.0541483763088)*x[0]**o+(0.491394550602)*x[0]+(0.492110322334)*x[1]**o+(-0.113182373476)*x[1]+(0.807657591761)*x[2]**o+(0.387085950646)*x[2]  
         s[3,4,2,1]=(-0.420727803772)*x[0]**o+(-0.105139523222)*x[0]+(-0.51755674286)*x[1]**o+(-0.219056797552)*x[1]+(-0.0414122967561)*x[2]**o+(-0.161491064048)*x[2]  
         ref[0,0,0,0]=(0.776303486002)/(o+1.)+(-0.66485490298)  
         ref[0,0,0,1]=(0.73709920253)/(o+1.)+(-0.0305237564282)  
         ref[0,0,1,0]=(1.62934422719)/(o+1.)+(-0.118729058429)  
         ref[0,0,1,1]=(1.21227703769)/(o+1.)+(-1.04950265251)  
         ref[0,0,2,0]=(-0.989239328736)/(o+1.)+(0.0861717711464)  
         ref[0,0,2,1]=(-0.545045045276)/(o+1.)+(-0.453531722457)  
         ref[0,1,0,0]=(-0.212230003001)/(o+1.)+(-0.0980278628049)  
         ref[0,1,0,1]=(-0.623507761533)/(o+1.)+(0.831239111696)  
         ref[0,1,1,0]=(1.20308213631)/(o+1.)+(0.21904770931)  
         ref[0,1,1,1]=(-0.414005236391)/(o+1.)+(0.734379105797)  
         ref[0,1,2,0]=(1.69005154613)/(o+1.)+(0.599453731488)  
         ref[0,1,2,1]=(1.30699723672)/(o+1.)+(0.447731919557)  
         ref[0,2,0,0]=(-0.274684837419)/(o+1.)+(-0.281541795502)  
         ref[0,2,0,1]=(0.792946401732)/(o+1.)+(0.598271545783)  
         ref[0,2,1,0]=(0.972930281169)/(o+1.)+(-0.692993050277)  
         ref[0,2,1,1]=(-0.0948038476807)/(o+1.)+(-1.02610432679)  
         ref[0,2,2,0]=(-0.417537958819)/(o+1.)+(0.0995721234709)  
         ref[0,2,2,1]=(-0.343497078715)/(o+1.)+(0.287457935028)  
         ref[0,3,0,0]=(1.06075362632)/(o+1.)+(0.392105127981)  
         ref[0,3,0,1]=(-1.00743816734)/(o+1.)+(0.55530959011)  
         ref[0,3,1,0]=(-1.35069907354)/(o+1.)+(-0.151109418893)  
         ref[0,3,1,1]=(-0.209730918326)/(o+1.)+(-0.44139704026)  
         ref[0,3,2,0]=(0.119571029049)/(o+1.)+(-0.788918379535)  
         ref[0,3,2,1]=(0.834197985747)/(o+1.)+(0.0545741077131)  
         ref[0,4,0,0]=(-0.713019032656)/(o+1.)+(0.0605014475136)  
         ref[0,4,0,1]=(-0.188400834074)/(o+1.)+(0.0384669533136)  
         ref[0,4,1,0]=(0.663494658006)/(o+1.)+(-0.197020376502)  
         ref[0,4,1,1]=(1.57999775376)/(o+1.)+(-0.158042262352)  
         ref[0,4,2,0]=(-0.825055197978)/(o+1.)+(0.190884563494)  
         ref[0,4,2,1]=(-0.230079936711)/(o+1.)+(-0.619555317351)  
         ref[1,0,0,0]=(0.0484302346511)/(o+1.)+(-0.277365092912)  
         ref[1,0,0,1]=(-1.18699865107)/(o+1.)+(0.283637899436)  
         ref[1,0,1,0]=(0.347990624042)/(o+1.)+(0.00803167578244)  
         ref[1,0,1,1]=(-0.160064935171)/(o+1.)+(0.185408737905)  
         ref[1,0,2,0]=(1.35245255927)/(o+1.)+(-0.531140014353)  
         ref[1,0,2,1]=(1.13553833557)/(o+1.)+(0.152237391837)  
         ref[1,1,0,0]=(0.99189846918)/(o+1.)+(0.338006421989)  
         ref[1,1,0,1]=(-0.0255713914667)/(o+1.)+(0.12819321635)  
         ref[1,1,1,0]=(-0.622986210996)/(o+1.)+(0.554888335978)  
         ref[1,1,1,1]=(-0.0472909279168)/(o+1.)+(0.185961952963)  
         ref[1,1,2,0]=(-0.729785677925)/(o+1.)+(-0.63936846664)  
         ref[1,1,2,1]=(1.81104663684)/(o+1.)+(0.515008349399)  
         ref[1,2,0,0]=(-1.54598989482)/(o+1.)+(0.284091818483)  
         ref[1,2,0,1]=(0.182955266737)/(o+1.)+(0.00729582783438)  
         ref[1,2,1,0]=(0.0678788403948)/(o+1.)+(0.0566178324469)  
         ref[1,2,1,1]=(1.74208188933)/(o+1.)+(0.659881443367)  
         ref[1,2,2,0]=(-0.0382440547455)/(o+1.)+(-0.535487134074)  
         ref[1,2,2,1]=(0.198093668675)/(o+1.)+(-0.89001529806)  
         ref[1,3,0,0]=(1.62490272607)/(o+1.)+(0.765524305033)  
         ref[1,3,0,1]=(0.279965727369)/(o+1.)+(0.214570595298)  
         ref[1,3,1,0]=(0.304113915286)/(o+1.)+(0.76954018039)  
         ref[1,3,1,1]=(-0.885314465993)/(o+1.)+(0.62922698534)  
         ref[1,3,2,0]=(0.434655075403)/(o+1.)+(-0.793446006776)  
         ref[1,3,2,1]=(0.242224993913)/(o+1.)+(0.35107235084)  
         ref[1,4,0,0]=(0.230763217193)/(o+1.)+(-0.155861223318)  
         ref[1,4,0,1]=(0.808280805525)/(o+1.)+(0.0274401101125)  
         ref[1,4,1,0]=(1.00266325917)/(o+1.)+(0.58007079489)  
         ref[1,4,1,1]=(-0.641806023088)/(o+1.)+(-0.767874882808)  
         ref[1,4,2,0]=(-1.27895710644)/(o+1.)+(0.573630110668)  
         ref[1,4,2,1]=(-1.85031165866)/(o+1.)+(0.233982522704)  
         ref[2,0,0,0]=(-1.36306650425)/(o+1.)+(-0.0533791412027)  
         ref[2,0,0,1]=(1.10778233734)/(o+1.)+(-0.109894920649)  
         ref[2,0,1,0]=(-0.607343404586)/(o+1.)+(-0.0381401236341)  
         ref[2,0,1,1]=(-1.3016959741)/(o+1.)+(0.716358469177)  
         ref[2,0,2,0]=(-1.65648421545)/(o+1.)+(0.675405459391)  
         ref[2,0,2,1]=(1.43609344598)/(o+1.)+(-0.147175797578)  
         ref[2,1,0,0]=(1.71599313418)/(o+1.)+(0.476324427863)  
         ref[2,1,0,1]=(-0.197534803692)/(o+1.)+(0.74045848327)  
         ref[2,1,1,0]=(1.15353139511)/(o+1.)+(-0.202917075571)  
         ref[2,1,1,1]=(-0.646719728334)/(o+1.)+(0.089255774502)  
         ref[2,1,2,0]=(-0.59247668041)/(o+1.)+(0.588338907289)  
         ref[2,1,2,1]=(0.666534772105)/(o+1.)+(-0.171967067769)  
         ref[2,2,0,0]=(0.10417442527)/(o+1.)+(-0.0373262159521)  
         ref[2,2,0,1]=(1.6674625773)/(o+1.)+(0.33614460395)  
         ref[2,2,1,0]=(1.40297752551)/(o+1.)+(-0.392281288816)  
         ref[2,2,1,1]=(-0.72250539345)/(o+1.)+(-0.417148733502)  
         ref[2,2,2,0]=(0.98912794704)/(o+1.)+(-1.19147084052)  
         ref[2,2,2,1]=(-0.146690010568)/(o+1.)+(0.29184308053)  
         ref[2,3,0,0]=(-0.431556699859)/(o+1.)+(-0.342220279916)  
         ref[2,3,0,1]=(0.934033973509)/(o+1.)+(-1.26013765212)  
         ref[2,3,1,0]=(0.387527880641)/(o+1.)+(0.223030814168)  
         ref[2,3,1,1]=(2.43900464614)/(o+1.)+(-0.150886881122)  
         ref[2,3,2,0]=(-1.75874429729)/(o+1.)+(0.116824608395)  
         ref[2,3,2,1]=(-0.324304683574)/(o+1.)+(-0.817408425192)  
         ref[2,4,0,0]=(-0.868761951233)/(o+1.)+(-0.0974552514252)  
         ref[2,4,0,1]=(-0.416384616581)/(o+1.)+(0.282760450034)  
         ref[2,4,1,0]=(-1.52621455953)/(o+1.)+(-0.448320971521)  
         ref[2,4,1,1]=(-0.748074648234)/(o+1.)+(-0.346744035642)  
         ref[2,4,2,0]=(0.50945468538)/(o+1.)+(0.0826481108988)  
         ref[2,4,2,1]=(-0.659870196472)/(o+1.)+(-0.1495106279)  
         ref[3,0,0,0]=(-1.5958920295)/(o+1.)+(-0.267320377314)  
         ref[3,0,0,1]=(0.114794665201)/(o+1.)+(-0.181493709858)  
         ref[3,0,1,0]=(0.600070206061)/(o+1.)+(-0.954433355289)  
         ref[3,0,1,1]=(-1.07244059079)/(o+1.)+(1.19457963154)  
         ref[3,0,2,0]=(0.301651870816)/(o+1.)+(0.499751268128)  
         ref[3,0,2,1]=(0.865397463)/(o+1.)+(-0.0300788289559)  
         ref[3,1,0,0]=(-0.832196173732)/(o+1.)+(-0.15494791425)  
         ref[3,1,0,1]=(2.11534099144)/(o+1.)+(-0.130726809141)  
         ref[3,1,1,0]=(0.00224203206025)/(o+1.)+(0.219270758379)  
         ref[3,1,1,1]=(-0.277915215701)/(o+1.)+(0.431998989942)  
         ref[3,1,2,0]=(-0.375139554013)/(o+1.)+(0.0160386777929)  
         ref[3,1,2,1]=(0.658042649595)/(o+1.)+(-0.378681358928)  
         ref[3,2,0,0]=(-0.482737482307)/(o+1.)+(0.450625784304)  
         ref[3,2,0,1]=(-1.66696520506)/(o+1.)+(-0.588544849758)  
         ref[3,2,1,0]=(1.59130029837)/(o+1.)+(0.497103472626)  
         ref[3,2,1,1]=(0.393664568064)/(o+1.)+(-0.311916623046)  
         ref[3,2,2,0]=(0.673365217238)/(o+1.)+(0.0477857019673)  
         ref[3,2,2,1]=(-0.348041538126)/(o+1.)+(-0.490856911118)  
         ref[3,3,0,0]=(-1.05359077988)/(o+1.)+(0.17767296453)  
         ref[3,3,0,1]=(-1.02822286704)/(o+1.)+(-0.521240631647)  
         ref[3,3,1,0]=(0.686396175815)/(o+1.)+(0.241205583529)  
         ref[3,3,1,1]=(-0.63621617627)/(o+1.)+(1.15008135302)  
         ref[3,3,2,0]=(0.242666882753)/(o+1.)+(-0.415262786705)  
         ref[3,3,2,1]=(0.808145888629)/(o+1.)+(0.600175124848)  
         ref[3,4,0,0]=(-1.38888754339)/(o+1.)+(0.429249531436)  
         ref[3,4,0,1]=(1.70366041389)/(o+1.)+(-0.582120693104)  
         ref[3,4,1,0]=(0.479439197375)/(o+1.)+(-0.708030105673)  
         ref[3,4,1,1]=(1.5769515105)/(o+1.)+(0.129252407006)  
         ref[3,4,2,0]=(1.24561953779)/(o+1.)+(0.382649063886)  
         ref[3,4,2,1]=(-0.979696843387)/(o+1.)+(-0.242843692411)  
       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_onReducedFunction_fromSymbol_Solution_rank0(self):  
       """  
       tests integral of rank 0 Symbol on the ReducedFunction  
   
       assumptions: Solution(self.domain) exists  
                    self.domain supports integral on ReducedFunction  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=ReducedFunction(self.domain)  
       w=Solution(self.domain)  
       x=w.getX()  
       arg=Symbol(shape=())  
       s=Data(0,(),w)  
       if dim==2:  
         s=(-0.496833468021)*x[0]**o+(-0.119656931817)*x[0]+(-0.456435785007)*x[1]**o+(0.0378732106767)*x[1]  
         ref=(-0.953269253027)/(o+1.)+(-0.04089186057)  
       else:  
         s=(0.960756800558)*x[0]**o+(-0.297563111204)*x[0]+(0.657965711967)*x[1]**o+(-0.942706539964)*x[1]+(-0.460398488427)*x[2]**o+(0.539495746387)*x[2]  
         ref=(1.1583240241)/(o+1.)+(-0.350386952391)  
       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_onReducedFunction_fromSymbol_Solution_rank1(self):  
       """  
       tests integral of rank 1 Symbol on the ReducedFunction  
   
       assumptions: Solution(self.domain) exists  
                    self.domain supports integral on ReducedFunction  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=ReducedFunction(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.521294857582)*x[0]**o+(0.813966078452)*x[0]+(-0.460972018313)*x[1]**o+(-0.274643646978)*x[1]  
         s[1]=(0.64160433254)*x[0]**o+(0.100182020329)*x[0]+(-0.877560875536)*x[1]**o+(0.0967945574365)*x[1]  
         ref[0]=(-0.982266875895)/(o+1.)+(0.269661215737)  
         ref[1]=(-0.235956542996)/(o+1.)+(0.0984882888828)  
       else:  
         s[0]=(-0.935408759921)*x[0]**o+(-0.636823488942)*x[0]+(-0.937973746046)*x[1]**o+(-0.548377694248)*x[1]+(-0.325664041787)*x[2]**o+(-0.859644239487)*x[2]  
         s[1]=(-0.618325226925)*x[0]**o+(-0.464240689062)*x[0]+(-0.333395219266)*x[1]**o+(0.75384521826)*x[1]+(0.812529741058)*x[2]**o+(0.293845075804)*x[2]  
         ref[0]=(-2.19904654775)/(o+1.)+(-1.02242271134)  
         ref[1]=(-0.139190705133)/(o+1.)+(0.291724802501)  
       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_onReducedFunction_fromSymbol_Solution_rank2(self):  
       """  
       tests integral of rank 2 Symbol on the ReducedFunction  
   
       assumptions: Solution(self.domain) exists  
                    self.domain supports integral on ReducedFunction  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=ReducedFunction(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.745131837074)*x[0]**o+(0.954368069641)*x[0]+(0.582989014357)*x[1]**o+(0.649474790852)*x[1]  
         s[0,1]=(0.0682420943207)*x[0]**o+(0.890255947523)*x[0]+(-0.501961353506)*x[1]**o+(-0.468049947986)*x[1]  
         s[0,2]=(-0.376326981417)*x[0]**o+(0.318377164087)*x[0]+(0.518313700818)*x[1]**o+(-0.624749027625)*x[1]  
         s[0,3]=(-0.0127578587596)*x[0]**o+(0.510088777647)*x[0]+(-0.00731027766723)*x[1]**o+(0.404116290004)*x[1]  
         s[0,4]=(-0.566065672786)*x[0]**o+(-0.797903214842)*x[0]+(0.305896347185)*x[1]**o+(-0.44763489831)*x[1]  
         s[1,0]=(0.136108309012)*x[0]**o+(0.8858491692)*x[0]+(0.63174549565)*x[1]**o+(0.12884968267)*x[1]  
         s[1,1]=(-0.420219415055)*x[0]**o+(-0.474087579489)*x[0]+(-0.639616730493)*x[1]**o+(-0.339713160471)*x[1]  
         s[1,2]=(0.730001695284)*x[0]**o+(-0.281914379046)*x[0]+(-0.0897917239674)*x[1]**o+(-0.521366256858)*x[1]  
         s[1,3]=(0.507225459863)*x[0]**o+(-0.279054149386)*x[0]+(-0.310997653203)*x[1]**o+(0.798594910647)*x[1]  
         s[1,4]=(-0.473780124237)*x[0]**o+(-0.521982314393)*x[0]+(-0.66517104956)*x[1]**o+(0.906212634536)*x[1]  
         s[2,0]=(0.981595846105)*x[0]**o+(0.306232557856)*x[0]+(0.144004451791)*x[1]**o+(0.590440862044)*x[1]  
         s[2,1]=(-0.465282108724)*x[0]**o+(-0.911349734596)*x[0]+(0.724954062739)*x[1]**o+(0.0617692321941)*x[1]  
         s[2,2]=(-0.698461944366)*x[0]**o+(0.69038728172)*x[0]+(-0.0999661256163)*x[1]**o+(0.81993889447)*x[1]  
         s[2,3]=(-0.850065489825)*x[0]**o+(-0.137124990846)*x[0]+(0.390609467506)*x[1]**o+(0.0928979112394)*x[1]  
         s[2,4]=(-0.831110879728)*x[0]**o+(0.85125177454)*x[0]+(0.322669554869)*x[1]**o+(0.199419883126)*x[1]  
         s[3,0]=(0.560516174698)*x[0]**o+(-0.952963851912)*x[0]+(0.0840374448937)*x[1]**o+(0.852644015588)*x[1]  
         s[3,1]=(-0.738776742753)*x[0]**o+(-0.718650015551)*x[0]+(-0.48025826111)*x[1]**o+(0.163919964403)*x[1]  
         s[3,2]=(-0.498985570012)*x[0]**o+(0.796130560575)*x[0]+(0.78812252561)*x[1]**o+(0.427402467946)*x[1]  
         s[3,3]=(0.900695900592)*x[0]**o+(-0.68276543281)*x[0]+(-0.448699598266)*x[1]**o+(0.338876907438)*x[1]  
         s[3,4]=(-0.101161698815)*x[0]**o+(0.24782725682)*x[0]+(0.194568299968)*x[1]**o+(-0.232062305313)*x[1]  
         ref[0,0]=(1.32812085143)/(o+1.)+(0.801921430247)  
         ref[0,1]=(-0.433719259185)/(o+1.)+(0.211102999768)  
         ref[0,2]=(0.141986719401)/(o+1.)+(-0.153185931769)  
         ref[0,3]=(-0.0200681364268)/(o+1.)+(0.457102533825)  
         ref[0,4]=(-0.260169325601)/(o+1.)+(-0.622769056576)  
         ref[1,0]=(0.767853804662)/(o+1.)+(0.507349425935)  
         ref[1,1]=(-1.05983614555)/(o+1.)+(-0.40690036998)  
         ref[1,2]=(0.640209971317)/(o+1.)+(-0.401640317952)  
         ref[1,3]=(0.19622780666)/(o+1.)+(0.259770380631)  
         ref[1,4]=(-1.1389511738)/(o+1.)+(0.192115160071)  
         ref[2,0]=(1.1256002979)/(o+1.)+(0.44833670995)  
         ref[2,1]=(0.259671954016)/(o+1.)+(-0.424790251201)  
         ref[2,2]=(-0.798428069982)/(o+1.)+(0.755163088095)  
         ref[2,3]=(-0.459456022319)/(o+1.)+(-0.0221135398034)  
         ref[2,4]=(-0.508441324858)/(o+1.)+(0.525335828833)  
         ref[3,0]=(0.644553619592)/(o+1.)+(-0.0501599181621)  
         ref[3,1]=(-1.21903500386)/(o+1.)+(-0.277365025574)  
         ref[3,2]=(0.289136955597)/(o+1.)+(0.611766514261)  
         ref[3,3]=(0.451996302326)/(o+1.)+(-0.171944262686)  
         ref[3,4]=(0.0934066011531)/(o+1.)+(0.00788247575383)  
       else:  
         s[0,0]=(0.581126436866)*x[0]**o+(0.307736169306)*x[0]+(0.46264603817)*x[1]**o+(-0.658226966972)*x[1]+(0.560314472945)*x[2]**o+(-0.71392138112)*x[2]  
         s[0,1]=(0.41763244695)*x[0]**o+(-0.249710720358)*x[0]+(0.318827586572)*x[1]**o+(-0.766338584888)*x[1]+(-0.235847336194)*x[2]**o+(0.720822035745)*x[2]  
         s[0,2]=(0.753177939244)*x[0]**o+(0.575601283201)*x[0]+(0.833261599709)*x[1]**o+(0.285673583448)*x[1]+(-0.850617074406)*x[2]**o+(0.976207021957)*x[2]  
         s[0,3]=(-0.246323991583)*x[0]**o+(-0.425601468065)*x[0]+(-0.631382577618)*x[1]**o+(0.303177559003)*x[1]+(-0.772499313037)*x[2]**o+(0.0976456268892)*x[2]  
         s[0,4]=(0.459782891083)*x[0]**o+(0.695607546341)*x[0]+(-0.758437555397)*x[1]**o+(-0.0467038938803)*x[1]+(0.077637691262)*x[2]**o+(0.632686471042)*x[2]  
         s[1,0]=(0.62677312896)*x[0]**o+(-0.538520494446)*x[0]+(0.322526032671)*x[1]**o+(0.155570348616)*x[1]+(-0.645711565238)*x[2]**o+(-0.505639404827)*x[2]  
         s[1,1]=(0.760035088253)*x[0]**o+(-0.653433840013)*x[0]+(0.541102747261)*x[1]**o+(0.102121826295)*x[1]+(0.203147157734)*x[2]**o+(0.825692237055)*x[2]  
         s[1,2]=(0.83286976398)*x[0]**o+(-0.483950138218)*x[0]+(-0.988388711773)*x[1]**o+(0.276946264031)*x[1]+(-0.769100710972)*x[2]**o+(-0.857758652165)*x[2]  
         s[1,3]=(0.965261287995)*x[0]**o+(-0.582299103263)*x[0]+(0.650118954781)*x[1]**o+(-0.714080635544)*x[1]+(-0.984672595257)*x[2]**o+(-0.890248882426)*x[2]  
         s[1,4]=(0.780505914972)*x[0]**o+(-0.469283145875)*x[0]+(0.65642477278)*x[1]**o+(-0.0385309033271)*x[1]+(-0.838684124311)*x[2]**o+(0.715186480156)*x[2]  
         s[2,0]=(-0.957976655406)*x[0]**o+(-0.326902969464)*x[0]+(0.519819227981)*x[1]**o+(0.526859170123)*x[1]+(-0.83643924332)*x[2]**o+(-0.833906618158)*x[2]  
         s[2,1]=(0.511380988321)*x[0]**o+(0.205939303999)*x[0]+(-0.560011037377)*x[1]**o+(-0.74412420954)*x[1]+(-0.413858375939)*x[2]**o+(-0.818302325723)*x[2]  
         s[2,2]=(0.669120009156)*x[0]**o+(-0.680617749061)*x[0]+(-0.855851359703)*x[1]**o+(0.681103383833)*x[1]+(0.358345655307)*x[2]**o+(-0.834176731331)*x[2]  
         s[2,3]=(0.113991673968)*x[0]**o+(-0.167621358311)*x[0]+(-0.824506843066)*x[1]**o+(0.576032397062)*x[1]+(0.98813748839)*x[2]**o+(-0.954277123787)*x[2]  
         s[2,4]=(0.758065768891)*x[0]**o+(0.550472010004)*x[0]+(0.541968389568)*x[1]**o+(-0.893196211859)*x[1]+(0.55846204484)*x[2]**o+(-0.154935285741)*x[2]  
         s[3,0]=(0.319452905704)*x[0]**o+(0.416924332754)*x[0]+(0.695996329307)*x[1]**o+(-0.512723809281)*x[1]+(-0.0438582487583)*x[2]**o+(-0.202757150975)*x[2]  
         s[3,1]=(0.300936121076)*x[0]**o+(0.0199168771219)*x[0]+(-0.79311689061)*x[1]**o+(0.120821678434)*x[1]+(0.832598541766)*x[2]**o+(-0.13378517127)*x[2]  
         s[3,2]=(0.816251625164)*x[0]**o+(0.180324577125)*x[0]+(0.869902904875)*x[1]**o+(-0.300483761133)*x[1]+(0.405728532808)*x[2]**o+(-0.772682148538)*x[2]  
         s[3,3]=(-0.0882536430174)*x[0]**o+(0.67244001887)*x[0]+(-0.295701327277)*x[1]**o+(-0.235065967505)*x[1]+(0.905094390215)*x[2]**o+(-0.132120939051)*x[2]  
         s[3,4]=(0.976955651594)*x[0]**o+(0.36283338584)*x[0]+(0.21945555266)*x[1]**o+(-0.305668951381)*x[1]+(0.581731431193)*x[2]**o+(-0.308954336316)*x[2]  
         ref[0,0]=(1.60408694798)/(o+1.)+(-0.532206089393)  
         ref[0,1]=(0.500612697329)/(o+1.)+(-0.147613634751)  
         ref[0,2]=(0.735822464547)/(o+1.)+(0.918740944303)  
         ref[0,3]=(-1.65020588224)/(o+1.)+(-0.0123891410865)  
         ref[0,4]=(-0.221016973052)/(o+1.)+(0.640795061752)  
         ref[1,0]=(0.303587596392)/(o+1.)+(-0.444294775329)  
         ref[1,1]=(1.50428499325)/(o+1.)+(0.137190111668)  
         ref[1,2]=(-0.924619658766)/(o+1.)+(-0.532381263176)  
         ref[1,3]=(0.630707647519)/(o+1.)+(-1.09331431062)  
         ref[1,4]=(0.598246563441)/(o+1.)+(0.103686215477)  
         ref[2,0]=(-1.27459667074)/(o+1.)+(-0.31697520875)  
         ref[2,1]=(-0.462488424995)/(o+1.)+(-0.678243615632)  
         ref[2,2]=(0.17161430476)/(o+1.)+(-0.416845548279)  
         ref[2,3]=(0.277622319292)/(o+1.)+(-0.272933042518)  
         ref[2,4]=(1.8584962033)/(o+1.)+(-0.248829743798)  
         ref[3,0]=(0.971590986252)/(o+1.)+(-0.149278313751)  
         ref[3,1]=(0.340417772233)/(o+1.)+(0.00347669214316)  
         ref[3,2]=(2.09188306285)/(o+1.)+(-0.446420666273)  
         ref[3,3]=(0.521139419921)/(o+1.)+(0.152626556157)  
         ref[3,4]=(1.77814263545)/(o+1.)+(-0.125894950929)  
       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_onReducedFunction_fromSymbol_Solution_rank3(self):  
       """  
       tests integral of rank 3 Symbol on the ReducedFunction  
   
       assumptions: Solution(self.domain) exists  
                    self.domain supports integral on ReducedFunction  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=ReducedFunction(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.327469743415)*x[0]**o+(0.986515360087)*x[0]+(-0.264743586601)*x[1]**o+(-0.417911841646)*x[1]  
         s[0,0,1]=(-0.367335531482)*x[0]**o+(-0.294564095391)*x[0]+(0.948849162205)*x[1]**o+(-0.672727814952)*x[1]  
         s[0,1,0]=(0.201971500659)*x[0]**o+(0.715648302042)*x[0]+(0.200753457036)*x[1]**o+(-0.447431022755)*x[1]  
         s[0,1,1]=(0.391503527712)*x[0]**o+(0.561563485529)*x[0]+(0.0756343714486)*x[1]**o+(-0.232567658257)*x[1]  
         s[1,0,0]=(0.0416189159889)*x[0]**o+(0.933172580543)*x[0]+(0.906370262092)*x[1]**o+(0.843408035954)*x[1]  
         s[1,0,1]=(-0.0489328569668)*x[0]**o+(0.305933018225)*x[0]+(0.459563500395)*x[1]**o+(-0.305696910459)*x[1]  
         s[1,1,0]=(-0.166432892993)*x[0]**o+(0.323257103336)*x[0]+(-0.876673724336)*x[1]**o+(-0.246533332987)*x[1]  
         s[1,1,1]=(0.331551737096)*x[0]**o+(-0.473411829001)*x[0]+(0.658917172856)*x[1]**o+(-0.645603256937)*x[1]  
         s[2,0,0]=(-0.779837619461)*x[0]**o+(0.726847293406)*x[0]+(0.756283586425)*x[1]**o+(0.820695230411)*x[1]  
         s[2,0,1]=(-0.0446700642358)*x[0]**o+(-0.00612226458731)*x[0]+(-0.255350731215)*x[1]**o+(0.279072151991)*x[1]  
         s[2,1,0]=(0.952754783643)*x[0]**o+(0.575497372286)*x[0]+(-0.996409669059)*x[1]**o+(-0.993504128277)*x[1]  
         s[2,1,1]=(-0.964146199975)*x[0]**o+(-0.89830816406)*x[0]+(0.27874102283)*x[1]**o+(-0.193698734442)*x[1]  
         s[3,0,0]=(-0.22434829265)*x[0]**o+(-0.451123824419)*x[0]+(0.0996011155458)*x[1]**o+(-0.0196796989303)*x[1]  
         s[3,0,1]=(0.479762785194)*x[0]**o+(-0.0875868570981)*x[0]+(-0.604020314973)*x[1]**o+(-0.948950136203)*x[1]  
         s[3,1,0]=(0.380546378709)*x[0]**o+(0.968895520825)*x[0]+(0.0717757394195)*x[1]**o+(0.00273829931123)*x[1]  
         s[3,1,1]=(0.999877803305)*x[0]**o+(0.726497905193)*x[0]+(-0.156097974361)*x[1]**o+(0.875069921439)*x[1]  
         s[4,0,0]=(0.298060895282)*x[0]**o+(-0.25017046132)*x[0]+(-0.6409928584)*x[1]**o+(0.237325951363)*x[1]  
         s[4,0,1]=(0.176241833972)*x[0]**o+(0.362302520221)*x[0]+(-0.632667110076)*x[1]**o+(0.206684577439)*x[1]  
         s[4,1,0]=(-0.0658280231422)*x[0]**o+(-0.830173560366)*x[0]+(-0.408668580492)*x[1]**o+(0.131219154432)*x[1]  
         s[4,1,1]=(-0.739357616315)*x[0]**o+(0.331825079796)*x[0]+(-0.950532071867)*x[1]**o+(0.430637319576)*x[1]  
         s[5,0,0]=(-0.374056178585)*x[0]**o+(-0.503558441322)*x[0]+(0.253751100374)*x[1]**o+(-0.169874527745)*x[1]  
         s[5,0,1]=(-0.540168118335)*x[0]**o+(-0.599437156114)*x[0]+(-0.545843659509)*x[1]**o+(-0.144502584314)*x[1]  
         s[5,1,0]=(0.734871232877)*x[0]**o+(0.294937992469)*x[0]+(0.318246966782)*x[1]**o+(0.301215884904)*x[1]  
         s[5,1,1]=(-0.48224128272)*x[0]**o+(-0.971913873914)*x[0]+(-0.853997429288)*x[1]**o+(0.911950472127)*x[1]  
         ref[0,0,0]=(0.062726156814)/(o+1.)+(0.284301759221)  
         ref[0,0,1]=(0.581513630723)/(o+1.)+(-0.483645955172)  
         ref[0,1,0]=(0.402724957695)/(o+1.)+(0.134108639643)  
         ref[0,1,1]=(0.467137899161)/(o+1.)+(0.164497913636)  
         ref[1,0,0]=(0.947989178081)/(o+1.)+(0.888290308248)  
         ref[1,0,1]=(0.410630643428)/(o+1.)+(0.000118053882864)  
         ref[1,1,0]=(-1.04310661733)/(o+1.)+(0.0383618851745)  
         ref[1,1,1]=(0.990468909952)/(o+1.)+(-0.559507542969)  
         ref[2,0,0]=(-0.0235540330353)/(o+1.)+(0.773771261908)  
         ref[2,0,1]=(-0.300020795451)/(o+1.)+(0.136474943702)  
         ref[2,1,0]=(-0.043654885416)/(o+1.)+(-0.209003377996)  
         ref[2,1,1]=(-0.685405177144)/(o+1.)+(-0.546003449251)  
         ref[3,0,0]=(-0.124747177104)/(o+1.)+(-0.235401761675)  
         ref[3,0,1]=(-0.124257529779)/(o+1.)+(-0.51826849665)  
         ref[3,1,0]=(0.452322118128)/(o+1.)+(0.485816910068)  
         ref[3,1,1]=(0.843779828944)/(o+1.)+(0.800783913316)  
         ref[4,0,0]=(-0.342931963118)/(o+1.)+(-0.00642225497804)  
         ref[4,0,1]=(-0.456425276104)/(o+1.)+(0.28449354883)  
         ref[4,1,0]=(-0.474496603634)/(o+1.)+(-0.349477202967)  
         ref[4,1,1]=(-1.68988968818)/(o+1.)+(0.381231199686)  
         ref[5,0,0]=(-0.120305078211)/(o+1.)+(-0.336716484533)  
         ref[5,0,1]=(-1.08601177784)/(o+1.)+(-0.371969870214)  
         ref[5,1,0]=(1.05311819966)/(o+1.)+(0.298076938687)  
         ref[5,1,1]=(-1.33623871201)/(o+1.)+(-0.0299817008935)  
       else:  
         s[0,0,0]=(0.907642728831)*x[0]**o+(0.24755436099)*x[0]+(0.329429496561)*x[1]**o+(0.195804615806)*x[1]+(0.635928214783)*x[2]**o+(0.286575554416)*x[2]  
         s[0,0,1]=(-0.596463751156)*x[0]**o+(-0.573557158304)*x[0]+(-0.799372215818)*x[1]**o+(0.917917612224)*x[1]+(0.743915017372)*x[2]**o+(0.697340711065)*x[2]  
         s[0,1,0]=(-0.226377288829)*x[0]**o+(0.11441928128)*x[0]+(0.915343934109)*x[1]**o+(0.0235994828916)*x[1]+(0.837206417747)*x[2]**o+(-0.809536949964)*x[2]  
         s[0,1,1]=(-0.807835571238)*x[0]**o+(-0.313842967415)*x[0]+(0.143974822075)*x[1]**o+(0.772050096219)*x[1]+(0.0698457301843)*x[2]**o+(-0.878711129876)*x[2]  
         s[1,0,0]=(0.806964016183)*x[0]**o+(0.906862034833)*x[0]+(0.656990650598)*x[1]**o+(0.858146180457)*x[1]+(-0.455748564953)*x[2]**o+(0.0415537957765)*x[2]  
         s[1,0,1]=(0.930192572382)*x[0]**o+(0.406175274412)*x[0]+(0.522683472096)*x[1]**o+(-0.40154832923)*x[1]+(0.62436447915)*x[2]**o+(0.942684294891)*x[2]  
         s[1,1,0]=(-0.190480904061)*x[0]**o+(-0.884913647118)*x[0]+(0.894504380487)*x[1]**o+(0.472867062235)*x[1]+(-0.226561577541)*x[2]**o+(0.0817340770676)*x[2]  
         s[1,1,1]=(-0.785577817856)*x[0]**o+(0.286061214076)*x[0]+(-0.29241495776)*x[1]**o+(-0.885469334696)*x[1]+(-0.728917274605)*x[2]**o+(-0.400170372532)*x[2]  
         s[2,0,0]=(-0.0443801095191)*x[0]**o+(-0.580757683753)*x[0]+(-0.680012816252)*x[1]**o+(-0.24174589493)*x[1]+(-0.32345463822)*x[2]**o+(0.488362285647)*x[2]  
         s[2,0,1]=(0.427683981593)*x[0]**o+(0.709521979359)*x[0]+(-0.485171186139)*x[1]**o+(-0.466170281294)*x[1]+(0.668169758775)*x[2]**o+(-0.32376435425)*x[2]  
         s[2,1,0]=(-0.322582923837)*x[0]**o+(-0.243805747954)*x[0]+(-0.282254505116)*x[1]**o+(0.276894252913)*x[1]+(0.425316275665)*x[2]**o+(-0.843958018195)*x[2]  
         s[2,1,1]=(-0.172148420657)*x[0]**o+(0.288740472914)*x[0]+(0.3130139801)*x[1]**o+(0.0909556111434)*x[1]+(-0.134361659944)*x[2]**o+(-0.958259889515)*x[2]  
         s[3,0,0]=(0.509175759598)*x[0]**o+(0.901681022023)*x[0]+(-0.04878880083)*x[1]**o+(-0.292935057546)*x[1]+(-0.73460973687)*x[2]**o+(0.143266558286)*x[2]  
         s[3,0,1]=(-0.525256676545)*x[0]**o+(0.330501687555)*x[0]+(-0.533311903214)*x[1]**o+(-0.558985165298)*x[1]+(-0.726910027746)*x[2]**o+(-0.430022743518)*x[2]  
         s[3,1,0]=(-0.801052113128)*x[0]**o+(0.383850418649)*x[0]+(-0.74692163952)*x[1]**o+(0.119907629434)*x[1]+(-0.688440032866)*x[2]**o+(0.258856702215)*x[2]  
         s[3,1,1]=(0.662483893926)*x[0]**o+(0.321392974926)*x[0]+(0.797623010994)*x[1]**o+(-0.555546458227)*x[1]+(0.140050792242)*x[2]**o+(0.819042937008)*x[2]  
         s[4,0,0]=(0.208697187872)*x[0]**o+(0.347715032509)*x[0]+(0.900642395285)*x[1]**o+(-0.121096976816)*x[1]+(0.473919668027)*x[2]**o+(0.693182424772)*x[2]  
         s[4,0,1]=(0.185689163302)*x[0]**o+(0.923973904464)*x[0]+(-0.091048447659)*x[1]**o+(-0.331567067076)*x[1]+(0.0639420800968)*x[2]**o+(0.0645745629094)*x[2]  
         s[4,1,0]=(-0.097237311089)*x[0]**o+(0.0234720818008)*x[0]+(-0.476652797084)*x[1]**o+(-0.258741500235)*x[1]+(-0.644183703276)*x[2]**o+(-0.953514564143)*x[2]  
         s[4,1,1]=(-0.647701499983)*x[0]**o+(0.514337030449)*x[0]+(-0.779360494982)*x[1]**o+(-0.467345311588)*x[1]+(0.166149183082)*x[2]**o+(0.12480608055)*x[2]  
         s[5,0,0]=(-0.349937644226)*x[0]**o+(0.673132604681)*x[0]+(0.793703484606)*x[1]**o+(0.958967045691)*x[1]+(-0.361047380062)*x[2]**o+(0.758206969142)*x[2]  
         s[5,0,1]=(0.415890706186)*x[0]**o+(0.748811321123)*x[0]+(-0.629959299026)*x[1]**o+(0.706391001435)*x[1]+(-0.831407461643)*x[2]**o+(0.698632094335)*x[2]  
         s[5,1,0]=(-0.914414551259)*x[0]**o+(0.85324200236)*x[0]+(0.273543170188)*x[1]**o+(0.311955664492)*x[1]+(0.726975838083)*x[2]**o+(0.671917428159)*x[2]  
         s[5,1,1]=(0.450170734221)*x[0]**o+(-0.928357299044)*x[0]+(-0.645229625203)*x[1]**o+(0.756723626659)*x[1]+(-0.85050032636)*x[2]**o+(0.70593481655)*x[2]  
         ref[0,0,0]=(1.87300044017)/(o+1.)+(0.364967265606)  
         ref[0,0,1]=(-0.651920949601)/(o+1.)+(0.520850582493)  
         ref[0,1,0]=(1.52617306303)/(o+1.)+(-0.335759092896)  
         ref[0,1,1]=(-0.594015018979)/(o+1.)+(-0.210252000536)  
         ref[1,0,0]=(1.00820610183)/(o+1.)+(0.903281005533)  
         ref[1,0,1]=(2.07724052363)/(o+1.)+(0.473655620037)  
         ref[1,1,0]=(0.477461898885)/(o+1.)+(-0.165156253908)  
         ref[1,1,1]=(-1.80691005022)/(o+1.)+(-0.499789246576)  
         ref[2,0,0]=(-1.04784756399)/(o+1.)+(-0.167070646517)  
         ref[2,0,1]=(0.610682554229)/(o+1.)+(-0.0402063280924)  
         ref[2,1,0]=(-0.179521153288)/(o+1.)+(-0.405434756618)  
         ref[2,1,1]=(0.00650389949838)/(o+1.)+(-0.289281902729)  
         ref[3,0,0]=(-0.274222778102)/(o+1.)+(0.376006261382)  
         ref[3,0,1]=(-1.7854786075)/(o+1.)+(-0.329253110631)  
         ref[3,1,0]=(-2.23641378551)/(o+1.)+(0.381307375149)  
         ref[3,1,1]=(1.60015769716)/(o+1.)+(0.292444726853)  
         ref[4,0,0]=(1.58325925118)/(o+1.)+(0.459900240233)  
         ref[4,0,1]=(0.15858279574)/(o+1.)+(0.328490700148)  
         ref[4,1,0]=(-1.21807381145)/(o+1.)+(-0.594391991289)  
         ref[4,1,1]=(-1.26091281188)/(o+1.)+(0.085898899706)  
         ref[5,0,0]=(0.0827184603185)/(o+1.)+(1.19515330976)  
         ref[5,0,1]=(-1.04547605448)/(o+1.)+(1.07691720845)  
         ref[5,1,0]=(0.086104457012)/(o+1.)+(0.918557547505)  
         ref[5,1,1]=(-1.04555921734)/(o+1.)+(0.267150572083)  
       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_onReducedFunction_fromSymbol_Solution_rank4(self):  
       """  
       tests integral of rank 4 Symbol on the ReducedFunction  
   
       assumptions: Solution(self.domain) exists  
                    self.domain supports integral on ReducedFunction  
       """  
       o=self.order  
       dim=self.domain.getDim()  
       w_ref=ReducedFunction(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.501583472757)*x[0]**o+(0.174276674809)*x[0]+(0.474559132041)*x[1]**o+(0.944197178797)*x[1]  
         s[0,0,0,1]=(-0.850492891287)*x[0]**o+(-0.778714553562)*x[0]+(-0.864025500909)*x[1]**o+(0.905856111362)*x[1]  
         s[0,0,1,0]=(0.837983487193)*x[0]**o+(0.789080933347)*x[0]+(0.0618430819498)*x[1]**o+(0.791928371037)*x[1]  
         s[0,0,1,1]=(-0.678469228871)*x[0]**o+(0.702133334239)*x[0]+(-0.937443836374)*x[1]**o+(-0.130947584181)*x[1]  
         s[0,0,2,0]=(0.84013488851)*x[0]**o+(0.683811818455)*x[0]+(0.981450595677)*x[1]**o+(-0.813078675111)*x[1]  
         s[0,0,2,1]=(0.00148903051979)*x[0]**o+(-0.740776021571)*x[0]+(0.917048043634)*x[1]**o+(0.362159065586)*x[1]  
         s[0,1,0,0]=(0.285313019304)*x[0]**o+(0.0108652086531)*x[0]+(0.323356296135)*x[1]**o+(0.541189488955)*x[1]  
         s[0,1,0,1]=(0.545540725184)*x[0]**o+(-0.803623471109)*x[0]+(0.861711269888)*x[1]**o+(0.614843604935)*x[1]  
         s[0,1,1,0]=(0.44131453032)*x[0]**o+(-0.560146628455)*x[0]+(-0.390081444316)*x[1]**o+(-0.814215730743)*x[1]  
         s[0,1,1,1]=(-0.120309068092)*x[0]**o+(-0.992223638563)*x[0]+(-0.757944249628)*x[1]**o+(-0.906900780015)*x[1]  
         s[0,1,2,0]=(0.278503974882)*x[0]**o+(0.471665153392)*x[0]+(0.745287973293)*x[1]**o+(-0.572972893657)*x[1]  
         s[0,1,2,1]=(0.840866880159)*x[0]**o+(-0.969714982065)*x[0]+(-0.181097771175)*x[1]**o+(-0.645812375407)*x[1]  
         s[0,2,0,0]=(-0.791010044792)*x[0]**o+(-0.895489878363)*x[0]+(-0.32385199033)*x[1]**o+(0.892979821152)*x[1]  
         s[0,2,0,1]=(0.966330767971)*x[0]**o+(0.757433262697)*x[0]+(0.859264987879)*x[1]**o+(0.836273715628)*x[1]  
         s[0,2,1,0]=(0.764347587379)*x[0]**o+(0.498460349969)*x[0]+(0.896024738679)*x[1]**o+(0.341308865054)*x[1]  
         s[0,2,1,1]=(-0.276964987386)*x[0]**o+(-0.294300496732)*x[0]+(-0.755886597374)*x[1]**o+(0.0964446535133)*x[1]  
         s[0,2,2,0]=(0.933876243978)*x[0]**o+(0.694067023434)*x[0]+(-0.626635561624)*x[1]**o+(0.107630740485)*x[1]  
         s[0,2,2,1]=(0.905601520891)*x[0]**o+(0.246861090683)*x[0]+(0.364620749293)*x[1]**o+(-0.34329084894)*x[1]  
         s[0,3,0,0]=(-0.484050880674)*x[0]**o+(-0.344211446029)*x[0]+(-0.304888212647)*x[1]**o+(-0.918515747538)*x[1]  
         s[0,3,0,1]=(0.352307753352)*x[0]**o+(-0.497295643302)*x[0]+(-0.0859041918813)*x[1]**o+(-0.566829131134)*x[1]  
         s[0,3,1,0]=(0.458949103752)*x[0]**o+(-0.940473606591)*x[0]+(0.500249302466)*x[1]**o+(-0.192176323799)*x[1]  
         s[0,3,1,1]=(0.714312790267)*x[0]**o+(0.219740572431)*x[0]+(-0.621517496057)*x[1]**o+(-0.79963217554)*x[1]  
         s[0,3,2,0]=(-0.041379012308)*x[0]**o+(-0.674987043823)*x[0]+(-0.0165846458396)*x[1]**o+(0.643074958959)*x[1]  
         s[0,3,2,1]=(-0.258839387368)*x[0]**o+(0.63938656748)*x[0]+(0.0042420382287)*x[1]**o+(-0.711660235823)*x[1]  
         s[0,4,0,0]=(-0.905262277861)*x[0]**o+(0.995066153797)*x[0]+(0.895316712432)*x[1]**o+(0.794484306559)*x[1]  
         s[0,4,0,1]=(0.858709170162)*x[0]**o+(-0.896059882819)*x[0]+(-0.322447413352)*x[1]**o+(0.356724683447)*x[1]  
         s[0,4,1,0]=(-0.496930600469)*x[0]**o+(-0.715930772072)*x[0]+(0.514137034309)*x[1]**o+(0.738095094325)*x[1]  
         s[0,4,1,1]=(-0.475961686127)*x[0]**o+(0.406077221295)*x[0]+(-0.934472851356)*x[1]**o+(0.184564622216)*x[1]  
         s[0,4,2,0]=(0.50929205392)*x[0]**o+(-0.361652258356)*x[0]+(-0.828564581552)*x[1]**o+(0.864597967503)*x[1]  
         s[0,4,2,1]=(-0.670572914815)*x[0]**o+(-0.917836333665)*x[0]+(0.329473913157)*x[1]**o+(0.649536686851)*x[1]  
         s[1,0,0,0]=(0.507327212873)*x[0]**o+(-0.784119587219)*x[0]+(0.861200611677)*x[1]**o+(-0.537142113189)*x[1]  
         s[1,0,0,1]=(0.307279452436)*x[0]**o+(-0.331535898217)*x[0]+(0.864752548746)*x[1]**o+(-0.41254012361)*x[1]  
         s[1,0,1,0]=(0.723666220176)*x[0]**o+(-0.528755526062)*x[0]+(0.182515067109)*x[1]**o+(-0.33319767285)*x[1]  
         s[1,0,1,1]=(-0.652532069809)*x[0]**o+(-0.497647481159)*x[0]+(-0.726676961172)*x[1]**o+(0.901803102587)*x[1]  
         s[1,0,2,0]=(0.966840239828)*x[0]**o+(-0.559625286504)*x[0]+(0.856786274248)*x[1]**o+(-0.231280485522)*x[1]  
         s[1,0,2,1]=(0.898750450503)*x[0]**o+(-0.241387492118)*x[0]+(-0.242302411171)*x[1]**o+(-0.931590118111)*x[1]  
         s[1,1,0,0]=(0.298117967411)*x[0]**o+(-0.887837423565)*x[0]+(-0.804393274952)*x[1]**o+(-0.339940646012)*x[1]  
         s[1,1,0,1]=(-0.3303942703)*x[0]**o+(0.22588379719)*x[0]+(0.427447092807)*x[1]**o+(-0.940368147505)*x[1]  
         s[1,1,1,0]=(-0.227054817206)*x[0]**o+(0.76367061207)*x[0]+(-0.382609156261)*x[1]**o+(-0.869111355614)*x[1]  
         s[1,1,1,1]=(0.538281073824)*x[0]**o+(-0.454205347349)*x[0]+(-0.121007985262)*x[1]**o+(0.0290163849694)*x[1]  
         s[1,1,2,0]=(-0.888958335111)*x[0]**o+(0.779682676236)*x[0]+(-0.875785352701)*x[1]**o+(-0.891960671849)*x[1]  
         s[1,1,2,1]=(-0.173332519418)*x[0]**o+(-0.104421077299)*x[0]+(0.906729441747)*x[1]**o+(-0.616671337017)*x[1]  
         s[1,2,0,0]=(-0.305885548664)*x[0]**o+(-0.86724411868)*x[0]+(-0.787155086634)*x[1]**o+(-0.898599442906)*x[1]  
         s[1,2,0,1]=(0.848368426968)*x[0]**o+(0.0802812152769)*x[0]+(-0.378057863356)*x[1]**o+(-0.428488725116)*x[1]  
         s[1,2,1,0]=(-0.290675868214)*x[0]**o+(0.342045945019)*x[0]+(-0.421298816185)*x[1]**o+(-0.553807359319)*x[1]  
         s[1,2,1,1]=(0.0289012545961)*x[0]**o+(0.423276922447)*x[0]+(-0.911749389958)*x[1]**o+(-0.39409305776)*x[1]  
         s[1,2,2,0]=(0.904480195539)*x[0]**o+(-0.729896491926)*x[0]+(-0.21305322735)*x[1]**o+(-0.347444381896)*x[1]  
         s[1,2,2,1]=(0.34039428449)*x[0]**o+(-0.246758392869)*x[0]+(-0.159391459268)*x[1]**o+(-0.630134063159)*x[1]  
         s[1,3,0,0]=(0.202017077356)*x[0]**o+(-0.195969669611)*x[0]+(0.267580338059)*x[1]**o+(-0.274282886887)*x[1]  
         s[1,3,0,1]=(-0.183473257308)*x[0]**o+(-0.646999501714)*x[0]+(-0.746037354076)*x[1]**o+(-0.180977233442)*x[1]  
         s[1,3,1,0]=(0.895075853694)*x[0]**o+(-0.820090467371)*x[0]+(-0.040561177436)*x[1]**o+(0.749395910572)*x[1]  
         s[1,3,1,1]=(-0.232039710082)*x[0]**o+(-0.633561589743)*x[0]+(0.862514378491)*x[1]**o+(0.782438844898)*x[1]  
         s[1,3,2,0]=(-0.0228789327036)*x[0]**o+(0.604368007016)*x[0]+(0.413803296189)*x[1]**o+(0.651011054925)*x[1]  
         s[1,3,2,1]=(-0.682393812631)*x[0]**o+(-0.508380759547)*x[0]+(-0.958515947271)*x[1]**o+(-0.396382186265)*x[1]  
         s[1,4,0,0]=(0.772945258804)*x[0]**o+(0.981773233361)*x[0]+(-0.415876208997)*x[1]**o+(0.391268836611)*x[1]  
         s[1,4,0,1]=(-0.111414446087)*x[0]**o+(-0.381712931273)*x[0]+(0.389894843435)*x[1]**o+(-0.276144369314)*x[1]  
         s[1,4,1,0]=(0.544309017751)*x[0]**o+(0.920841251767)*x[0]+(-0.524322161349)*x[1]**o+(-0.745967887424)*x[1]  
         s[1,4,1,1]=(0.0993088568573)*x[0]**o+(0.172455640245)*x[0]+(-0.310227024922)*x[1]**o+(0.503773577532)*x[1]  
         s[1,4,2,0]=(-0.282979849337)*x[0]**o+(0.573540669768)*x[0]+(0.974343187515)*x[1]**o+(0.643215559873)*x[1]  
         s[1,4,2,1]=(0.616949303196)*x[0]**o+(-0.206142689323)*x[0]+(0.594875479161)*x[1]**o+(0.390460380914)*x[1]  
         s[2,0,0,0]=(-0.164379488326)*x[0]**o+(-0.613380471473)*x[0]+(-0.309735177264)*x[1]**o+(0.722815882927)*x[1]  
         s[2,0,0,1]=(-0.443733554915)*x[0]**o+(-0.226908044072)*x[0]+(0.22281947804)*x[1]**o+(0.321557448698)*x[1]  
         s[2,0,1,0]=(0.979229428359)*x[0]**o+(-0.410075647119)*x[0]+(-0.0869658073133)*x[1]**o+(0.472354461211)*x[1]  
         s[2,0,1,1]=(0.279554115394)*x[0]**o+(0.982131537982)*x[0]+(0.865627129266)*x[1]**o+(0.0595046994689)*x[1]  
         s[2,0,2,0]=(-0.928629057762)*x[0]**o+(-0.0888000293033)*x[0]+(0.925425619622)*x[1]**o+(0.286877459131)*x[1]  
         s[2,0,2,1]=(-0.128076644671)*x[0]**o+(0.769985562586)*x[0]+(-0.326281257692)*x[1]**o+(-0.904253231113)*x[1]  
         s[2,1,0,0]=(-7.49817068653e-05)*x[0]**o+(0.944960174862)*x[0]+(0.394130491438)*x[1]**o+(0.904576980195)*x[1]  
         s[2,1,0,1]=(0.51260445176)*x[0]**o+(0.871495843591)*x[0]+(-0.0117378185696)*x[1]**o+(-0.447028599408)*x[1]  
         s[2,1,1,0]=(0.385302842134)*x[0]**o+(0.68530194308)*x[0]+(0.908717705423)*x[1]**o+(0.0657269588494)*x[1]  
         s[2,1,1,1]=(-0.175101480962)*x[0]**o+(-0.0126863839895)*x[0]+(0.544228922923)*x[1]**o+(-0.856957800534)*x[1]  
         s[2,1,2,0]=(-0.74757544736)*x[0]**o+(-0.705933683532)*x[0]+(0.496113134499)*x[1]**o+(0.134139074285)*x[1]  
         s[2,1,2,1]=(0.661170765505)*x[0]**o+(-0.0954233403413)*x[0]+(0.796712312861)*x[1]**o+(0.941668952301)*x[1]  
         s[2,2,0,0]=(0.396185569444)*x[0]**o+(0.352712187886)*x[0]+(0.132847269784)*x[1]**o+(0.00561831278948)*x[1]