/[escript]/trunk/escript/py_src/test_util_spatial_functions.py
ViewVC logotype

Diff of /trunk/escript/py_src/test_util_spatial_functions.py

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

revision 437 by gross, Fri Jan 20 00:16:58 2006 UTC revision 438 by gross, Fri Jan 20 00:39:00 2006 UTC
# Line 24872  class Test_Util_SpatialFunctions(unittes Line 24872  class Test_Util_SpatialFunctions(unittes
24872        self.failUnless(isinstance(res,Symbol),"wrong type of result.")        self.failUnless(isinstance(res,Symbol),"wrong type of result.")
24873        self.failUnlessEqual(res.getShape(),(4, 5, 3, 2),"wrong shape of result.")        self.failUnlessEqual(res.getShape(),(4, 5, 3, 2),"wrong shape of result.")
24874        self.failUnless(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")        self.failUnless(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
24875       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
24876       def test_grad_onFunction_fromData_ContinuousFunction_rank0(self):
24877          """
24878          tests gradient for rank 0 Data on the Function
24879    
24880          assumptions: ContinuousFunction(self.domain) exists
24881                       self.domain supports gardient on Function
24882          """
24883          o=self.order
24884          dim=self.domain.getDim()
24885          w_ref=Function(self.domain)
24886          x_ref=w_ref.getX()
24887          w=ContinuousFunction(self.domain)
24888          x=w.getX()
24889          arg=Data(0,(),w)
24890          ref=Data(0,()+(dim,),w_ref)
24891          if dim==2:
24892            arg=(0.260967575068)*x[0]**o+(-0.456559015376)*x[0]+(0.663023090785)*x[1]**o+(-0.000383723402374)*x[1]
24893            ref[0]=o*(0.260967575068)*x_ref[0]**(o-1)+(-0.456559015376)
24894            ref[1]=o*(0.663023090785)*x_ref[1]**(o-1)+(-0.000383723402374)
24895          else:
24896            arg=(-0.679453642968)*x[0]**o+(-0.836558889087)*x[0]+(0.938200435255)*x[1]**o+(-0.368159735907)*x[1]+(-0.0546850112561)*x[2]**o+(0.931986983035)*x[2]
24897            ref[0]=o*(-0.679453642968)*x_ref[0]**(o-1)+(-0.836558889087)
24898            ref[1]=o*(0.938200435255)*x_ref[1]**(o-1)+(-0.368159735907)
24899            ref[2]=o*(-0.0546850112561)*x_ref[2]**(o-1)+(0.931986983035)
24900          res=grad(arg,where=w_ref)
24901          self.failUnless(isinstance(res,Data),"wrong type of result.")
24902          self.failUnlessEqual(res.getShape(),()+(dim,),"wrong shape of result.")
24903          self.failUnless(Lsup(res-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
24904       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
24905       def test_grad_onFunction_fromData_ContinuousFunction_rank1(self):
24906          """
24907          tests gradient for rank 1 Data on the Function
24908    
24909          assumptions: ContinuousFunction(self.domain) exists
24910                       self.domain supports gardient on Function
24911          """
24912          o=self.order
24913          dim=self.domain.getDim()
24914          w_ref=Function(self.domain)
24915          x_ref=w_ref.getX()
24916          w=ContinuousFunction(self.domain)
24917          x=w.getX()
24918          arg=Data(0,(2,),w)
24919          ref=Data(0,(2,)+(dim,),w_ref)
24920          if dim==2:
24921            arg[0]=(0.221278607378)*x[0]**o+(-0.25051444588)*x[0]+(0.752161895582)*x[1]**o+(0.662434618125)*x[1]
24922            arg[1]=(0.984829669888)*x[0]**o+(0.00500258390598)*x[0]+(-0.292523259369)*x[1]**o+(-0.238277884466)*x[1]
24923            ref[0,0]=o*(0.221278607378)*x_ref[0]**(o-1)+(-0.25051444588)
24924            ref[0,1]=o*(0.752161895582)*x_ref[1]**(o-1)+(0.662434618125)
24925            ref[1,0]=o*(0.984829669888)*x_ref[0]**(o-1)+(0.00500258390598)
24926            ref[1,1]=o*(-0.292523259369)*x_ref[1]**(o-1)+(-0.238277884466)
24927          else:
24928            arg[0]=(0.815886350601)*x[0]**o+(-0.41721938077)*x[0]+(0.478358181839)*x[1]**o+(-0.458860964588)*x[1]+(0.575706872631)*x[2]**o+(-0.965426161177)*x[2]
24929            arg[1]=(-0.159203003073)*x[0]**o+(-0.985356409774)*x[0]+(0.504125935966)*x[1]**o+(0.703505637664)*x[1]+(-0.480016288837)*x[2]**o+(0.544400209204)*x[2]
24930            ref[0,0]=o*(0.815886350601)*x_ref[0]**(o-1)+(-0.41721938077)
24931            ref[0,1]=o*(0.478358181839)*x_ref[1]**(o-1)+(-0.458860964588)
24932            ref[0,2]=o*(0.575706872631)*x_ref[2]**(o-1)+(-0.965426161177)
24933            ref[1,0]=o*(-0.159203003073)*x_ref[0]**(o-1)+(-0.985356409774)
24934            ref[1,1]=o*(0.504125935966)*x_ref[1]**(o-1)+(0.703505637664)
24935            ref[1,2]=o*(-0.480016288837)*x_ref[2]**(o-1)+(0.544400209204)
24936          res=grad(arg,where=w_ref)
24937          self.failUnless(isinstance(res,Data),"wrong type of result.")
24938          self.failUnlessEqual(res.getShape(),(2,)+(dim,),"wrong shape of result.")
24939          self.failUnless(Lsup(res-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
24940       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
24941       def test_grad_onFunction_fromData_ContinuousFunction_rank2(self):
24942          """
24943          tests gradient for rank 2 Data on the Function
24944    
24945          assumptions: ContinuousFunction(self.domain) exists
24946                       self.domain supports gardient on Function
24947          """
24948          o=self.order
24949          dim=self.domain.getDim()
24950          w_ref=Function(self.domain)
24951          x_ref=w_ref.getX()
24952          w=ContinuousFunction(self.domain)
24953          x=w.getX()
24954          arg=Data(0,(4, 5),w)
24955          ref=Data(0,(4, 5)+(dim,),w_ref)
24956          if dim==2:
24957            arg[0,0]=(-0.722004066753)*x[0]**o+(-0.911439550186)*x[0]+(0.0793361579222)*x[1]**o+(0.958526722957)*x[1]
24958            arg[0,1]=(-0.0237328054252)*x[0]**o+(0.832621528642)*x[0]+(0.168484408262)*x[1]**o+(-0.181293214021)*x[1]
24959            arg[0,2]=(0.0284992392733)*x[0]**o+(0.884411090784)*x[0]+(-0.615596355135)*x[1]**o+(-0.564819619851)*x[1]
24960            arg[0,3]=(0.37408647134)*x[0]**o+(-0.177901551674)*x[0]+(-0.466165048356)*x[1]**o+(-0.278511961588)*x[1]
24961            arg[0,4]=(-0.24695435531)*x[0]**o+(-0.624082916034)*x[0]+(-0.343849543401)*x[1]**o+(0.661610450445)*x[1]
24962            arg[1,0]=(-0.176271330569)*x[0]**o+(-0.661612282712)*x[0]+(-0.937163166613)*x[1]**o+(0.376473179587)*x[1]
24963            arg[1,1]=(0.964111839461)*x[0]**o+(0.576837069403)*x[0]+(-0.718562476684)*x[1]**o+(0.154883495525)*x[1]
24964            arg[1,2]=(-0.771556809734)*x[0]**o+(0.720054023732)*x[0]+(-0.390732462938)*x[1]**o+(-0.484359019049)*x[1]
24965            arg[1,3]=(0.565910084656)*x[0]**o+(0.69105192657)*x[0]+(-0.449408955892)*x[1]**o+(-0.789780518242)*x[1]
24966            arg[1,4]=(0.602485034177)*x[0]**o+(-0.345139282323)*x[0]+(-0.951334152921)*x[1]**o+(-0.478700081579)*x[1]
24967            arg[2,0]=(0.00114729937901)*x[0]**o+(0.295356090995)*x[0]+(0.982261544035)*x[1]**o+(0.357076141518)*x[1]
24968            arg[2,1]=(0.653029330145)*x[0]**o+(-0.0178804068723)*x[0]+(-0.0238303862422)*x[1]**o+(0.983033975535)*x[1]
24969            arg[2,2]=(0.680878878444)*x[0]**o+(-0.404330541218)*x[0]+(0.856544883866)*x[1]**o+(0.71899071821)*x[1]
24970            arg[2,3]=(0.0674687202072)*x[0]**o+(-0.748990717637)*x[0]+(0.185597242309)*x[1]**o+(0.623849127358)*x[1]
24971            arg[2,4]=(0.302869699915)*x[0]**o+(-0.852621552847)*x[0]+(0.115557112172)*x[1]**o+(-0.0827214208715)*x[1]
24972            arg[3,0]=(0.0929072570643)*x[0]**o+(0.533152382923)*x[0]+(-0.0913754984708)*x[1]**o+(-0.25865969337)*x[1]
24973            arg[3,1]=(-0.794799886368)*x[0]**o+(-0.865263962776)*x[0]+(0.441343356932)*x[1]**o+(-0.541975483415)*x[1]
24974            arg[3,2]=(0.261341948686)*x[0]**o+(0.378142729621)*x[0]+(0.0556054089673)*x[1]**o+(-0.854195169318)*x[1]
24975            arg[3,3]=(0.177222467454)*x[0]**o+(-0.400820197499)*x[0]+(0.88513075927)*x[1]**o+(0.0420082325044)*x[1]
24976            arg[3,4]=(0.307178422145)*x[0]**o+(-0.203765349758)*x[0]+(-0.546052990937)*x[1]**o+(-0.960312136292)*x[1]
24977            ref[0,0,0]=o*(-0.722004066753)*x_ref[0]**(o-1)+(-0.911439550186)
24978            ref[0,0,1]=o*(0.0793361579222)*x_ref[1]**(o-1)+(0.958526722957)
24979            ref[0,1,0]=o*(-0.0237328054252)*x_ref[0]**(o-1)+(0.832621528642)
24980            ref[0,1,1]=o*(0.168484408262)*x_ref[1]**(o-1)+(-0.181293214021)
24981            ref[0,2,0]=o*(0.0284992392733)*x_ref[0]**(o-1)+(0.884411090784)
24982            ref[0,2,1]=o*(-0.615596355135)*x_ref[1]**(o-1)+(-0.564819619851)
24983            ref[0,3,0]=o*(0.37408647134)*x_ref[0]**(o-1)+(-0.177901551674)
24984            ref[0,3,1]=o*(-0.466165048356)*x_ref[1]**(o-1)+(-0.278511961588)
24985            ref[0,4,0]=o*(-0.24695435531)*x_ref[0]**(o-1)+(-0.624082916034)
24986            ref[0,4,1]=o*(-0.343849543401)*x_ref[1]**(o-1)+(0.661610450445)
24987            ref[1,0,0]=o*(-0.176271330569)*x_ref[0]**(o-1)+(-0.661612282712)
24988            ref[1,0,1]=o*(-0.937163166613)*x_ref[1]**(o-1)+(0.376473179587)
24989            ref[1,1,0]=o*(0.964111839461)*x_ref[0]**(o-1)+(0.576837069403)
24990            ref[1,1,1]=o*(-0.718562476684)*x_ref[1]**(o-1)+(0.154883495525)
24991            ref[1,2,0]=o*(-0.771556809734)*x_ref[0]**(o-1)+(0.720054023732)
24992            ref[1,2,1]=o*(-0.390732462938)*x_ref[1]**(o-1)+(-0.484359019049)
24993            ref[1,3,0]=o*(0.565910084656)*x_ref[0]**(o-1)+(0.69105192657)
24994            ref[1,3,1]=o*(-0.449408955892)*x_ref[1]**(o-1)+(-0.789780518242)
24995            ref[1,4,0]=o*(0.602485034177)*x_ref[0]**(o-1)+(-0.345139282323)
24996            ref[1,4,1]=o*(-0.951334152921)*x_ref[1]**(o-1)+(-0.478700081579)
24997            ref[2,0,0]=o*(0.00114729937901)*x_ref[0]**(o-1)+(0.295356090995)
24998            ref[2,0,1]=o*(0.982261544035)*x_ref[1]**(o-1)+(0.357076141518)
24999            ref[2,1,0]=o*(0.653029330145)*x_ref[0]**(o-1)+(-0.0178804068723)
25000            ref[2,1,1]=o*(-0.0238303862422)*x_ref[1]**(o-1)+(0.983033975535)
25001            ref[2,2,0]=o*(0.680878878444)*x_ref[0]**(o-1)+(-0.404330541218)
25002            ref[2,2,1]=o*(0.856544883866)*x_ref[1]**(o-1)+(0.71899071821)
25003            ref[2,3,0]=o*(0.0674687202072)*x_ref[0]**(o-1)+(-0.748990717637)
25004            ref[2,3,1]=o*(0.185597242309)*x_ref[1]**(o-1)+(0.623849127358)
25005            ref[2,4,0]=o*(0.302869699915)*x_ref[0]**(o-1)+(-0.852621552847)
25006            ref[2,4,1]=o*(0.115557112172)*x_ref[1]**(o-1)+(-0.0827214208715)
25007            ref[3,0,0]=o*(0.0929072570643)*x_ref[0]**(o-1)+(0.533152382923)
25008            ref[3,0,1]=o*(-0.0913754984708)*x_ref[1]**(o-1)+(-0.25865969337)
25009            ref[3,1,0]=o*(-0.794799886368)*x_ref[0]**(o-1)+(-0.865263962776)
25010            ref[3,1,1]=o*(0.441343356932)*x_ref[1]**(o-1)+(-0.541975483415)
25011            ref[3,2,0]=o*(0.261341948686)*x_ref[0]**(o-1)+(0.378142729621)
25012            ref[3,2,1]=o*(0.0556054089673)*x_ref[1]**(o-1)+(-0.854195169318)
25013            ref[3,3,0]=o*(0.177222467454)*x_ref[0]**(o-1)+(-0.400820197499)
25014            ref[3,3,1]=o*(0.88513075927)*x_ref[1]**(o-1)+(0.0420082325044)
25015            ref[3,4,0]=o*(0.307178422145)*x_ref[0]**(o-1)+(-0.203765349758)
25016            ref[3,4,1]=o*(-0.546052990937)*x_ref[1]**(o-1)+(-0.960312136292)
25017          else:
25018            arg[0,0]=(0.767891828291)*x[0]**o+(-0.0840162180616)*x[0]+(-0.942354055114)*x[1]**o+(-0.458324281794)*x[1]+(-0.837589052489)*x[2]**o+(-0.49741065871)*x[2]
25019            arg[0,1]=(-0.770574732815)*x[0]**o+(0.949362675967)*x[0]+(0.334062389906)*x[1]**o+(0.589134582043)*x[1]+(0.611876443107)*x[2]**o+(-0.476746595186)*x[2]
25020            arg[0,2]=(-0.113076234857)*x[0]**o+(0.207116555982)*x[0]+(-0.434423505296)*x[1]**o+(0.582451788291)*x[1]+(-0.858451242875)*x[2]**o+(-0.229934112115)*x[2]
25021            arg[0,3]=(0.55494281628)*x[0]**o+(0.53116989281)*x[0]+(0.150549353151)*x[1]**o+(0.70886785918)*x[1]+(-0.148436740612)*x[2]**o+(0.755584812901)*x[2]
25022            arg[0,4]=(0.0855991607862)*x[0]**o+(0.509120320151)*x[0]+(-0.303374431746)*x[1]**o+(0.1813545791)*x[1]+(-0.0434667822132)*x[2]**o+(0.395447849194)*x[2]
25023            arg[1,0]=(-0.779720617706)*x[0]**o+(0.730668258583)*x[0]+(-0.0315884698035)*x[1]**o+(-0.0929845369431)*x[1]+(0.0853332239352)*x[2]**o+(0.303372304789)*x[2]
25024            arg[1,1]=(-0.687021672626)*x[0]**o+(-0.380139153436)*x[0]+(-0.624774641851)*x[1]**o+(0.331833510141)*x[1]+(-0.747115143343)*x[2]**o+(-0.901384102505)*x[2]
25025            arg[1,2]=(-0.0528543338921)*x[0]**o+(-0.683764012224)*x[0]+(0.498886779776)*x[1]**o+(-0.396777215862)*x[1]+(0.777051418657)*x[2]**o+(-0.786345142641)*x[2]
25026            arg[1,3]=(-0.823112017253)*x[0]**o+(0.278818264102)*x[0]+(-0.79372160065)*x[1]**o+(0.254044599609)*x[1]+(-0.372925254827)*x[2]**o+(-0.85054008508)*x[2]
25027            arg[1,4]=(-0.247156845703)*x[0]**o+(-0.944335229412)*x[0]+(-0.572532409179)*x[1]**o+(0.289091364421)*x[1]+(0.848874739954)*x[2]**o+(0.705098999827)*x[2]
25028            arg[2,0]=(0.0958493700534)*x[0]**o+(-0.334070579338)*x[0]+(-0.74117408785)*x[1]**o+(0.0609646344894)*x[1]+(-0.328888690751)*x[2]**o+(-0.0430772626841)*x[2]
25029            arg[2,1]=(0.846871401827)*x[0]**o+(0.379912211333)*x[0]+(-0.197881866966)*x[1]**o+(-0.551498190852)*x[1]+(0.416977164384)*x[2]**o+(0.09398324743)*x[2]
25030            arg[2,2]=(0.737261473925)*x[0]**o+(0.696028328637)*x[0]+(-0.735110324145)*x[1]**o+(0.949453963809)*x[1]+(-0.894722167055)*x[2]**o+(-0.16124057159)*x[2]
25031            arg[2,3]=(0.267556059297)*x[0]**o+(-0.633581895464)*x[0]+(-0.176232065927)*x[1]**o+(0.98533106984)*x[1]+(0.404671434387)*x[2]**o+(0.343560595562)*x[2]
25032            arg[2,4]=(0.502981833324)*x[0]**o+(0.716659442696)*x[0]+(-0.349106283426)*x[1]**o+(0.0726954534053)*x[1]+(0.468516366697)*x[2]**o+(0.328926164383)*x[2]
25033            arg[3,0]=(0.846509624251)*x[0]**o+(-0.34161660121)*x[0]+(0.25149102353)*x[1]**o+(-0.0130496471853)*x[1]+(-0.556826239055)*x[2]**o+(0.774658667066)*x[2]
25034            arg[3,1]=(-0.0777319662414)*x[0]**o+(0.992622365536)*x[0]+(0.720504365851)*x[1]**o+(0.0701085839568)*x[1]+(0.475573965193)*x[2]**o+(0.402599619829)*x[2]
25035            arg[3,2]=(-0.311228599853)*x[0]**o+(-0.732684576916)*x[0]+(0.308213192232)*x[1]**o+(-0.131325871896)*x[1]+(0.964631653839)*x[2]**o+(-0.600646614776)*x[2]
25036            arg[3,3]=(0.656589254036)*x[0]**o+(-0.275449493207)*x[0]+(-0.611075965309)*x[1]**o+(-0.460879628412)*x[1]+(-0.820861932527)*x[2]**o+(0.424066222721)*x[2]
25037            arg[3,4]=(0.303269333663)*x[0]**o+(-0.745774722275)*x[0]+(0.82933539351)*x[1]**o+(-0.295464064484)*x[1]+(0.818135297647)*x[2]**o+(-0.989600307642)*x[2]
25038            ref[0,0,0]=o*(0.767891828291)*x_ref[0]**(o-1)+(-0.0840162180616)
25039            ref[0,0,1]=o*(-0.942354055114)*x_ref[1]**(o-1)+(-0.458324281794)
25040            ref[0,0,2]=o*(-0.837589052489)*x_ref[2]**(o-1)+(-0.49741065871)
25041            ref[0,1,0]=o*(-0.770574732815)*x_ref[0]**(o-1)+(0.949362675967)
25042            ref[0,1,1]=o*(0.334062389906)*x_ref[1]**(o-1)+(0.589134582043)
25043            ref[0,1,2]=o*(0.611876443107)*x_ref[2]**(o-1)+(-0.476746595186)
25044            ref[0,2,0]=o*(-0.113076234857)*x_ref[0]**(o-1)+(0.207116555982)
25045            ref[0,2,1]=o*(-0.434423505296)*x_ref[1]**(o-1)+(0.582451788291)
25046            ref[0,2,2]=o*(-0.858451242875)*x_ref[2]**(o-1)+(-0.229934112115)
25047            ref[0,3,0]=o*(0.55494281628)*x_ref[0]**(o-1)+(0.53116989281)
25048            ref[0,3,1]=o*(0.150549353151)*x_ref[1]**(o-1)+(0.70886785918)
25049            ref[0,3,2]=o*(-0.148436740612)*x_ref[2]**(o-1)+(0.755584812901)
25050            ref[0,4,0]=o*(0.0855991607862)*x_ref[0]**(o-1)+(0.509120320151)
25051            ref[0,4,1]=o*(-0.303374431746)*x_ref[1]**(o-1)+(0.1813545791)
25052            ref[0,4,2]=o*(-0.0434667822132)*x_ref[2]**(o-1)+(0.395447849194)
25053            ref[1,0,0]=o*(-0.779720617706)*x_ref[0]**(o-1)+(0.730668258583)
25054            ref[1,0,1]=o*(-0.0315884698035)*x_ref[1]**(o-1)+(-0.0929845369431)
25055            ref[1,0,2]=o*(0.0853332239352)*x_ref[2]**(o-1)+(0.303372304789)
25056            ref[1,1,0]=o*(-0.687021672626)*x_ref[0]**(o-1)+(-0.380139153436)
25057            ref[1,1,1]=o*(-0.624774641851)*x_ref[1]**(o-1)+(0.331833510141)
25058            ref[1,1,2]=o*(-0.747115143343)*x_ref[2]**(o-1)+(-0.901384102505)
25059            ref[1,2,0]=o*(-0.0528543338921)*x_ref[0]**(o-1)+(-0.683764012224)
25060            ref[1,2,1]=o*(0.498886779776)*x_ref[1]**(o-1)+(-0.396777215862)
25061            ref[1,2,2]=o*(0.777051418657)*x_ref[2]**(o-1)+(-0.786345142641)
25062            ref[1,3,0]=o*(-0.823112017253)*x_ref[0]**(o-1)+(0.278818264102)
25063            ref[1,3,1]=o*(-0.79372160065)*x_ref[1]**(o-1)+(0.254044599609)
25064            ref[1,3,2]=o*(-0.372925254827)*x_ref[2]**(o-1)+(-0.85054008508)
25065            ref[1,4,0]=o*(-0.247156845703)*x_ref[0]**(o-1)+(-0.944335229412)
25066            ref[1,4,1]=o*(-0.572532409179)*x_ref[1]**(o-1)+(0.289091364421)
25067            ref[1,4,2]=o*(0.848874739954)*x_ref[2]**(o-1)+(0.705098999827)
25068            ref[2,0,0]=o*(0.0958493700534)*x_ref[0]**(o-1)+(-0.334070579338)
25069            ref[2,0,1]=o*(-0.74117408785)*x_ref[1]**(o-1)+(0.0609646344894)
25070            ref[2,0,2]=o*(-0.328888690751)*x_ref[2]**(o-1)+(-0.0430772626841)
25071            ref[2,1,0]=o*(0.846871401827)*x_ref[0]**(o-1)+(0.379912211333)
25072            ref[2,1,1]=o*(-0.197881866966)*x_ref[1]**(o-1)+(-0.551498190852)
25073            ref[2,1,2]=o*(0.416977164384)*x_ref[2]**(o-1)+(0.09398324743)
25074            ref[2,2,0]=o*(0.737261473925)*x_ref[0]**(o-1)+(0.696028328637)
25075            ref[2,2,1]=o*(-0.735110324145)*x_ref[1]**(o-1)+(0.949453963809)
25076            ref[2,2,2]=o*(-0.894722167055)*x_ref[2]**(o-1)+(-0.16124057159)
25077            ref[2,3,0]=o*(0.267556059297)*x_ref[0]**(o-1)+(-0.633581895464)
25078            ref[2,3,1]=o*(-0.176232065927)*x_ref[1]**(o-1)+(0.98533106984)
25079            ref[2,3,2]=o*(0.404671434387)*x_ref[2]**(o-1)+(0.343560595562)
25080            ref[2,4,0]=o*(0.502981833324)*x_ref[0]**(o-1)+(0.716659442696)
25081            ref[2,4,1]=o*(-0.349106283426)*x_ref[1]**(o-1)+(0.0726954534053)
25082            ref[2,4,2]=o*(0.468516366697)*x_ref[2]**(o-1)+(0.328926164383)
25083            ref[3,0,0]=o*(0.846509624251)*x_ref[0]**(o-1)+(-0.34161660121)
25084            ref[3,0,1]=o*(0.25149102353)*x_ref[1]**(o-1)+(-0.0130496471853)
25085            ref[3,0,2]=o*(-0.556826239055)*x_ref[2]**(o-1)+(0.774658667066)
25086            ref[3,1,0]=o*(-0.0777319662414)*x_ref[0]**(o-1)+(0.992622365536)
25087            ref[3,1,1]=o*(0.720504365851)*x_ref[1]**(o-1)+(0.0701085839568)
25088            ref[3,1,2]=o*(0.475573965193)*x_ref[2]**(o-1)+(0.402599619829)
25089            ref[3,2,0]=o*(-0.311228599853)*x_ref[0]**(o-1)+(-0.732684576916)
25090            ref[3,2,1]=o*(0.308213192232)*x_ref[1]**(o-1)+(-0.131325871896)
25091            ref[3,2,2]=o*(0.964631653839)*x_ref[2]**(o-1)+(-0.600646614776)
25092            ref[3,3,0]=o*(0.656589254036)*x_ref[0]**(o-1)+(-0.275449493207)
25093            ref[3,3,1]=o*(-0.611075965309)*x_ref[1]**(o-1)+(-0.460879628412)
25094            ref[3,3,2]=o*(-0.820861932527)*x_ref[2]**(o-1)+(0.424066222721)
25095            ref[3,4,0]=o*(0.303269333663)*x_ref[0]**(o-1)+(-0.745774722275)
25096            ref[3,4,1]=o*(0.82933539351)*x_ref[1]**(o-1)+(-0.295464064484)
25097            ref[3,4,2]=o*(0.818135297647)*x_ref[2]**(o-1)+(-0.989600307642)
25098          res=grad(arg,where=w_ref)
25099          self.failUnless(isinstance(res,Data),"wrong type of result.")
25100          self.failUnlessEqual(res.getShape(),(4, 5)+(dim,),"wrong shape of result.")
25101          self.failUnless(Lsup(res-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
25102       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
25103       def test_grad_onFunction_fromData_ContinuousFunction_rank3(self):
25104          """
25105          tests gradient for rank 3 Data on the Function
25106    
25107          assumptions: ContinuousFunction(self.domain) exists
25108                       self.domain supports gardient on Function
25109          """
25110          o=self.order
25111          dim=self.domain.getDim()
25112          w_ref=Function(self.domain)
25113          x_ref=w_ref.getX()
25114          w=ContinuousFunction(self.domain)
25115          x=w.getX()
25116          arg=Data(0,(6, 2, 2),w)
25117          ref=Data(0,(6, 2, 2)+(dim,),w_ref)
25118          if dim==2:
25119            arg[0,0,0]=(-0.572693829631)*x[0]**o+(0.583556749477)*x[0]+(0.22594627003)*x[1]**o+(0.0199162626119)*x[1]
25120            arg[0,0,1]=(0.196266833125)*x[0]**o+(0.544824498113)*x[0]+(0.150736772157)*x[1]**o+(0.362174902716)*x[1]
25121            arg[0,1,0]=(0.169481539273)*x[0]**o+(0.0355504217105)*x[0]+(-0.156746013218)*x[1]**o+(0.879476257954)*x[1]
25122            arg[0,1,1]=(0.824826637612)*x[0]**o+(-0.732645177858)*x[0]+(0.732873648361)*x[1]**o+(-0.40090515696)*x[1]
25123            arg[1,0,0]=(0.77348720999)*x[0]**o+(0.229475702878)*x[0]+(0.686324947328)*x[1]**o+(0.313197971717)*x[1]
25124            arg[1,0,1]=(-0.966626441904)*x[0]**o+(0.989778282376)*x[0]+(0.0447214020611)*x[1]**o+(0.439337525343)*x[1]
25125            arg[1,1,0]=(-0.774806567769)*x[0]**o+(0.634591112025)*x[0]+(0.797720133135)*x[1]**o+(0.579137230562)*x[1]
25126            arg[1,1,1]=(-0.118703583742)*x[0]**o+(0.482822282284)*x[0]+(0.141839968056)*x[1]**o+(0.916615496002)*x[1]
25127            arg[2,0,0]=(0.7419378407)*x[0]**o+(0.754978933397)*x[0]+(-0.839586800033)*x[1]**o+(-0.525830008753)*x[1]
25128            arg[2,0,1]=(-0.855040380309)*x[0]**o+(0.423661210447)*x[0]+(0.538277902172)*x[1]**o+(0.127617006384)*x[1]
25129            arg[2,1,0]=(0.107349578938)*x[0]**o+(0.697738123598)*x[0]+(0.862106802027)*x[1]**o+(-0.829827651082)*x[1]
25130            arg[2,1,1]=(-0.970208311818)*x[0]**o+(0.806698181512)*x[0]+(-0.374007524144)*x[1]**o+(-0.0600501198736)*x[1]
25131            arg[3,0,0]=(0.223312188411)*x[0]**o+(-0.130776319489)*x[0]+(0.616021313401)*x[1]**o+(-0.552848902138)*x[1]
25132            arg[3,0,1]=(-0.461837450406)*x[0]**o+(-0.895912538242)*x[0]+(0.477606324718)*x[1]**o+(0.220148409572)*x[1]
25133            arg[3,1,0]=(0.0783005249695)*x[0]**o+(-0.762350707337)*x[0]+(0.616470467018)*x[1]**o+(-0.154358859634)*x[1]
25134            arg[3,1,1]=(-0.604945998091)*x[0]**o+(0.23801834237)*x[0]+(0.500666300529)*x[1]**o+(0.709482270038)*x[1]
25135            arg[4,0,0]=(0.746627054515)*x[0]**o+(0.550282853502)*x[0]+(-0.223527434147)*x[1]**o+(-0.291559486198)*x[1]
25136            arg[4,0,1]=(0.512462457431)*x[0]**o+(0.0908594735188)*x[0]+(-0.888862229845)*x[1]**o+(-0.969985508695)*x[1]
25137            arg[4,1,0]=(0.606213701819)*x[0]**o+(0.147049558356)*x[0]+(-0.0365908849884)*x[1]**o+(-0.584510320466)*x[1]
25138            arg[4,1,1]=(-0.110180223906)*x[0]**o+(-0.83442554862)*x[0]+(-0.0516097061459)*x[1]**o+(-0.155615857347)*x[1]
25139            arg[5,0,0]=(0.603753207781)*x[0]**o+(0.302032475639)*x[0]+(-0.68719165993)*x[1]**o+(-0.375829665239)*x[1]
25140            arg[5,0,1]=(-0.599357977805)*x[0]**o+(0.562486062075)*x[0]+(0.102714751356)*x[1]**o+(-0.114179799185)*x[1]
25141            arg[5,1,0]=(0.874756501256)*x[0]**o+(0.550416007969)*x[0]+(0.669721605367)*x[1]**o+(0.24372600222)*x[1]
25142            arg[5,1,1]=(0.651356889701)*x[0]**o+(0.178366196323)*x[0]+(0.762268544189)*x[1]**o+(0.515014711815)*x[1]
25143            ref[0,0,0,0]=o*(-0.572693829631)*x_ref[0]**(o-1)+(0.583556749477)
25144            ref[0,0,0,1]=o*(0.22594627003)*x_ref[1]**(o-1)+(0.0199162626119)
25145            ref[0,0,1,0]=o*(0.196266833125)*x_ref[0]**(o-1)+(0.544824498113)
25146            ref[0,0,1,1]=o*(0.150736772157)*x_ref[1]**(o-1)+(0.362174902716)
25147            ref[0,1,0,0]=o*(0.169481539273)*x_ref[0]**(o-1)+(0.0355504217105)
25148            ref[0,1,0,1]=o*(-0.156746013218)*x_ref[1]**(o-1)+(0.879476257954)
25149            ref[0,1,1,0]=o*(0.824826637612)*x_ref[0]**(o-1)+(-0.732645177858)
25150            ref[0,1,1,1]=o*(0.732873648361)*x_ref[1]**(o-1)+(-0.40090515696)
25151            ref[1,0,0,0]=o*(0.77348720999)*x_ref[0]**(o-1)+(0.229475702878)
25152            ref[1,0,0,1]=o*(0.686324947328)*x_ref[1]**(o-1)+(0.313197971717)
25153            ref[1,0,1,0]=o*(-0.966626441904)*x_ref[0]**(o-1)+(0.989778282376)
25154            ref[1,0,1,1]=o*(0.0447214020611)*x_ref[1]**(o-1)+(0.439337525343)
25155            ref[1,1,0,0]=o*(-0.774806567769)*x_ref[0]**(o-1)+(0.634591112025)
25156            ref[1,1,0,1]=o*(0.797720133135)*x_ref[1]**(o-1)+(0.579137230562)
25157            ref[1,1,1,0]=o*(-0.118703583742)*x_ref[0]**(o-1)+(0.482822282284)
25158            ref[1,1,1,1]=o*(0.141839968056)*x_ref[1]**(o-1)+(0.916615496002)
25159            ref[2,0,0,0]=o*(0.7419378407)*x_ref[0]**(o-1)+(0.754978933397)
25160            ref[2,0,0,1]=o*(-0.839586800033)*x_ref[1]**(o-1)+(-0.525830008753)
25161            ref[2,0,1,0]=o*(-0.855040380309)*x_ref[0]**(o-1)+(0.423661210447)
25162            ref[2,0,1,1]=o*(0.538277902172)*x_ref[1]**(o-1)+(0.127617006384)
25163            ref[2,1,0,0]=o*(0.107349578938)*x_ref[0]**(o-1)+(0.697738123598)
25164            ref[2,1,0,1]=o*(0.862106802027)*x_ref[1]**(o-1)+(-0.829827651082)
25165            ref[2,1,1,0]=o*(-0.970208311818)*x_ref[0]**(o-1)+(0.806698181512)
25166            ref[2,1,1,1]=o*(-0.374007524144)*x_ref[1]**(o-1)+(-0.0600501198736)
25167            ref[3,0,0,0]=o*(0.223312188411)*x_ref[0]**(o-1)+(-0.130776319489)
25168            ref[3,0,0,1]=o*(0.616021313401)*x_ref[1]**(o-1)+(-0.552848902138)
25169            ref[3,0,1,0]=o*(-0.461837450406)*x_ref[0]**(o-1)+(-0.895912538242)
25170            ref[3,0,1,1]=o*(0.477606324718)*x_ref[1]**(o-1)+(0.220148409572)
25171            ref[3,1,0,0]=o*(0.0783005249695)*x_ref[0]**(o-1)+(-0.762350707337)
25172            ref[3,1,0,1]=o*(0.616470467018)*x_ref[1]**(o-1)+(-0.154358859634)
25173            ref[3,1,1,0]=o*(-0.604945998091)*x_ref[0]**(o-1)+(0.23801834237)
25174            ref[3,1,1,1]=o*(0.500666300529)*x_ref[1]**(o-1)+(0.709482270038)
25175            ref[4,0,0,0]=o*(0.746627054515)*x_ref[0]**(o-1)+(0.550282853502)
25176            ref[4,0,0,1]=o*(-0.223527434147)*x_ref[1]**(o-1)+(-0.291559486198)
25177            ref[4,0,1,0]=o*(0.512462457431)*x_ref[0]**(o-1)+(0.0908594735188)
25178            ref[4,0,1,1]=o*(-0.888862229845)*x_ref[1]**(o-1)+(-0.969985508695)
25179            ref[4,1,0,0]=o*(0.606213701819)*x_ref[0]**(o-1)+(0.147049558356)
25180            ref[4,1,0,1]=o*(-0.0365908849884)*x_ref[1]**(o-1)+(-0.584510320466)
25181            ref[4,1,1,0]=o*(-0.110180223906)*x_ref[0]**(o-1)+(-0.83442554862)
25182            ref[4,1,1,1]=o*(-0.0516097061459)*x_ref[1]**(o-1)+(-0.155615857347)
25183            ref[5,0,0,0]=o*(0.603753207781)*x_ref[0]**(o-1)+(0.302032475639)
25184            ref[5,0,0,1]=o*(-0.68719165993)*x_ref[1]**(o-1)+(-0.375829665239)
25185            ref[5,0,1,0]=o*(-0.599357977805)*x_ref[0]**(o-1)+(0.562486062075)
25186            ref[5,0,1,1]=o*(0.102714751356)*x_ref[1]**(o-1)+(-0.114179799185)
25187            ref[5,1,0,0]=o*(0.874756501256)*x_ref[0]**(o-1)+(0.550416007969)
25188            ref[5,1,0,1]=o*(0.669721605367)*x_ref[1]**(o-1)+(0.24372600222)
25189            ref[5,1,1,0]=o*(0.651356889701)*x_ref[0]**(o-1)+(0.178366196323)
25190            ref[5,1,1,1]=o*(0.762268544189)*x_ref[1]**(o-1)+(0.515014711815)
25191          else:
25192            arg[0,0,0]=(-0.634739027866)*x[0]**o+(-0.696370463772)*x[0]+(0.503815931458)*x[1]**o+(-0.457824888032)*x[1]+(0.655074800235)*x[2]**o+(-0.456111009206)*x[2]
25193            arg[0,0,1]=(-0.533710147141)*x[0]**o+(-0.0814085290298)*x[0]+(-0.0894565935545)*x[1]**o+(-0.3775655102)*x[1]+(-0.134051544262)*x[2]**o+(0.000713749886013)*x[2]
25194            arg[0,1,0]=(-0.64394535332)*x[0]**o+(0.430741797171)*x[0]+(0.985157009863)*x[1]**o+(-0.655331266432)*x[1]+(-0.436629135988)*x[2]**o+(-0.404480211702)*x[2]
25195            arg[0,1,1]=(-0.0858143551662)*x[0]**o+(0.0452769288327)*x[0]+(0.930452744895)*x[1]**o+(-0.877149214078)*x[1]+(0.675472222413)*x[2]**o+(0.917497654616)*x[2]
25196            arg[1,0,0]=(0.88346309442)*x[0]**o+(0.892116796676)*x[0]+(0.22765643526)*x[1]**o+(-0.934442833938)*x[1]+(0.0781755340006)*x[2]**o+(0.106009847768)*x[2]
25197            arg[1,0,1]=(0.20824563298)*x[0]**o+(0.613584602599)*x[0]+(-0.482386438919)*x[1]**o+(-0.155840561301)*x[1]+(0.817890842096)*x[2]**o+(0.798519843541)*x[2]
25198            arg[1,1,0]=(-0.915853569389)*x[0]**o+(0.573041720657)*x[0]+(0.236967108991)*x[1]**o+(0.421805849528)*x[1]+(-0.576407564364)*x[2]**o+(0.0709741076428)*x[2]
25199            arg[1,1,1]=(0.530417188741)*x[0]**o+(0.872073272277)*x[0]+(-0.21047376763)*x[1]**o+(0.88490064655)*x[1]+(0.523085602451)*x[2]**o+(-0.926133382905)*x[2]
25200            arg[2,0,0]=(-0.974186019136)*x[0]**o+(-0.332433414417)*x[0]+(-0.500938330608)*x[1]**o+(-0.113188574497)*x[1]+(0.228656301416)*x[2]**o+(-0.375756425313)*x[2]
25201            arg[2,0,1]=(0.246057421673)*x[0]**o+(0.231587929687)*x[0]+(0.398413883486)*x[1]**o+(-0.390998026525)*x[1]+(0.273401149062)*x[2]**o+(-0.296142647578)*x[2]
25202            arg[2,1,0]=(0.283717204372)*x[0]**o+(-0.545852417255)*x[0]+(-0.616345461169)*x[1]**o+(-0.705051061202)*x[1]+(0.664377876346)*x[2]**o+(0.338382503272)*x[2]
25203            arg[2,1,1]=(-0.433297970157)*x[0]**o+(-0.716600154712)*x[0]+(0.836194932687)*x[1]**o+(0.0903372116119)*x[1]+(0.113374499353)*x[2]**o+(-0.588810627425)*x[2]
25204            arg[3,0,0]=(0.404388255474)*x[0]**o+(0.521816615546)*x[0]+(-0.0976581170689)*x[1]**o+(-0.678563989037)*x[1]+(0.550953471125)*x[2]**o+(-0.668793844235)*x[2]
25205            arg[3,0,1]=(-0.66023047868)*x[0]**o+(0.822794930168)*x[0]+(-0.284215677966)*x[1]**o+(-0.779237447318)*x[1]+(-0.191727752719)*x[2]**o+(-0.748596484262)*x[2]
25206            arg[3,1,0]=(-0.0610807571905)*x[0]**o+(0.044623781518)*x[0]+(0.851226664753)*x[1]**o+(0.921090244094)*x[1]+(0.494414571241)*x[2]**o+(-0.473831333684)*x[2]
25207            arg[3,1,1]=(0.54651807228)*x[0]**o+(-0.580525990778)*x[0]+(-0.822936606301)*x[1]**o+(-0.0169562878937)*x[1]+(-0.732219249555)*x[2]**o+(-0.435156155008)*x[2]
25208            arg[4,0,0]=(0.830021032139)*x[0]**o+(0.976836986062)*x[0]+(0.534162405111)*x[1]**o+(-0.286292103539)*x[1]+(0.820276894761)*x[2]**o+(0.245897387706)*x[2]
25209            arg[4,0,1]=(0.362201493311)*x[0]**o+(-0.186328147108)*x[0]+(-0.91611458572)*x[1]**o+(-0.965258904175)*x[1]+(0.61850292372)*x[2]**o+(0.410229835478)*x[2]
25210            arg[4,1,0]=(0.0726313013515)*x[0]**o+(-0.974714544914)*x[0]+(0.46313543268)*x[1]**o+(0.100486704072)*x[1]+(-0.149124857233)*x[2]**o+(0.455733236337)*x[2]
25211            arg[4,1,1]=(-0.875220220201)*x[0]**o+(-0.416152301789)*x[0]+(-0.0145627466423)*x[1]**o+(0.267856009119)*x[1]+(-0.604260174049)*x[2]**o+(0.689107997051)*x[2]
25212            arg[5,0,0]=(0.196182127971)*x[0]**o+(0.337209503833)*x[0]+(0.595342239158)*x[1]**o+(0.507423300857)*x[1]+(0.934760469389)*x[2]**o+(-0.198686443328)*x[2]
25213            arg[5,0,1]=(0.77210909967)*x[0]**o+(-0.310778136545)*x[0]+(0.512326103142)*x[1]**o+(-0.501056206243)*x[1]+(0.98755961257)*x[2]**o+(-0.658414340038)*x[2]
25214            arg[5,1,0]=(0.375277702198)*x[0]**o+(-0.603850047717)*x[0]+(0.677227868069)*x[1]**o+(-0.784640615159)*x[1]+(0.177350721639)*x[2]**o+(0.241053657333)*x[2]
25215            arg[5,1,1]=(-0.368625522736)*x[0]**o+(0.196977476909)*x[0]+(-0.582451887206)*x[1]**o+(0.598240904158)*x[1]+(0.102240230796)*x[2]**o+(0.487322529158)*x[2]
25216            ref[0,0,0,0]=o*(-0.634739027866)*x_ref[0]**(o-1)+(-0.696370463772)
25217            ref[0,0,0,1]=o*(0.503815931458)*x_ref[1]**(o-1)+(-0.457824888032)
25218            ref[0,0,0,2]=o*(0.655074800235)*x_ref[2]**(o-1)+(-0.456111009206)
25219            ref[0,0,1,0]=o*(-0.533710147141)*x_ref[0]**(o-1)+(-0.0814085290298)
25220            ref[0,0,1,1]=o*(-0.0894565935545)*x_ref[1]**(o-1)+(-0.3775655102)
25221            ref[0,0,1,2]=o*(-0.134051544262)*x_ref[2]**(o-1)+(0.000713749886013)
25222            ref[0,1,0,0]=o*(-0.64394535332)*x_ref[0]**(o-1)+(0.430741797171)
25223            ref[0,1,0,1]=o*(0.985157009863)*x_ref[1]**(o-1)+(-0.655331266432)
25224            ref[0,1,0,2]=o*(-0.436629135988)*x_ref[2]**(o-1)+(-0.404480211702)
25225            ref[0,1,1,0]=o*(-0.0858143551662)*x_ref[0]**(o-1)+(0.0452769288327)
25226            ref[0,1,1,1]=o*(0.930452744895)*x_ref[1]**(o-1)+(-0.877149214078)
25227            ref[0,1,1,2]=o*(0.675472222413)*x_ref[2]**(o-1)+(0.917497654616)
25228            ref[1,0,0,0]=o*(0.88346309442)*x_ref[0]**(o-1)+(0.892116796676)
25229            ref[1,0,0,1]=o*(0.22765643526)*x_ref[1]**(o-1)+(-0.934442833938)
25230            ref[1,0,0,2]=o*(0.0781755340006)*x_ref[2]**(o-1)+(0.106009847768)
25231            ref[1,0,1,0]=o*(0.20824563298)*x_ref[0]**(o-1)+(0.613584602599)
25232            ref[1,0,1,1]=o*(-0.482386438919)*x_ref[1]**(o-1)+(-0.155840561301)
25233            ref[1,0,1,2]=o*(0.817890842096)*x_ref[2]**(o-1)+(0.798519843541)
25234            ref[1,1,0,0]=o*(-0.915853569389)*x_ref[0]**(o-1)+(0.573041720657)
25235            ref[1,1,0,1]=o*(0.236967108991)*x_ref[1]**(o-1)+(0.421805849528)
25236            ref[1,1,0,2]=o*(-0.576407564364)*x_ref[2]**(o-1)+(0.0709741076428)
25237            ref[1,1,1,0]=o*(0.530417188741)*x_ref[0]**(o-1)+(0.872073272277)
25238            ref[1,1,1,1]=o*(-0.21047376763)*x_ref[1]**(o-1)+(0.88490064655)
25239            ref[1,1,1,2]=o*(0.523085602451)*x_ref[2]**(o-1)+(-0.926133382905)
25240            ref[2,0,0,0]=o*(-0.974186019136)*x_ref[0]**(o-1)+(-0.332433414417)
25241            ref[2,0,0,1]=o*(-0.500938330608)*x_ref[1]**(o-1)+(-0.113188574497)
25242            ref[2,0,0,2]=o*(0.228656301416)*x_ref[2]**(o-1)+(-0.375756425313)
25243            ref[2,0,1,0]=o*(0.246057421673)*x_ref[0]**(o-1)+(0.231587929687)
25244            ref[2,0,1,1]=o*(0.398413883486)*x_ref[1]**(o-1)+(-0.390998026525)
25245            ref[2,0,1,2]=o*(0.273401149062)*x_ref[2]**(o-1)+(-0.296142647578)
25246            ref[2,1,0,0]=o*(0.283717204372)*x_ref[0]**(o-1)+(-0.545852417255)
25247            ref[2,1,0,1]=o*(-0.616345461169)*x_ref[1]**(o-1)+(-0.705051061202)
25248            ref[2,1,0,2]=o*(0.664377876346)*x_ref[2]**(o-1)+(0.338382503272)
25249            ref[2,1,1,0]=o*(-0.433297970157)*x_ref[0]**(o-1)+(-0.716600154712)
25250            ref[2,1,1,1]=o*(0.836194932687)*x_ref[1]**(o-1)+(0.0903372116119)
25251            ref[2,1,1,2]=o*(0.113374499353)*x_ref[2]**(o-1)+(-0.588810627425)
25252            ref[3,0,0,0]=o*(0.404388255474)*x_ref[0]**(o-1)+(0.521816615546)
25253            ref[3,0,0,1]=o*(-0.0976581170689)*x_ref[1]**(o-1)+(-0.678563989037)
25254            ref[3,0,0,2]=o*(0.550953471125)*x_ref[2]**(o-1)+(-0.668793844235)
25255            ref[3,0,1,0]=o*(-0.66023047868)*x_ref[0]**(o-1)+(0.822794930168)
25256            ref[3,0,1,1]=o*(-0.284215677966)*x_ref[1]**(o-1)+(-0.779237447318)
25257            ref[3,0,1,2]=o*(-0.191727752719)*x_ref[2]**(o-1)+(-0.748596484262)
25258            ref[3,1,0,0]=o*(-0.0610807571905)*x_ref[0]**(o-1)+(0.044623781518)
25259            ref[3,1,0,1]=o*(0.851226664753)*x_ref[1]**(o-1)+(0.921090244094)
25260            ref[3,1,0,2]=o*(0.494414571241)*x_ref[2]**(o-1)+(-0.473831333684)
25261            ref[3,1,1,0]=o*(0.54651807228)*x_ref[0]**(o-1)+(-0.580525990778)
25262            ref[3,1,1,1]=o*(-0.822936606301)*x_ref[1]**(o-1)+(-0.0169562878937)
25263            ref[3,1,1,2]=o*(-0.732219249555)*x_ref[2]**(o-1)+(-0.435156155008)
25264            ref[4,0,0,0]=o*(0.830021032139)*x_ref[0]**(o-1)+(0.976836986062)
25265            ref[4,0,0,1]=o*(0.534162405111)*x_ref[1]**(o-1)+(-0.286292103539)
25266            ref[4,0,0,2]=o*(0.820276894761)*x_ref[2]**(o-1)+(0.245897387706)
25267            ref[4,0,1,0]=o*(0.362201493311)*x_ref[0]**(o-1)+(-0.186328147108)
25268            ref[4,0,1,1]=o*(-0.91611458572)*x_ref[1]**(o-1)+(-0.965258904175)
25269            ref[4,0,1,2]=o*(0.61850292372)*x_ref[2]**(o-1)+(0.410229835478)
25270            ref[4,1,0,0]=o*(0.0726313013515)*x_ref[0]**(o-1)+(-0.974714544914)
25271            ref[4,1,0,1]=o*(0.46313543268)*x_ref[1]**(o-1)+(0.100486704072)
25272            ref[4,1,0,2]=o*(-0.149124857233)*x_ref[2]**(o-1)+(0.455733236337)
25273            ref[4,1,1,0]=o*(-0.875220220201)*x_ref[0]**(o-1)+(-0.416152301789)
25274            ref[4,1,1,1]=o*(-0.0145627466423)*x_ref[1]**(o-1)+(0.267856009119)
25275            ref[4,1,1,2]=o*(-0.604260174049)*x_ref[2]**(o-1)+(0.689107997051)
25276            ref[5,0,0,0]=o*(0.196182127971)*x_ref[0]**(o-1)+(0.337209503833)
25277            ref[5,0,0,1]=o*(0.595342239158)*x_ref[1]**(o-1)+(0.507423300857)
25278            ref[5,0,0,2]=o*(0.934760469389)*x_ref[2]**(o-1)+(-0.198686443328)
25279            ref[5,0,1,0]=o*(0.77210909967)*x_ref[0]**(o-1)+(-0.310778136545)
25280            ref[5,0,1,1]=o*(0.512326103142)*x_ref[1]**(o-1)+(-0.501056206243)
25281            ref[5,0,1,2]=o*(0.98755961257)*x_ref[2]**(o-1)+(-0.658414340038)
25282            ref[5,1,0,0]=o*(0.375277702198)*x_ref[0]**(o-1)+(-0.603850047717)
25283            ref[5,1,0,1]=o*(0.677227868069)*x_ref[1]**(o-1)+(-0.784640615159)
25284            ref[5,1,0,2]=o*(0.177350721639)*x_ref[2]**(o-1)+(0.241053657333)
25285            ref[5,1,1,0]=o*(-0.368625522736)*x_ref[0]**(o-1)+(0.196977476909)
25286            ref[5,1,1,1]=o*(-0.582451887206)*x_ref[1]**(o-1)+(0.598240904158)
25287            ref[5,1,1,2]=o*(0.102240230796)*x_ref[2]**(o-1)+(0.487322529158)
25288          res=grad(arg,where=w_ref)
25289          self.failUnless(isinstance(res,Data),"wrong type of result.")
25290          self.failUnlessEqual(res.getShape(),(6, 2, 2)+(dim,),"wrong shape of result.")
25291          self.failUnless(Lsup(res-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
25292       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
25293       def test_grad_onFunction_fromData_Solution_rank0(self):
25294          """
25295          tests gradient for rank 0 Data on the Function
25296    
25297          assumptions: Solution(self.domain) exists
25298                       self.domain supports gardient on Function
25299          """
25300          o=self.order
25301          dim=self.domain.getDim()
25302          w_ref=Function(self.domain)
25303          x_ref=w_ref.getX()
25304          w=Solution(self.domain)
25305          x=w.getX()
25306          arg=Data(0,(),w)
25307          ref=Data(0,()+(dim,),w_ref)
25308          if dim==2:
25309            arg=(0.851643614423)*x[0]**o+(-0.77638754265)*x[0]+(-0.216746360457)*x[1]**o+(-0.117807364973)*x[1]
25310            ref[0]=o*(0.851643614423)*x_ref[0]**(o-1)+(-0.77638754265)
25311            ref[1]=o*(-0.216746360457)*x_ref[1]**(o-1)+(-0.117807364973)
25312          else:
25313            arg=(0.846271449213)*x[0]**o+(0.895578416904)*x[0]+(-0.518297490388)*x[1]**o+(0.272255265951)*x[1]+(0.537822992528)*x[2]**o+(0.74226977002)*x[2]
25314            ref[0]=o*(0.846271449213)*x_ref[0]**(o-1)+(0.895578416904)
25315            ref[1]=o*(-0.518297490388)*x_ref[1]**(o-1)+(0.272255265951)
25316            ref[2]=o*(0.537822992528)*x_ref[2]**(o-1)+(0.74226977002)
25317          res=grad(arg,where=w_ref)
25318          self.failUnless(isinstance(res,Data),"wrong type of result.")
25319          self.failUnlessEqual(res.getShape(),()+(dim,),"wrong shape of result.")
25320          self.failUnless(Lsup(res-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
25321       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
25322       def test_grad_onFunction_fromData_Solution_rank1(self):
25323          """
25324          tests gradient for rank 1 Data on the Function
25325    
25326          assumptions: Solution(self.domain) exists
25327                       self.domain supports gardient on Function
25328          """
25329          o=self.order
25330          dim=self.domain.getDim()
25331          w_ref=Function(self.domain)
25332          x_ref=w_ref.getX()
25333          w=Solution(self.domain)
25334          x=w.getX()
25335          arg=Data(0,(2,),w)
25336          ref=Data(0,(2,)+(dim,),w_ref)
25337          if dim==2:
25338            arg[0]=(0.365601318395)*x[0]**o+(0.295624555802)*x[0]+(0.540618182217)*x[1]**o+(0.0458416078386)*x[1]
25339            arg[1]=(0.332276039998)*x[0]**o+(0.422606936253)*x[0]+(-0.221603594854)*x[1]**o+(0.879863420258)*x[1]
25340            ref[0,0]=o*(0.365601318395)*x_ref[0]**(o-1)+(0.295624555802)
25341            ref[0,1]=o*(0.540618182217)*x_ref[1]**(o-1)+(0.0458416078386)
25342            ref[1,0]=o*(0.332276039998)*x_ref[0]**(o-1)+(0.422606936253)
25343            ref[1,1]=o*(-0.221603594854)*x_ref[1]**(o-1)+(0.879863420258)
25344          else:
25345            arg[0]=(-0.258072277129)*x[0]**o+(-0.833085462518)*x[0]+(-0.124240965858)*x[1]**o+(-0.121853073047)*x[1]+(-0.877974471569)*x[2]**o+(0.929660451331)*x[2]
25346            arg[1]=(0.306520203535)*x[0]**o+(0.635444320723)*x[0]+(-0.766579509915)*x[1]**o+(-0.381189007175)*x[1]+(-0.76608952351)*x[2]**o+(0.00718583364881)*x[2]
25347            ref[0,0]=o*(-0.258072277129)*x_ref[0]**(o-1)+(-0.833085462518)
25348            ref[0,1]=o*(-0.124240965858)*x_ref[1]**(o-1)+(-0.121853073047)
25349            ref[0,2]=o*(-0.877974471569)*x_ref[2]**(o-1)+(0.929660451331)
25350            ref[1,0]=o*(0.306520203535)*x_ref[0]**(o-1)+(0.635444320723)
25351            ref[1,1]=o*(-0.766579509915)*x_ref[1]**(o-1)+(-0.381189007175)
25352            ref[1,2]=o*(-0.76608952351)*x_ref[2]**(o-1)+(0.00718583364881)
25353          res=grad(arg,where=w_ref)
25354          self.failUnless(isinstance(res,Data),"wrong type of result.")
25355          self.failUnlessEqual(res.getShape(),(2,)+(dim,),"wrong shape of result.")
25356          self.failUnless(Lsup(res-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
25357       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
25358       def test_grad_onFunction_fromData_Solution_rank2(self):
25359          """
25360          tests gradient for rank 2 Data on the Function
25361    
25362          assumptions: Solution(self.domain) exists
25363                       self.domain supports gardient on Function
25364          """
25365          o=self.order
25366          dim=self.domain.getDim()
25367          w_ref=Function(self.domain)
25368          x_ref=w_ref.getX()
25369          w=Solution(self.domain)
25370          x=w.getX()
25371          arg=Data(0,(4, 5),w)
25372          ref=Data(0,(4, 5)+(dim,),w_ref)
25373          if dim==2:
25374            arg[0,0]=(0.403088506806)*x[0]**o+(-0.436942773988)*x[0]+(-0.0594011537346)*x[1]**o+(0.855063195595)*x[1]
25375            arg[0,1]=(-0.516992303892)*x[0]**o+(-0.132586737299)*x[0]+(-0.854639239618)*x[1]**o+(0.241200454455)*x[1]
25376            arg[0,2]=(-0.373941155498)*x[0]**o+(0.933328225549)*x[0]+(-0.986870460316)*x[1]**o+(-0.051265908773)*x[1]
25377            arg[0,3]=(-0.175701653328)*x[0]**o+(-0.726542005356)*x[0]+(-0.553505635409)*x[1]**o+(-0.199806969718)*x[1]
25378            arg[0,4]=(-0.750832127973)*x[0]**o+(0.404511387161)*x[0]+(0.874423404897)*x[1]**o+(0.35360129734)*x[1]
25379            arg[1,0]=(-0.000191271001285)*x[0]**o+(-0.319365399066)*x[0]+(0.398444976089)*x[1]**o+(-0.966391658006)*x[1]
25380            arg[1,1]=(-0.58562890965)*x[0]**o+(-0.623992315262)*x[0]+(-0.913704774126)*x[1]**o+(0.910305409081)*x[1]
25381            arg[1,2]=(-0.480491011401)*x[0]**o+(-0.387015926056)*x[0]+(0.845826744282)*x[1]**o+(0.380626980034)*x[1]
25382            arg[1,3]=(-0.284167706438)*x[0]**o+(0.730574128045)*x[0]+(0.823389953051)*x[1]**o+(0.59483032515)*x[1]
25383            arg[1,4]=(-0.545147810354)*x[0]**o+(-0.632923743497)*x[0]+(0.619596244096)*x[1]**o+(-0.816596365827)*x[1]
25384            arg[2,0]=(0.161289895106)*x[0]**o+(0.435472177094)*x[0]+(0.125591455076)*x[1]**o+(0.0207320895937)*x[1]
25385            arg[2,1]=(0.639457164801)*x[0]**o+(0.2631408826)*x[0]+(0.00255095677899)*x[1]**o+(0.732164720004)*x[1]
25386            arg[2,2]=(-0.152014092979)*x[0]**o+(0.347024615036)*x[0]+(0.94212294017)*x[1]**o+(0.173939724203)*x[1]
25387            arg[2,3]=(-0.0324872553975)*x[0]**o+(-0.969492827039)*x[0]+(-0.830876162378)*x[1]**o+(0.601308513636)*x[1]
25388            arg[2,4]=(0.932999309515)*x[0]**o+(0.0320937041249)*x[0]+(-0.354492894455)*x[1]**o+(-0.752837146132)*x[1]
25389            arg[3,0]=(0.995147840382)*x[0]**o+(-0.276974278934)*x[0]+(0.905272259272)*x[1]**o+(-0.433178159448)*x[1]
25390            arg[3,1]=(-0.291708633096)*x[0]**o+(-0.542000555721)*x[0]+(0.372404748364)*x[1]**o+(0.23140215774)*x[1]
25391            arg[3,2]=(0.88604771071)*x[0]**o+(-0.753078356803)*x[0]+(-0.265302521749)*x[1]**o+(-0.948898850214)*x[1]
25392            arg[3,3]=(-0.429496844082)*x[0]**o+(0.0731695917195)*x[0]+(0.291387878783)*x[1]**o+(-0.078863825039)*x[1]
25393            arg[3,4]=(-0.0067999635984)*x[0]**o+(0.488018496019)*x[0]+(-0.875646054486)*x[1]**o+(0.629803284064)*x[1]
25394            ref[0,0,0]=o*(0.403088506806)*x_ref[0]**(o-1)+(-0.436942773988)
25395            ref[0,0,1]=o*(-0.0594011537346)*x_ref[1]**(o-1)+(0.855063195595)
25396            ref[0,1,0]=o*(-0.516992303892)*x_ref[0]**(o-1)+(-0.132586737299)
25397            ref[0,1,1]=o*(-0.854639239618)*x_ref[1]**(o-1)+(0.241200454455)
25398            ref[0,2,0]=o*(-0.373941155498)*x_ref[0]**(o-1)+(0.933328225549)
25399            ref[0,2,1]=o*(-0.986870460316)*x_ref[1]**(o-1)+(-0.051265908773)
25400            ref[0,3,0]=o*(-0.175701653328)*x_ref[0]**(o-1)+(-0.726542005356)
25401            ref[0,3,1]=o*(-0.553505635409)*x_ref[1]**(o-1)+(-0.199806969718)
25402            ref[0,4,0]=o*(-0.750832127973)*x_ref[0]**(o-1)+(0.404511387161)
25403            ref[0,4,1]=o*(0.874423404897)*x_ref[1]**(o-1)+(0.35360129734)
25404            ref[1,0,0]=o*(-0.000191271001285)*x_ref[0]**(o-1)+(-0.319365399066)
25405            ref[1,0,1]=o*(0.398444976089)*x_ref[1]**(o-1)+(-0.966391658006)
25406            ref[1,1,0]=o*(-0.58562890965)*x_ref[0]**(o-1)+(-0.623992315262)
25407            ref[1,1,1]=o*(-0.913704774126)*x_ref[1]**(o-1)+(0.910305409081)
25408            ref[1,2,0]=o*(-0.480491011401)*x_ref[0]**(o-1)+(-0.387015926056)
25409            ref[1,2,1]=o*(0.845826744282)*x_ref[1]**(o-1)+(0.380626980034)
25410            ref[1,3,0]=o*(-0.284167706438)*x_ref[0]**(o-1)+(0.730574128045)
25411            ref[1,3,1]=o*(0.823389953051)*x_ref[1]**(o-1)+(0.59483032515)
25412            ref[1,4,0]=o*(-0.545147810354)*x_ref[0]**(o-1)+(-0.632923743497)
25413            ref[1,4,1]=o*(0.619596244096)*x_ref[1]**(o-1)+(-0.816596365827)
25414            ref[2,0,0]=o*(0.161289895106)*x_ref[0]**(o-1)+(0.435472177094)
25415            ref[2,0,1]=o*(0.125591455076)*x_ref[1]**(o-1)+(0.0207320895937)
25416            ref[2,1,0]=o*(0.639457164801)*x_ref[0]**(o-1)+(0.2631408826)
25417            ref[2,1,1]=o*(0.00255095677899)*x_ref[1]**(o-1)+(0.732164720004)
25418            ref[2,2,0]=o*(-0.152014092979)*x_ref[0]**(o-1)+(0.347024615036)
25419            ref[2,2,1]=o*(0.94212294017)*x_ref[1]**(o-1)+(0.173939724203)
25420            ref[2,3,0]=o*(-0.0324872553975)*x_ref[0]**(o-1)+(-0.969492827039)
25421            ref[2,3,1]=o*(-0.830876162378)*x_ref[1]**(o-1)+(0.601308513636)
25422            ref[2,4,0]=o*(0.932999309515)*x_ref[0]**(o-1)+(0.0320937041249)
25423            ref[2,4,1]=o*(-0.354492894455)*x_ref[1]**(o-1)+(-0.752837146132)
25424            ref[3,0,0]=o*(0.995147840382)*x_ref[0]**(o-1)+(-0.276974278934)
25425            ref[3,0,1]=o*(0.905272259272)*x_ref[1]**(o-1)+(-0.433178159448)
25426            ref[3,1,0]=o*(-0.291708633096)*x_ref[0]**(o-1)+(-0.542000555721)
25427            ref[3,1,1]=o*(0.372404748364)*x_ref[1]**(o-1)+(0.23140215774)
25428            ref[3,2,0]=o*(0.88604771071)*x_ref[0]**(o-1)+(-0.753078356803)
25429            ref[3,2,1]=o*(-0.265302521749)*x_ref[1]**(o-1)+(-0.948898850214)
25430            ref[3,3,0]=o*(-0.429496844082)*x_ref[0]**(o-1)+(0.0731695917195)
25431            ref[3,3,1]=o*(0.291387878783)*x_ref[1]**(o-1)+(-0.078863825039)
25432            ref[3,4,0]=o*(-0.0067999635984)*x_ref[0]**(o-1)+(0.488018496019)
25433            ref[3,4,1]=o*(-0.875646054486)*x_ref[1]**(o-1)+(0.629803284064)
25434          else:
25435            arg[0,0]=(-0.512668741406)*x[0]**o+(-0.73142104842)*x[0]+(0.489050993226)*x[1]**o+(0.771941571419)*x[1]+(-0.538092512577)*x[2]**o+(-0.457812389328)*x[2]
25436            arg[0,1]=(0.258566436386)*x[0]**o+(-0.572006860118)*x[0]+(-0.0370305840623)*x[1]**o+(0.328810934717)*x[1]+(-0.652873123265)*x[2]**o+(0.734929914374)*x[2]
25437            arg[0,2]=(-0.228462027625)*x[0]**o+(-0.873359484139)*x[0]+(0.902575701641)*x[1]**o+(0.428758160478)*x[1]+(-0.377042847702)*x[2]**o+(-0.161364604019)*x[2]
25438            arg[0,3]=(0.31338185054)*x[0]**o+(0.973849539932)*x[0]+(-0.403569231167)*x[1]**o+(-0.110026269257)*x[1]+(0.603101392345)*x[2]**o+(0.499232034173)*x[2]
25439            arg[0,4]=(0.468416317974)*x[0]**o+(-0.0154203909264)*x[0]+(0.409228888268)*x[1]**o+(0.358886480877)*x[1]+(-0.00677343401301)*x[2]**o+(-0.0567153195302)*x[2]
25440            arg[1,0]=(0.614929795628)*x[0]**o+(0.54911679279)*x[0]+(0.527138394555)*x[1]**o+(-0.84070465171)*x[1]+(0.421928294706)*x[2]**o+(-0.871734463848)*x[2]
25441            arg[1,1]=(-0.498770327357)*x[0]**o+(0.294610855431)*x[0]+(-0.815129074288)*x[1]**o+(0.395332176796)*x[1]+(-0.555947305527)*x[2]**o+(-0.623550814988)*x[2]
25442            arg[1,2]=(-0.369404109593)*x[0]**o+(-0.662927702362)*x[0]+(0.886789099892)*x[1]**o+(-0.815728539359)*x[1]+(-0.843861162574)*x[2]**o+(-0.510039607856)*x[2]
25443            arg[1,3]=(-0.747305678574)*x[0]**o+(0.350337618157)*x[0]+(0.313491051893)*x[1]**o+(-0.554840960712)*x[1]+(-0.259760094369)*x[2]**o+(0.904246223768)*x[2]
25444            arg[1,4]=(0.485859115418)*x[0]**o+(-0.751900240375)*x[0]+(-0.233384727142)*x[1]**o+(-0.466677891749)*x[1]+(-0.771311310708)*x[2]**o+(0.380515497846)*x[2]
25445            arg[2,0]=(0.628529887016)*x[0]**o+(0.778810609149)*x[0]+(-0.95647127374)*x[1]**o+(-0.887895309984)*x[1]+(-0.926017554164)*x[2]**o+(0.0922106889932)*x[2]
25446            arg[2,1]=(-0.981382750453)*x[0]**o+(0.858805367823)*x[0]+(-0.202352133378)*x[1]**o+(0.527229765084)*x[1]+(-0.0862956097426)*x[2]**o+(-0.76269735579)*x[2]
25447            arg[2,2]=(0.591276459941)*x[0]**o+(0.554086306469)*x[0]+(-0.175045397917)*x[1]**o+(0.319542375346)*x[1]+(0.328810955576)*x[2]**o+(-0.245381809232)*x[2]
25448            arg[2,3]=(-0.826436985287)*x[0]**o+(-0.931352535769)*x[0]+(-0.480801956568)*x[1]**o+(0.830773509938)*x[1]+(0.157556801982)*x[2]**o+(0.982505166946)*x[2]
25449            arg[2,4]=(-0.0992736644463)*x[0]**o+(-0.147525710611)*x[0]+(-0.723322157973)*x[1]**o+(0.0527438662093)*x[1]+(-0.338847227522)*x[2]**o+(-0.704585609897)*x[2]
25450            arg[3,0]=(-0.45250460769)*x[0]**o+(-0.323299292565)*x[0]+(-0.435540041421)*x[1]**o+(0.418330181239)*x[1]+(0.526739853977)*x[2]**o+(-0.00513414974056)*x[2]
25451            arg[3,1]=(0.289534600598)*x[0]**o+(0.467498987256)*x[0]+(0.27851903721)*x[1]**o+(0.908249187588)*x[1]+(-0.84695489717)*x[2]**o+(-0.799372710877)*x[2]
25452            arg[3,2]=(0.00338011092566)*x[0]**o+(0.819216072868)*x[0]+(0.115437140937)*x[1]**o+(0.0968835984948)*x[1]+(-0.633253222581)*x[2]**o+(-0.0224890801282)*x[2]
25453            arg[3,3]=(0.578331574145)*x[0]**o+(0.328247456626)*x[0]+(-0.725914955131)*x[1]**o+(-0.863562766028)*x[1]+(-0.283057959979)*x[2]**o+(-0.521563360583)*x[2]
25454            arg[3,4]=(0.345725352698)*x[0]**o+(0.614912618718)*x[0]+(-0.218084952915)*x[1]**o+(-0.629514485943)*x[1]+(-0.207605980168)*x[2]**o+(-0.0950042458608)*x[2]
25455            ref[0,0,0]=o*(-0.512668741406)*x_ref[0]**(o-1)+(-0.73142104842)
25456            ref[0,0,1]=o*(0.489050993226)*x_ref[1]**(o-1)+(0.771941571419)
25457            ref[0,0,2]=o*(-0.538092512577)*x_ref[2]**(o-1)+(-0.457812389328)
25458            ref[0,1,0]=o*(0.258566436386)*x_ref[0]**(o-1)+(-0.572006860118)
25459            ref[0,1,1]=o*(-0.0370305840623)*x_ref[1]**(o-1)+(0.328810934717)
25460            ref[0,1,2]=o*(-0.652873123265)*x_ref[2]**(o-1)+(0.734929914374)
25461            ref[0,2,0]=o*(-0.228462027625)*x_ref[0]**(o-1)+(-0.873359484139)
25462            ref[0,2,1]=o*(0.902575701641)*x_ref[1]**(o-1)+(0.428758160478)
25463            ref[0,2,2]=o*(-0.377042847702)*x_ref[2]**(o-1)+(-0.161364604019)
25464            ref[0,3,0]=o*(0.31338185054)*x_ref[0]**(o-1)+(0.973849539932)
25465            ref[0,3,1]=o*(-0.403569231167)*x_ref[1]**(o-1)+(-0.110026269257)
25466            ref[0,3,2]=o*(0.603101392345)*x_ref[2]**(o-1)+(0.499232034173)
25467            ref[0,4,0]=o*(0.468416317974)*x_ref[0]**(o-1)+(-0.0154203909264)
25468            ref[0,4,1]=o*(0.409228888268)*x_ref[1]**(o-1)+(0.358886480877)
25469            ref[0,4,2]=o*(-0.00677343401301)*x_ref[2]**(o-1)+(-0.0567153195302)
25470            ref[1,0,0]=o*(0.614929795628)*x_ref[0]**(o-1)+(0.54911679279)
25471            ref[1,0,1]=o*(0.527138394555)*x_ref[1]**(o-1)+(-0.84070465171)
25472            ref[1,0,2]=o*(0.421928294706)*x_ref[2]**(o-1)+(-0.871734463848)
25473            ref[1,1,0]=o*(-0.498770327357)*x_ref[0]**(o-1)+(0.294610855431)
25474            ref[1,1,1]=o*(-0.815129074288)*x_ref[1]**(o-1)+(0.395332176796)
25475            ref[1,1,2]=o*(-0.555947305527)*x_ref[2]**(o-1)+(-0.623550814988)
25476            ref[1,2,0]=o*(-0.369404109593)*x_ref[0]**(o-1)+(-0.662927702362)
25477            ref[1,2,1]=o*(0.886789099892)*x_ref[1]**(o-1)+(-0.815728539359)
25478            ref[1,2,2]=o*(-0.843861162574)*x_ref[2]**(o-1)+(-0.510039607856)
25479            ref[1,3,0]=o*(-0.747305678574)*x_ref[0]**(o-1)+(0.350337618157)
25480            ref[1,3,1]=o*(0.313491051893)*x_ref[1]**(o-1)+(-0.554840960712)
25481            ref[1,3,2]=o*(-0.259760094369)*x_ref[2]**(o-1)+(0.904246223768)
25482            ref[1,4,0]=o*(0.485859115418)*x_ref[0]**(o-1)+(-0.751900240375)
25483            ref[1,4,1]=o*(-0.233384727142)*x_ref[1]**(o-1)+(-0.466677891749)
25484            ref[1,4,2]=o*(-0.771311310708)*x_ref[2]**(o-1)+(0.380515497846)
25485            ref[2,0,0]=o*(0.628529887016)*x_ref[0]**(o-1)+(0.778810609149)
25486            ref[2,0,1]=o*(-0.95647127374)*x_ref[1]**(o-1)+(-0.887895309984)
25487            ref[2,0,2]=o*(-0.926017554164)*x_ref[2]**(o-1)+(0.0922106889932)
25488            ref[2,1,0]=o*(-0.981382750453)*x_ref[0]**(o-1)+(0.858805367823)
25489            ref[2,1,1]=o*(-0.202352133378)*x_ref[1]**(o-1)+(0.527229765084)
25490            ref[2,1,2]=o*(-0.0862956097426)*x_ref[2]**(o-1)+(-0.76269735579)
25491            ref[2,2,0]=o*(0.591276459941)*x_ref[0]**(o-1)+(0.554086306469)
25492            ref[2,2,1]=o*(-0.175045397917)*x_ref[1]**(o-1)+(0.319542375346)
25493            ref[2,2,2]=o*(0.328810955576)*x_ref[2]**(o-1)+(-0.245381809232)
25494            ref[2,3,0]=o*(-0.826436985287)*x_ref[0]**(o-1)+(-0.931352535769)
25495            ref[2,3,1]=o*(-0.480801956568)*x_ref[1]**(o-1)+(0.830773509938)
25496            ref[2,3,2]=o*(0.157556801982)*x_ref[2]**(o-1)+(0.982505166946)
25497            ref[2,4,0]=o*(-0.0992736644463)*x_ref[0]**(o-1)+(-0.147525710611)
25498            ref[2,4,1]=o*(-0.723322157973)*x_ref[1]**(o-1)+(0.0527438662093)
25499            ref[2,4,2]=o*(-0.338847227522)*x_ref[2]**(o-1)+(-0.704585609897)
25500            ref[3,0,0]=o*(-0.45250460769)*x_ref[0]**(o-1)+(-0.323299292565)
25501            ref[3,0,1]=o*(-0.435540041421)*x_ref[1]**(o-1)+(0.418330181239)
25502            ref[3,0,2]=o*(0.526739853977)*x_ref[2]**(o-1)+(-0.00513414974056)
25503            ref[3,1,0]=o*(0.289534600598)*x_ref[0]**(o-1)+(0.467498987256)
25504            ref[3,1,1]=o*(0.27851903721)*x_ref[1]**(o-1)+(0.908249187588)
25505            ref[3,1,2]=o*(-0.84695489717)*x_ref[2]**(o-1)+(-0.799372710877)
25506            ref[3,2,0]=o*(0.00338011092566)*x_ref[0]**(o-1)+(0.819216072868)
25507            ref[3,2,1]=o*(0.115437140937)*x_ref[1]**(o-1)+(0.0968835984948)
25508            ref[3,2,2]=o*(-0.633253222581)*x_ref[2]**(o-1)+(-0.0224890801282)
25509            ref[3,3,0]=o*(0.578331574145)*x_ref[0]**(o-1)+(0.328247456626)
25510            ref[3,3,1]=o*(-0.725914955131)*x_ref[1]**(o-1)+(-0.863562766028)
25511            ref[3,3,2]=o*(-0.283057959979)*x_ref[2]**(o-1)+(-0.521563360583)
25512            ref[3,4,0]=o*(0.345725352698)*x_ref[0]**(o-1)+(0.614912618718)
25513            ref[3,4,1]=o*(-0.218084952915)*x_ref[1]**(o-1)+(-0.629514485943)
25514            ref[3,4,2]=o*(-0.207605980168)*x_ref[2]**(o-1)+(-0.0950042458608)
25515          res=grad(arg,where=w_ref)
25516          self.failUnless(isinstance(res,Data),"wrong type of result.")
25517          self.failUnlessEqual(res.getShape(),(4, 5)+(dim,),"wrong shape of result.")
25518          self.failUnless(Lsup(res-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
25519       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
25520       def test_grad_onFunction_fromData_Solution_rank3(self):
25521          """
25522          tests gradient for rank 3 Data on the Function
25523    
25524          assumptions: Solution(self.domain) exists
25525                       self.domain supports gardient on Function
25526          """
25527          o=self.order
25528          dim=self.domain.getDim()
25529          w_ref=Function(self.domain)
25530          x_ref=w_ref.getX()
25531          w=Solution(self.domain)
25532          x=w.getX()
25533          arg=Data(0,(6, 2, 2),w)
25534          ref=Data(0,(6, 2, 2)+(dim,),w_ref)
25535          if dim==2:
25536            arg[0,0,0]=(-0.353390112117)*x[0]**o+(0.121267964347)*x[0]+(0.095925646757)*x[1]**o+(-0.00141503525661)*x[1]
25537            arg[0,0,1]=(0.610556742471)*x[0]**o+(0.542948343923)*x[0]+(0.124762431991)*x[1]**o+(0.00216142978003)*x[1]
25538            arg[0,1,0]=(0.261559018753)*x[0]**o+(-0.881689419767)*x[0]+(-0.009352418091)*x[1]**o+(0.333357441723)*x[1]
25539            arg[0,1,1]=(-0.25379927884)*x[0]**o+(-0.124076833523)*x[0]+(-0.167690772835)*x[1]**o+(0.89804632709)*x[1]
25540            arg[1,0,0]=(-0.39353207502)*x[0]**o+(0.838815579522)*x[0]+(0.829467918805)*x[1]**o+(0.614403367394)*x[1]
25541            arg[1,0,1]=(-0.698946975112)*x[0]**o+(-0.551313390457)*x[0]+(0.965127390549)*x[1]**o+(-0.819660095397)*x[1]
25542            arg[1,1,0]=(-0.656237793952)*x[0]**o+(0.727261124295)*x[0]+(0.602446266985)*x[1]**o+(-0.320796826351)*x[1]
25543            arg[1,1,1]=(0.111875111713)*x[0]**o+(0.000360626785094)*x[0]+(-0.802516890555)*x[1]**o+(0.420759758492)*x[1]
25544            arg[2,0,0]=(-0.421920068352)*x[0]**o+(-0.022970702876)*x[0]+(-0.0257219638216)*x[1]**o+(-0.36544576073)*x[1]
25545            arg[2,0,1]=(-0.459431228769)*x[0]**o+(0.150702477357)*x[0]+(-0.869898945031)*x[1]**o+(0.261651620176)*x[1]
25546            arg[2,1,0]=(-0.866165026127)*x[0]**o+(0.149307656472)*x[0]+(-0.270058622191)*x[1]**o+(0.0873163553474)*x[1]
25547            arg[2,1,1]=(-0.871128617394)*x[0]**o+(-0.774356000237)*x[0]+(0.337383167457)*x[1]**o+(-0.453335744484)*x[1]
25548            arg[3,0,0]=(0.404195477481)*x[0]**o+(-0.350041445198)*x[0]+(-0.583794909281)*x[1]**o+(-0.895439618872)*x[1]
25549            arg[3,0,1]=(0.693567867164)*x[0]**o+(0.989642722856)*x[0]+(0.814104467522)*x[1]**o+(-0.126302588221)*x[1]
25550            arg[3,1,0]=(0.935509747673)*x[0]**o+(0.0104612091188)*x[0]+(0.304974305936)*x[1]**o+(0.658660310426)*x[1]
25551            arg[3,1,1]=(0.677420202064)*x[0]**o+(-0.160834685914)*x[0]+(0.241578146196)*x[1]**o+(-0.182223867353)*x[1]
25552            arg[4,0,0]=(-0.908542015864)*x[0]**o+(0.125595344482)*x[0]+(-0.396864254557)*x[1]**o+(0.408182849245)*x[1]
25553            arg[4,0,1]=(0.436101221257)*x[0]**o+(0.946667075656)*x[0]+(-0.293523459017)*x[1]**o+(0.363130416513)*x[1]
25554            arg[4,1,0]=(0.583416010605)*x[0]**o+(0.531883961319)*x[0]+(-0.418905217485)*x[1]**o+(0.271442034667)*x[1]
25555            arg[4,1,1]=(-0.708766397827)*x[0]**o+(0.0266251980073)*x[0]+(-0.0929293524384)*x[1]**o+(-0.661095295605)*x[1]
25556            arg[5,0,0]=(0.693424423443)*x[0]**o+(-0.201539674621)*x[0]+(-0.221922493999)*x[1]**o+(-0.218359043699)*x[1]
25557            arg[5,0,1]=(-0.478707796293)*x[0]**o+(0.791533578559)*x[0]+(0.280213321002)*x[1]**o+(-0.60809908629)*x[1]
25558            arg[5,1,0]=(-0.517992572451)*x[0]**o+(0.591995363281)*x[0]+(0.480220427965)*x[1]**o+(0.134542063762)*x[1]
25559            arg[5,1,1]=(0.415861674391)*x[0]**o+(0.773614372731)*x[0]+(-0.984515861984)*x[1]**o+(0.971916685266)*x[1]
25560            ref[0,0,0,0]=o*(-0.353390112117)*x_ref[0]**(o-1)+(0.121267964347)
25561            ref[0,0,0,1]=o*(0.095925646757)*x_ref[1]**(o-1)+(-0.00141503525661)
25562            ref[0,0,1,0]=o*(0.610556742471)*x_ref[0]**(o-1)+(0.542948343923)
25563            ref[0,0,1,1]=o*(0.124762431991)*x_ref[1]**(o-1)+(0.00216142978003)
25564            ref[0,1,0,0]=o*(0.261559018753)*x_ref[0]**(o-1)+(-0.881689419767)
25565            ref[0,1,0,1]=o*(-0.009352418091)*x_ref[1]**(o-1)+(0.333357441723)
25566            ref[0,1,1,0]=o*(-0.25379927884)*x_ref[0]**(o-1)+(-0.124076833523)
25567            ref[0,1,1,1]=o*(-0.167690772835)*x_ref[1]**(o-1)+(0.89804632709)
25568            ref[1,0,0,0]=o*(-0.39353207502)*x_ref[0]**(o-1)+(0.838815579522)
25569            ref[1,0,0,1]=o*(0.829467918805)*x_ref[1]**(o-1)+(0.614403367394)
25570            ref[1,0,1,0]=o*(-0.698946975112)*x_ref[0]**(o-1)+(-0.551313390457)
25571            ref[1,0,1,1]=o*(0.965127390549)*x_ref[1]**(o-1)+(-0.819660095397)
25572            ref[1,1,0,0]=o*(-0.656237793952)*x_ref[0]**(o-1)+(0.727261124295)
25573            ref[1,1,0,1]=o*(0.602446266985)*x_ref[1]**(o-1)+(-0.320796826351)
25574            ref[1,1,1,0]=o*(0.111875111713)*x_ref[0]**(o-1)+(0.000360626785094)
25575            ref[1,1,1,1]=o*(-0.802516890555)*x_ref[1]**(o-1)+(0.420759758492)
25576            ref[2,0,0,0]=o*(-0.421920068352)*x_ref[0]**(o-1)+(-0.022970702876)
25577            ref[2,0,0,1]=o*(-0.0257219638216)*x_ref[1]**(o-1)+(-0.36544576073)
25578            ref[2,0,1,0]=o*(-0.459431228769)*x_ref[0]**(o-1)+(0.150702477357)
25579            ref[2,0,1,1]=o*(-0.869898945031)*x_ref[1]**(o-1)+(0.261651620176)
25580            ref[2,1,0,0]=o*(-0.866165026127)*x_ref[0]**(o-1)+(0.149307656472)
25581            ref[2,1,0,1]=o*(-0.270058622191)*x_ref[1]**(o-1)+(0.0873163553474)
25582            ref[2,1,1,0]=o*(-0.871128617394)*x_ref[0]**(o-1)+(-0.774356000237)
25583            ref[2,1,1,1]=o*(0.337383167457)*x_ref[1]**(o-1)+(-0.453335744484)
25584            ref[3,0,0,0]=o*(0.404195477481)*x_ref[0]**(o-1)+(-0.350041445198)
25585            ref[3,0,0,1]=o*(-0.583794909281)*x_ref[1]**(o-1)+(-0.895439618872)
25586            ref[3,0,1,0]=o*(0.693567867164)*x_ref[0]**(o-1)+(0.989642722856)
25587            ref[3,0,1,1]=o*(0.814104467522)*x_ref[1]**(o-1)+(-0.126302588221)
25588            ref[3,1,0,0]=o*(0.935509747673)*x_ref[0]**(o-1)+(0.0104612091188)
25589            ref[3,1,0,1]=o*(0.304974305936)*x_ref[1]**(o-1)+(0.658660310426)
25590            ref[3,1,1,0]=o*(0.677420202064)*x_ref[0]**(o-1)+(-0.160834685914)
25591            ref[3,1,1,1]=o*(0.241578146196)*x_ref[1]**(o-1)+(-0.182223867353)
25592            ref[4,0,0,0]=o*(-0.908542015864)*x_ref[0]**(o-1)+(0.125595344482)
25593            ref[4,0,0,1]=o*(-0.396864254557)*x_ref[1]**(o-1)+(0.408182849245)
25594            ref[4,0,1,0]=o*(0.436101221257)*x_ref[0]**(o-1)+(0.946667075656)
25595            ref[4,0,1,1]=o*(-0.293523459017)*x_ref[1]**(o-1)+(0.363130416513)
25596            ref[4,1,0,0]=o*(0.583416010605)*x_ref[0]**(o-1)+(0.531883961319)
25597            ref[4,1,0,1]=o*(-0.418905217485)*x_ref[1]**(o-1)+(0.271442034667)
25598            ref[4,1,1,0]=o*(-0.708766397827)*x_ref[0]**(o-1)+(0.0266251980073)
25599            ref[4,1,1,1]=o*(-0.0929293524384)*x_ref[1]**(o-1)+(-0.661095295605)
25600            ref[5,0,0,0]=o*(0.693424423443)*x_ref[0]**(o-1)+(-0.201539674621)
25601            ref[5,0,0,1]=o*(-0.221922493999)*x_ref[1]**(o-1)+(-0.218359043699)
25602            ref[5,0,1,0]=o*(-0.478707796293)*x_ref[0]**(o-1)+(0.791533578559)
25603            ref[5,0,1,1]=o*(0.280213321002)*x_ref[1]**(o-1)+(-0.60809908629)
25604            ref[5,1,0,0]=o*(-0.517992572451)*x_ref[0]**(o-1)+(0.591995363281)
25605            ref[5,1,0,1]=o*(0.480220427965)*x_ref[1]**(o-1)+(0.134542063762)
25606            ref[5,1,1,0]=o*(0.415861674391)*x_ref[0]**(o-1)+(0.773614372731)
25607            ref[5,1,1,1]=o*(-0.984515861984)*x_ref[1]**(o-1)+(0.971916685266)
25608          else:
25609            arg[0,0,0]=(0.157678109652)*x[0]**o+(-0.939095069874)*x[0]+(0.340072659801)*x[1]**o+(0.806723712633)*x[1]+(0.0175654201162)*x[2]**o+(-0.695887679405)*x[2]
25610            arg[0,0,1]=(0.148444957808)*x[0]**o+(0.769780554196)*x[0]+(-0.999778710821)*x[1]**o+(0.765998508134)*x[1]+(0.489498280892)*x[2]**o+(0.272011172233)*x[2]
25611            arg[0,1,0]=(-0.78853623669)*x[0]**o+(-0.889333747099)*x[0]+(0.897684283327)*x[1]**o+(0.878046029595)*x[1]+(-0.355566201991)*x[2]**o+(-0.656187599294)*x[2]
25612            arg[0,1,1]=(-0.903496685895)*x[0]**o+(0.335762730702)*x[0]+(0.264330545204)*x[1]**o+(-0.369300150725)*x[1]+(0.00819339769162)*x[2]**o+(0.0466274018566)*x[2]
25613            arg[1,0,0]=(0.490893502666)*x[0]**o+(0.853253169019)*x[0]+(-0.706120536551)*x[1]**o+(-0.810665092749)*x[1]+(0.877124690496)*x[2]**o+(-0.663316848595)*x[2]
25614            arg[1,0,1]=(-0.897301110118)*x[0]**o+(-0.571577796347)*x[0]+(-0.00912216314091)*x[1]**o+(0.479091266837)*x[1]+(-0.951994896347)*x[2]**o+(0.293801256264)*x[2]
25615            arg[1,1,0]=(-0.0843442242335)*x[0]**o+(0.436592099426)*x[0]+(-0.961835284742)*x[1]**o+(0.453758903497)*x[1]+(0.759916173417)*x[2]**o+(-0.356674191439)*x[2]
25616            arg[1,1,1]=(0.368337095889)*x[0]**o+(-0.180552461333)*x[0]+(-0.814727889141)*x[1]**o+(-0.226678543654)*x[1]+(0.629233877979)*x[2]**o+(0.934452743806)*x[2]
25617            arg[2,0,0]=(0.335801632975)*x[0]**o+(0.4853793666)*x[0]+(-0.603075878381)*x[1]**o+(-0.464873655094)*x[1]+(-0.304107114487)*x[2]**o+(0.768564020927)*x[2]
25618            arg[2,0,1]=(-0.843867260693)*x[0]**o+(-0.758493294188)*x[0]+(0.801820428023)*x[1]**o+(0.0909753752871)*x[1]+(-0.208134327922)*x[2]**o+(0.343325582627)*x[2]
25619            arg[2,1,0]=(-0.143364423799)*x[0]**o+(-0.191201452642)*x[0]+(0.356480498629)*x[1]**o+(0.0853546566948)*x[1]+(0.234781870759)*x[2]**o+(-0.702906217789)*x[2]
25620            arg[2,1,1]=(0.81324792898)*x[0]**o+(0.565754643122)*x[0]+(-0.0246314241495)*x[1]**o+(-0.83548496516)*x[1]+(0.730246143504)*x[2]**o+(-0.835539994852)*x[2]
25621            arg[3,0,0]=(0.877992836393)*x[0]**o+(-0.137135423487)*x[0]+(0.534511286076)*x[1]**o+(-0.0584370047297)*x[1]+(-0.0497236607574)*x[2]**o+(0.408414670632)*x[2]
25622            arg[3,0,1]=(-0.959771372305)*x[0]**o+(0.587216149992)*x[0]+(-0.873216249139)*x[1]**o+(0.0703350087653)*x[1]+(0.452900901257)*x[2]**o+(-0.180788315472)*x[2]
25623            arg[3,1,0]=(0.477701526969)*x[0]**o+(0.16165566827)*x[0]+(0.219901428845)*x[1]**o+(-0.0816687269195)*x[1]+(-0.379553348394)*x[2]**o+(-0.764672519612)*x[2]
25624            arg[3,1,1]=(0.274518799686)*x[0]**o+(0.945009722336)*x[0]+(-0.979787014238)*x[1]**o+(0.587704213162)*x[1]+(0.7959640984)*x[2]**o+(-0.0811112488533)*x[2]
25625            arg[4,0,0]=(-0.579121056378)*x[0]**o+(0.971799195206)*x[0]+(-0.646271217985)*x[1]**o+(0.369751123548)*x[1]+(0.792425864156)*x[2]**o+(-0.170799235786)*x[2]
25626            arg[4,0,1]=(0.0939380562355)*x[0]**o+(0.857041359029)*x[0]+(-0.379025882204)*x[1]**o+(-0.571968622949)*x[1]+(-0.156853183697)*x[2]**o+(0.643214485063)*x[2]
25627            arg[4,1,0]=(-0.715210364871)*x[0]**o+(0.150341666571)*x[0]+(0.325165277323)*x[1]**o+(-0.322744240034)*x[1]+(-0.622094139461)*x[2]**o+(-0.830479146327)*x[2]
25628            arg[4,1,1]=(-0.697109424406)*x[0]**o+(-0.730318259042)*x[0]+(-0.135119012822)*x[1]**o+(0.410502029229)*x[1]+(0.547987909743)*x[2]**o+(0.144877544254)*x[2]
25629            arg[5,0,0]=(0.787147597087)*x[0]**o+(-0.528180541295)*x[0]+(-0.251578089108)*x[1]**o+(-0.170766337864)*x[1]+(-0.123341129221)*x[2]**o+(-0.815622069347)*x[2]
25630            arg[5,0,1]=(0.193873484005)*x[0]**o+(0.270190252915)*x[0]+(0.807946985621)*x[1]**o+(0.184522999461)*x[1]+(0.97429597406)*x[2]**o+(0.532931028021)*x[2]
25631            arg[5,1,0]=(0.555644676015)*x[0]**o+(-0.225593442089)*x[0]+(0.877869009767)*x[1]**o+(-0.750894245506)*x[1]+(0.888501611997)*x[2]**o+(-0.84027021889)*x[2]
25632            arg[5,1,1]=(0.76909422867)*x[0]**o+(0.406697645173)*x[0]+(-0.233710263631)*x[1]**o+(-0.432942345121)*x[1]+(0.270484113666)*x[2]**o+(0.707302418115)*x[2]
25633            ref[0,0,0,0]=o*(0.157678109652)*x_ref[0]**(o-1)+(-0.939095069874)
25634            ref[0,0,0,1]=o*(0.340072659801)*x_ref[1]**(o-1)+(0.806723712633)
25635            ref[0,0,0,2]=o*(0.0175654201162)*x_ref[2]**(o-1)+(-0.695887679405)
25636            ref[0,0,1,0]=o*(0.148444957808)*x_ref[0]**(o-1)+(0.769780554196)
25637            ref[0,0,1,1]=o*(-0.999778710821)*x_ref[1]**(o-1)+(0.765998508134)
25638            ref[0,0,1,2]=o*(0.489498280892)*x_ref[2]**(o-1)+(0.272011172233)
25639            ref[0,1,0,0]=o*(-0.78853623669)*x_ref[0]**(o-1)+(-0.889333747099)
25640            ref[0,1,0,1]=o*(0.897684283327)*x_ref[1]**(o-1)+(0.878046029595)
25641            ref[0,1,0,2]=o*(-0.355566201991)*x_ref[2]**(o-1)+(-0.656187599294)
25642            ref[0,1,1,0]=o*(-0.903496685895)*x_ref[0]**(o-1)+(0.335762730702)
25643            ref[0,1,1,1]=o*(0.264330545204)*x_ref[1]**(o-1)+(-0.369300150725)
25644            ref[0,1,1,2]=o*(0.00819339769162)*x_ref[2]**(o-1)+(0.0466274018566)
25645            ref[1,0,0,0]=o*(0.490893502666)*x_ref[0]**(o-1)+(0.853253169019)
25646            ref[1,0,0,1]=o*(-0.706120536551)*x_ref[1]**(o-1)+(-0.810665092749)
25647            ref[1,0,0,2]=o*(0.877124690496)*x_ref[2]**(o-1)+(-0.663316848595)
25648            ref[1,0,1,0]=o*(-0.897301110118)*x_ref[0]**(o-1)+(-0.571577796347)
25649            ref[1,0,1,1]=o*(-0.00912216314091)*x_ref[1]**(o-1)+(0.479091266837)
25650            ref[1,0,1,2]=o*(-0.951994896347)*x_ref[2]**(o-1)+(0.293801256264)
25651            ref[1,1,0,0]=o*(-0.0843442242335)*x_ref[0]**(o-1)+(0.436592099426)
25652            ref[1,1,0,1]=o*(-0.961835284742)*x_ref[1]**(o-1)+(0.453758903497)
25653            ref[1,1,0,2]=o*(0.759916173417)*x_ref[2]**(o-1)+(-0.356674191439)
25654            ref[1,1,1,0]=o*(0.368337095889)*x_ref[0]**(o-1)+(-0.180552461333)
25655            ref[1,1,1,1]=o*(-0.814727889141)*x_ref[1]**(o-1)+(-0.226678543654)
25656            ref[1,1,1,2]=o*(0.629233877979)*x_ref[2]**(o-1)+(0.934452743806)
25657            ref[2,0,0,0]=o*(0.335801632975)*x_ref[0]**(o-1)+(0.4853793666)
25658            ref[2,0,0,1]=o*(-0.603075878381)*x_ref[1]**(o-1)+(-0.464873655094)
25659            ref[2,0,0,2]=o*(-0.304107114487)*x_ref[2]**(o-1)+(0.768564020927)
25660            ref[2,0,1,0]=o*(-0.843867260693)*x_ref[0]**(o-1)+(-0.758493294188)
25661            ref[2,0,1,1]=o*(0.801820428023)*x_ref[1]**(o-1)+(0.0909753752871)
25662            ref[2,0,1,2]=o*(-0.208134327922)*x_ref[2]**(o-1)+(0.343325582627)
25663            ref[2,1,0,0]=o*(-0.143364423799)*x_ref[0]**(o-1)+(-0.191201452642)
25664            ref[2,1,0,1]=o*(0.356480498629)*x_ref[1]**(o-1)+(0.0853546566948)
25665            ref[2,1,0,2]=o*(0.234781870759)*x_ref[2]**(o-1)+(-0.702906217789)
25666            ref[2,1,1,0]=o*(0.81324792898)*x_ref[0]**(o-1)+(0.565754643122)
25667            ref[2,1,1,1]=o*(-0.0246314241495)*x_ref[1]**(o-1)+(-0.83548496516)
25668            ref[2,1,1,2]=o*(0.730246143504)*x_ref[2]**(o-1)+(-0.835539994852)
25669            ref[3,0,0,0]=o*(0.877992836393)*x_ref[0]**(o-1)+(-0.137135423487)
25670            ref[3,0,0,1]=o*(0.534511286076)*x_ref[1]**(o-1)+(-0.0584370047297)
25671            ref[3,0,0,2]=o*(-0.0497236607574)*x_ref[2]**(o-1)+(0.408414670632)
25672            ref[3,0,1,0]=o*(-0.959771372305)*x_ref[0]**(o-1)+(0.587216149992)
25673            ref[3,0,1,1]=o*(-0.873216249139)*x_ref[1]**(o-1)+(0.0703350087653)
25674            ref[3,0,1,2]=o*(0.452900901257)*x_ref[2]**(o-1)+(-0.180788315472)
25675            ref[3,1,0,0]=o*(0.477701526969)*x_ref[0]**(o-1)+(0.16165566827)
25676            ref[3,1,0,1]=o*(0.219901428845)*x_ref[1]**(o-1)+(-0.0816687269195)
25677            ref[3,1,0,2]=o*(-0.379553348394)*x_ref[2]**(o-1)+(-0.764672519612)
25678            ref[3,1,1,0]=o*(0.274518799686)*x_ref[0]**(o-1)+(0.945009722336)
25679            ref[3,1,1,1]=o*(-0.979787014238)*x_ref[1]**(o-1)+(0.587704213162)
25680            ref[3,1,1,2]=o*(0.7959640984)*x_ref[2]**(o-1)+(-0.0811112488533)
25681            ref[4,0,0,0]=o*(-0.579121056378)*x_ref[0]**(o-1)+(0.971799195206)
25682            ref[4,0,0,1]=o*(-0.646271217985)*x_ref[1]**(o-1)+(0.369751123548)
25683            ref[4,0,0,2]=o*(0.792425864156)*x_ref[2]**(o-1)+(-0.170799235786)
25684            ref[4,0,1,0]=o*(0.0939380562355)*x_ref[0]**(o-1)+(0.857041359029)
25685            ref[4,0,1,1]=o*(-0.379025882204)*x_ref[1]**(o-1)+(-0.571968622949)
25686            ref[4,0,1,2]=o*(-0.156853183697)*x_ref[2]**(o-1)+(0.643214485063)
25687            ref[4,1,0,0]=o*(-0.715210364871)*x_ref[0]**(o-1)+(0.150341666571)
25688            ref[4,1,0,1]=o*(0.325165277323)*x_ref[1]**(o-1)+(-0.322744240034)
25689            ref[4,1,0,2]=o*(-0.622094139461)*x_ref[2]**(o-1)+(-0.830479146327)
25690            ref[4,1,1,0]=o*(-0.697109424406)*x_ref[0]**(o-1)+(-0.730318259042)
25691            ref[4,1,1,1]=o*(-0.135119012822)*x_ref[1]**(o-1)+(0.410502029229)
25692            ref[4,1,1,2]=o*(0.547987909743)*x_ref[2]**(o-1)+(0.144877544254)
25693            ref[5,0,0,0]=o*(0.787147597087)*x_ref[0]**(o-1)+(-0.528180541295)
25694            ref[5,0,0,1]=o*(-0.251578089108)*x_ref[1]**(o-1)+(-0.170766337864)
25695            ref[5,0,0,2]=o*(-0.123341129221)*x_ref[2]**(o-1)+(-0.815622069347)
25696            ref[5,0,1,0]=o*(0.193873484005)*x_ref[0]**(o-1)+(0.270190252915)
25697            ref[5,0,1,1]=o*(0.807946985621)*x_ref[1]**(o-1)+(0.184522999461)
25698            ref[5,0,1,2]=o*(0.97429597406)*x_ref[2]**(o-1)+(0.532931028021)
25699            ref[5,1,0,0]=o*(0.555644676015)*x_ref[0]**(o-1)+(-0.225593442089)
25700            ref[5,1,0,1]=o*(0.877869009767)*x_ref[1]**(o-1)+(-0.750894245506)
25701            ref[5,1,0,2]=o*(0.888501611997)*x_ref[2]**(o-1)+(-0.84027021889)
25702            ref[5,1,1,0]=o*(0.76909422867)*x_ref[0]**(o-1)+(0.406697645173)
25703            ref[5,1,1,1]=o*(-0.233710263631)*x_ref[1]**(o-1)+(-0.432942345121)
25704            ref[5,1,1,2]=o*(0.270484113666)*x_ref[2]**(o-1)+(0.707302418115)
25705          res=grad(arg,where=w_ref)
25706          self.failUnless(isinstance(res,Data),"wrong type of result.")
25707          self.failUnlessEqual(res.getShape(),(6, 2, 2)+(dim,),"wrong shape of result.")
25708          self.failUnless(Lsup(res-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
25709       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
25710       def test_grad_onFunction_fromData_ReducedSolution_rank0(self):
25711          """
25712          tests gradient for rank 0 Data on the Function
25713    
25714          assumptions: ReducedSolution(self.domain) exists
25715                       self.domain supports gardient on Function
25716          """
25717          o=1
25718          dim=self.domain.getDim()
25719          w_ref=Function(self.domain)
25720          x_ref=w_ref.getX()
25721          w=ReducedSolution(self.domain)
25722          x=w.getX()
25723          arg=Data(0,(),w)
25724          ref=Data(0,()+(dim,),w_ref)
25725          if dim==2:
25726            arg=(0.390595923727)*x[0]+(0.870359886354)*x[1]
25727            ref[0]=(0.390595923727)
25728            ref[1]=(0.870359886354)
25729          else:
25730            arg=(1.4237066625)*x[0]+(0.191112329766)*x[1]+(0.342817637558)*x[2]
25731            ref[0]=(1.4237066625)
25732            ref[1]=(0.191112329766)
25733            ref[2]=(0.342817637558)
25734          res=grad(arg,where=w_ref)
25735          self.failUnless(isinstance(res,Data),"wrong type of result.")
25736          self.failUnlessEqual(res.getShape(),()+(dim,),"wrong shape of result.")
25737          self.failUnless(Lsup(res-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
25738       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
25739       def test_grad_onFunction_fromData_ReducedSolution_rank1(self):
25740          """
25741          tests gradient for rank 1 Data on the Function
25742    
25743          assumptions: ReducedSolution(self.domain) exists
25744                       self.domain supports gardient on Function
25745          """
25746          o=1
25747          dim=self.domain.getDim()
25748          w_ref=Function(self.domain)
25749          x_ref=w_ref.getX()
25750          w=ReducedSolution(self.domain)
25751          x=w.getX()
25752          arg=Data(0,(2,),w)
25753          ref=Data(0,(2,)+(dim,),w_ref)
25754          if dim==2:
25755            arg[0]=(1.24969786007)*x[0]+(-0.503239623541)*x[1]
25756            arg[1]=(0.00152786815487)*x[0]+(0.486128960541)*x[1]
25757            ref[0,0]=(1.24969786007)
25758            ref[0,1]=(-0.503239623541)
25759            ref[1,0]=(0.00152786815487)
25760            ref[1,1]=(0.486128960541)
25761          else:
25762            arg[0]=(1.16486019581)*x[0]+(-0.244560585954)*x[1]+(1.11539615819)*x[2]
25763            arg[1]=(-0.831039160237)*x[0]+(0.822276239005)*x[1]+(0.421468778379)*x[2]
25764            ref[0,0]=(1.16486019581)
25765            ref[0,1]=(-0.244560585954)
25766            ref[0,2]=(1.11539615819)
25767            ref[1,0]=(-0.831039160237)
25768            ref[1,1]=(0.822276239005)
25769            ref[1,2]=(0.421468778379)
25770          res=grad(arg,where=w_ref)
25771          self.failUnless(isinstance(res,Data),"wrong type of result.")
25772          self.failUnlessEqual(res.getShape(),(2,)+(dim,),"wrong shape of result.")
25773          self.failUnless(Lsup(res-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
25774       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
25775       def test_grad_onFunction_fromData_ReducedSolution_rank2(self):
25776          """
25777          tests gradient for rank 2 Data on the Function
25778    
25779          assumptions: ReducedSolution(self.domain) exists
25780                       self.domain supports gardient on Function
25781          """
25782          o=1
25783          dim=self.domain.getDim()
25784          w_ref=Function(self.domain)
25785          x_ref=w_ref.getX()
25786          w=ReducedSolution(self.domain)
25787          x=w.getX()
25788          arg=Data(0,(4, 5),w)
25789          ref=Data(0,(4, 5)+(dim,),w_ref)
25790          if dim==2:
25791            arg[0,0]=(0.189442592013)*x[0]+(-1.60645028651)*x[1]
25792            arg[0,1]=(0.0100077079631)*x[0]+(-1.17387880858)*x[1]
25793            arg[0,2]=(0.0275548120659)*x[0]+(0.653617350295)*x[1]
25794            arg[0,3]=(0.05829133816)*x[0]+(-0.373563514457)*x[1]
25795            arg[0,4]=(0.779779569696)*x[0]+(-1.26967503826)*x[1]
25796            arg[1,0]=(-1.76287668803)*x[0]+(1.09016960913)*x[1]
25797            arg[1,1]=(-0.37217349459)*x[0]+(-0.241280622851)*x[1]
25798            arg[1,2]=(-0.590745342582)*x[0]+(0.258098534691)*x[1]
25799            arg[1,3]=(0.481754329217)*x[0]+(1.9686931184)*x[1]
25800            arg[1,4]=(1.62318899699)*x[0]+(-0.634644801985)*x[1]
25801            arg[2,0]=(-0.0113400901549)*x[0]+(0.448967376428)*x[1]
25802            arg[2,1]=(0.0239277722956)*x[0]+(0.248367174694)*x[1]
25803            arg[2,2]=(1.23484142782)*x[0]+(-0.408724357055)*x[1]
25804            arg[2,3]=(0.115412214024)*x[0]+(0.721349239053)*x[1]
25805            arg[2,4]=(-1.58878458768)*x[0]+(-0.297328738789)*x[1]
25806            arg[3,0]=(-0.536715000453)*x[0]+(-0.0610624173989)*x[1]
25807            arg[3,1]=(-0.365981795847)*x[0]+(0.710935216782)*x[1]
25808            arg[3,2]=(1.1343806743)*x[0]+(-1.12662285264)*x[1]
25809            arg[3,3]=(-1.56463302165)*x[0]+(0.701651939794)*x[1]
25810            arg[3,4]=(1.38464443939)*x[0]+(-0.389328824078)*x[1]
25811            ref[0,0,0]=(0.189442592013)
25812            ref[0,0,1]=(-1.60645028651)
25813            ref[0,1,0]=(0.0100077079631)
25814            ref[0,1,1]=(-1.17387880858)
25815            ref[0,2,0]=(0.0275548120659)
25816            ref[0,2,1]=(0.653617350295)
25817            ref[0,3,0]=(0.05829133816)
25818            ref[0,3,1]=(-0.373563514457)
25819            ref[0,4,0]=(0.779779569696)
25820            ref[0,4,1]=(-1.26967503826)
25821            ref[1,0,0]=(-1.76287668803)
25822            ref[1,0,1]=(1.09016960913)
25823            ref[1,1,0]=(-0.37217349459)
25824            ref[1,1,1]=(-0.241280622851)
25825            ref[1,2,0]=(-0.590745342582)
25826            ref[1,2,1]=(0.258098534691)
25827            ref[1,3,0]=(0.481754329217)
25828            ref[1,3,1]=(1.9686931184)
25829            ref[1,4,0]=(1.62318899699)
25830            ref[1,4,1]=(-0.634644801985)
25831            ref[2,0,0]=(-0.0113400901549)
25832            ref[2,0,1]=(0.448967376428)
25833            ref[2,1,0]=(0.0239277722956)
25834            ref[2,1,1]=(0.248367174694)
25835            ref[2,2,0]=(1.23484142782)
25836            ref[2,2,1]=(-0.408724357055)
25837            ref[2,3,0]=(0.115412214024)
25838            ref[2,3,1]=(0.721349239053)
25839            ref[2,4,0]=(-1.58878458768)
25840            ref[2,4,1]=(-0.297328738789)
25841            ref[3,0,0]=(-0.536715000453)
25842            ref[3,0,1]=(-0.0610624173989)
25843            ref[3,1,0]=(-0.365981795847)
25844            ref[3,1,1]=(0.710935216782)
25845            ref[3,2,0]=(1.1343806743)
25846            ref[3,2,1]=(-1.12662285264)
25847            ref[3,3,0]=(-1.56463302165)
25848            ref[3,3,1]=(0.701651939794)
25849            ref[3,4,0]=(1.38464443939)
25850            ref[3,4,1]=(-0.389328824078)
25851          else:
25852            arg[0,0]=(-0.0712739739657)*x[0]+(-0.876441668189)*x[1]+(0.0470586478107)*x[2]
25853            arg[0,1]=(0.162070750778)*x[0]+(-0.672482005621)*x[1]+(-1.03342931552)*x[2]
25854            arg[0,2]=(1.06895949733)*x[0]+(-1.10495954108)*x[1]+(-0.689435346922)*x[2]
25855            arg[0,3]=(-1.64208651194)*x[0]+(0.957715915835)*x[1]+(-0.693562002749)*x[2]
25856            arg[0,4]=(0.438930190966)*x[0]+(-0.696372759112)*x[1]+(-0.158769579398)*x[2]
25857            arg[1,0]=(-0.953682332409)*x[0]+(-1.06837831005)*x[1]+(1.19564302893)*x[2]
25858            arg[1,1]=(0.277654186276)*x[0]+(-0.4746702788)*x[1]+(0.173080688542)*x[2]
25859            arg[1,2]=(-0.0080483840277)*x[0]+(-0.606889636532)*x[1]+(-0.124482488485)*x[2]
25860            arg[1,3]=(1.6007700604)*x[0]+(-0.375573101659)*x[1]+(-0.0476989341458)*x[2]
25861            arg[1,4]=(-0.797213964765)*x[0]+(-1.71649956799)*x[1]+(-0.661820920574)*x[2]
25862            arg[2,0]=(-0.32770535636)*x[0]+(0.705676452368)*x[1]+(0.0527214815247)*x[2]
25863            arg[2,1]=(-0.279796835093)*x[0]+(-0.277264709729)*x[1]+(0.278447243546)*x[2]
25864            arg[2,2]=(-0.633674196984)*x[0]+(-0.0772663082858)*x[1]+(0.973414222834)*x[2]
25865            arg[2,3]=(0.0946037203409)*x[0]+(-0.556948102801)*x[1]+(0.521264798082)*x[2]
25866            arg[2,4]=(0.566962914588)*x[0]+(-0.942523827817)*x[1]+(-0.216364192998)*x[2]
25867            arg[3,0]=(-0.839702033371)*x[0]+(-1.54418367928)*x[1]+(-0.184693363932)*x[2]
25868            arg[3,1]=(-0.509575652351)*x[0]+(0.0710239576211)*x[1]+(0.758695521775)*x[2]
25869            arg[3,2]=(0.465980018625)*x[0]+(-0.907796828587)*x[1]+(1.00785361438)*x[2]
25870            arg[3,3]=(0.778181969842)*x[0]+(-1.45634928421)*x[1]+(1.20377448321)*x[2]
25871            arg[3,4]=(1.53649652976)*x[0]+(-0.769556905214)*x[1]+(0.736590460805)*x[2]
25872            ref[0,0,0]=(-0.0712739739657)
25873            ref[0,0,1]=(-0.876441668189)
25874            ref[0,0,2]=(0.0470586478107)
25875            ref[0,1,0]=(0.162070750778)
25876            ref[0,1,1]=(-0.672482005621)
25877            ref[0,1,2]=(-1.03342931552)
25878            ref[0,2,0]=(1.06895949733)
25879            ref[0,2,1]=(-1.10495954108)
25880            ref[0,2,2]=(-0.689435346922)
25881            ref[0,3,0]=(-1.64208651194)
25882            ref[0,3,1]=(0.957715915835)
25883            ref[0,3,2]=(-0.693562002749)
25884            ref[0,4,0]=(0.438930190966)
25885            ref[0,4,1]=(-0.696372759112)
25886            ref[0,4,2]=(-0.158769579398)
25887            ref[1,0,0]=(-0.953682332409)
25888            ref[1,0,1]=(-1.06837831005)
25889            ref[1,0,2]=(1.19564302893)
25890            ref[1,1,0]=(0.277654186276)
25891            ref[1,1,1]=(-0.4746702788)
25892            ref[1,1,2]=(0.173080688542)
25893            ref[1,2,0]=(-0.0080483840277)
25894            ref[1,2,1]=(-0.606889636532)
25895            ref[1,2,2]=(-0.124482488485)
25896            ref[1,3,0]=(1.6007700604)
25897            ref[1,3,1]=(-0.375573101659)
25898            ref[1,3,2]=(-0.0476989341458)
25899            ref[1,4,0]=(-0.797213964765)
25900            ref[1,4,1]=(-1.71649956799)
25901            ref[1,4,2]=(-0.661820920574)
25902            ref[2,0,0]=(-0.32770535636)
25903            ref[2,0,1]=(0.705676452368)
25904            ref[2,0,2]=(0.0527214815247)
25905            ref[2,1,0]=(-0.279796835093)
25906            ref[2,1,1]=(-0.277264709729)
25907            ref[2,1,2]=(0.278447243546)
25908            ref[2,2,0]=(-0.633674196984)
25909            ref[2,2,1]=(-0.0772663082858)
25910            ref[2,2,2]=(0.973414222834)
25911            ref[2,3,0]=(0.0946037203409)
25912            ref[2,3,1]=(-0.556948102801)
25913            ref[2,3,2]=(0.521264798082)
25914            ref[2,4,0]=(0.566962914588)
25915            ref[2,4,1]=(-0.942523827817)
25916            ref[2,4,2]=(-0.216364192998)
25917            ref[3,0,0]=(-0.839702033371)
25918            ref[3,0,1]=(-1.54418367928)
25919            ref[3,0,2]=(-0.184693363932)
25920            ref[3,1,0]=(-0.509575652351)
25921            ref[3,1,1]=(0.0710239576211)
25922            ref[3,1,2]=(0.758695521775)
25923            ref[3,2,0]=(0.465980018625)
25924            ref[3,2,1]=(-0.907796828587)
25925            ref[3,2,2]=(1.00785361438)
25926            ref[3,3,0]=(0.778181969842)
25927            ref[3,3,1]=(-1.45634928421)
25928            ref[3,3,2]=(1.20377448321)
25929            ref[3,4,0]=(1.53649652976)
25930            ref[3,4,1]=(-0.769556905214)
25931            ref[3,4,2]=(0.736590460805)
25932          res=grad(arg,where=w_ref)
25933          self.failUnless(isinstance(res,Data),"wrong type of result.")
25934          self.failUnlessEqual(res.getShape(),(4, 5)+(dim,),"wrong shape of result.")
25935          self.failUnless(Lsup(res-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
25936       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
25937       def test_grad_onFunction_fromData_ReducedSolution_rank3(self):
25938          """
25939          tests gradient for rank 3 Data on the Function
25940    
25941          assumptions: ReducedSolution(self.domain) exists
25942                       self.domain supports gardient on Function
25943          """
25944          o=1
25945          dim=self.domain.getDim()
25946          w_ref=Function(self.domain)
25947          x_ref=w_ref.getX()
25948          w=ReducedSolution(self.domain)
25949          x=w.getX()
25950          arg=Data(0,(6, 2, 2),w)
25951          ref=Data(0,(6, 2, 2)+(dim,),w_ref)
25952          if dim==2:
25953            arg[0,0,0]=(1.39942183968)*x[0]+(0.930250163424)*x[1]
25954            arg[0,0,1]=(0.784529427298)*x[0]+(0.701356076527)*x[1]
25955            arg[0,1,0]=(0.555731012919)*x[0]+(0.344587262019)*x[1]
25956            arg[0,1,1]=(-0.276715609625)*x[0]+(-1.11338983237)*x[1]
25957            arg[1,0,0]=(-0.769761090097)*x[0]+(0.992057132466)*x[1]
25958            arg[1,0,1]=(-0.551932009885)*x[0]+(0.838811831137)*x[1]
25959            arg[1,1,0]=(-0.0342537649661)*x[0]+(-0.121298284661)*x[1]
25960            arg[1,1,1]=(-0.520900867)*x[0]+(0.332690359269)*x[1]
25961            arg[2,0,0]=(-0.11096511324)*x[0]+(1.5033138393)*x[1]
25962            arg[2,0,1]=(0.42710234817)*x[0]+(1.69083527833)*x[1]
25963            arg[2,1,0]=(-0.721628841933)*x[0]+(-0.142173751601)*x[1]
25964            arg[2,1,1]=(1.60406199163)*x[0]+(0.641129401426)*x[1]
25965            arg[3,0,0]=(-0.731738224766)*x[0]+(-0.900425804879)*x[1]
25966            arg[3,0,1]=(0.691108140204)*x[0]+(1.34043965547)*x[1]
25967            arg[3,1,0]=(0.0588648299821)*x[0]+(1.39496787747)*x[1]
25968            arg[3,1,1]=(0.308498671612)*x[0]+(-0.382011042003)*x[1]
25969            arg[4,0,0]=(0.267730803561)*x[0]+(1.76842225328)*x[1]
25970            arg[4,0,1]=(0.817593687794)*x[0]+(0.563964345071)*x[1]
25971            arg[4,1,0]=(-0.081090160095)*x[0]+(0.52343934951)*x[1]
25972            arg[4,1,1]=(-1.02492946795)*x[0]+(-0.725641086216)*x[1]
25973            arg[5,0,0]=(-0.294202699958)*x[0]+(0.288095939599)*x[1]
25974            arg[5,0,1]=(0.110479098614)*x[0]+(-0.113972943318)*x[1]
25975            arg[5,1,0]=(0.772912536924)*x[0]+(-0.883345081065)*x[1]
25976            arg[5,1,1]=(-0.17097935184)*x[0]+(0.645719745504)*x[1]
25977            ref[0,0,0,0]=(1.39942183968)
25978            ref[0,0,0,1]=(0.930250163424)
25979            ref[0,0,1,0]=(0.784529427298)
25980            ref[0,0,1,1]=(0.701356076527)
25981            ref[0,1,0,0]=(0.555731012919)
25982            ref[0,1,0,1]=(0.344587262019)
25983            ref[0,1,1,0]=(-0.276715609625)
25984            ref[0,1,1,1]=(-1.11338983237)
25985            ref[1,0,0,0]=(-0.769761090097)
25986            ref[1,0,0,1]=(0.992057132466)
25987            ref[1,0,1,0]=(-0.551932009885)
25988            ref[1,0,1,1]=(0.838811831137)
25989            ref[1,1,0,0]=(-0.0342537649661)
25990            ref[1,1,0,1]=(-0.121298284661)
25991            ref[1,1,1,0]=(-0.520900867)
25992            ref[1,1,1,1]=(0.332690359269)
25993            ref[2,0,0,0]=(-0.11096511324)
25994            ref[2,0,0,1]=(1.5033138393)
25995            ref[2,0,1,0]=(0.42710234817)
25996            ref[2,0,1,1]=(1.69083527833)
25997            ref[2,1,0,0]=(-0.721628841933)
25998            ref[2,1,0,1]=(-0.142173751601)
25999            ref[2,1,1,0]=(1.60406199163)
26000            ref[2,1,1,1]=(0.641129401426)
26001            ref[3,0,0,0]=(-0.731738224766)
26002            ref[3,0,0,1]=(-0.900425804879)
26003            ref[3,0,1,0]=(0.691108140204)
26004            ref[3,0,1,1]=(1.34043965547)
26005            ref[3,1,0,0]=(0.0588648299821)
26006            ref[3,1,0,1]=(1.39496787747)
26007            ref[3,1,1,0]=(0.308498671612)
26008            ref[3,1,1,1]=(-0.382011042003)
26009            ref[4,0,0,0]=(0.267730803561)
26010            ref[4,0,0,1]=(1.76842225328)
26011            ref[4,0,1,0]=(0.817593687794)
26012            ref[4,0,1,1]=(0.563964345071)
26013            ref[4,1,0,0]=(-0.081090160095)
26014            ref[4,1,0,1]=(0.52343934951)
26015            ref[4,1,1,0]=(-1.02492946795)
26016            ref[4,1,1,1]=(-0.725641086216)
26017            ref[5,0,0,0]=(-0.294202699958)
26018            ref[5,0,0,1]=(0.288095939599)
26019            ref[5,0,1,0]=(0.110479098614)
26020            ref[5,0,1,1]=(-0.113972943318)
26021            ref[5,1,0,0]=(0.772912536924)
26022            ref[5,1,0,1]=(-0.883345081065)
26023            ref[5,1,1,0]=(-0.17097935184)
26024            ref[5,1,1,1]=(0.645719745504)
26025          else:
26026            arg[0,0,0]=(1.30850237165)*x[0]+(-0.0995793053275)*x[1]+(0.787886140134)*x[2]
26027            arg[0,0,1]=(-1.50381324493)*x[0]+(1.26609518824)*x[1]+(-0.520747554357)*x[2]
26028            arg[0,1,0]=(1.29770238108)*x[0]+(-1.46648704595)*x[1]+(-0.917683003599)*x[2]
26029            arg[0,1,1]=(-1.13525521581)*x[0]+(1.13359501358)*x[1]+(-0.222600272477)*x[2]
26030            arg[1,0,0]=(0.0106829054463)*x[0]+(-0.00676483709573)*x[1]+(0.109412126311)*x[2]
26031            arg[1,0,1]=(0.0246128795814)*x[0]+(-0.356585346511)*x[1]+(0.479157114293)*x[2]
26032            arg[1,1,0]=(0.541787350557)*x[0]+(-0.594934006419)*x[1]+(0.464164867381)*x[2]
26033            arg[1,1,1]=(-1.12100758712)*x[0]+(1.22017329117)*x[1]+(0.417565754303)*x[2]
26034            arg[2,0,0]=(-0.902343328228)*x[0]+(-0.118486423959)*x[1]+(0.983457082831)*x[2]
26035            arg[2,0,1]=(-1.32314473272)*x[0]+(1.09473600277)*x[1]+(0.526840449987)*x[2]
26036            arg[2,1,0]=(1.02149157674)*x[0]+(0.6830798576)*x[1]+(-0.694642330424)*x[2]
26037            arg[2,1,1]=(0.471980048259)*x[0]+(1.43051661856)*x[1]+(-0.591151392642)*x[2]
26038            arg[3,0,0]=(-0.207925182408)*x[0]+(0.644497833444)*x[1]+(0.0356376370926)*x[2]
26039            arg[3,0,1]=(1.91147142951)*x[0]+(-0.872318227607)*x[1]+(0.714610341379)*x[2]
26040            arg[3,1,0]=(-0.197729735501)*x[0]+(0.812673023114)*x[1]+(0.637138094981)*x[2]
26041            arg[3,1,1]=(0.103430412074)*x[0]+(0.69310435757)*x[1]+(1.54404820552)*x[2]
26042            arg[4,0,0]=(1.04427320711)*x[0]+(-0.655287212961)*x[1]+(0.674873379725)*x[2]
26043            arg[4,0,1]=(0.0300148606336)*x[0]+(-0.336581334229)*x[1]+(-0.26036930034)*x[2]
26044            arg[4,1,0]=(0.338077518919)*x[0]+(-0.965310125748)*x[1]+(1.66372736241)*x[2]
26045            arg[4,1,1]=(-0.417143696516)*x[0]+(-0.764906477186)*x[1]+(-0.406563170367)*x[2]
26046            arg[5,0,0]=(-0.894638979617)*x[0]+(-1.03496915396)*x[1]+(0.102679227173)*x[2]
26047            arg[5,0,1]=(0.777823649077)*x[0]+(0.138595909746)*x[1]+(0.570318195247)*x[2]
26048            arg[5,1,0]=(0.387449776869)*x[0]+(0.782752492387)*x[1]+(0.175162039427)*x[2]
26049            arg[5,1,1]=(-0.467369934942)*x[0]+(0.343929304184)*x[1]+(0.42227012208)*x[2]
26050            ref[0,0,0,0]=(1.30850237165)
26051            ref[0,0,0,1]=(-0.0995793053275)
26052            ref[0,0,0,2]=(0.787886140134)
26053            ref[0,0,1,0]=(-1.50381324493)
26054            ref[0,0,1,1]=(1.26609518824)
26055            ref[0,0,1,2]=(-0.520747554357)
26056            ref[0,1,0,0]=(1.29770238108)
26057            ref[0,1,0,1]=(-1.46648704595)
26058            ref[0,1,0,2]=(-0.917683003599)
26059            ref[0,1,1,0]=(-1.13525521581)
26060            ref[0,1,1,1]=(1.13359501358)
26061            ref[0,1,1,2]=(-0.222600272477)
26062            ref[1,0,0,0]=(0.0106829054463)
26063            ref[1,0,0,1]=(-0.00676483709573)
26064            ref[1,0,0,2]=(0.109412126311)
26065            ref[1,0,1,0]=(0.0246128795814)
26066            ref[1,0,1,1]=(-0.356585346511)
26067            ref[1,0,1,2]=(0.479157114293)
26068            ref[1,1,0,0]=(0.541787350557)
26069            ref[1,1,0,1]=(-0.594934006419)
26070            ref[1,1,0,2]=(0.464164867381)
26071            ref[1,1,1,0]=(-1.12100758712)
26072            ref[1,1,1,1]=(1.22017329117)
26073            ref[1,1,1,2]=(0.417565754303)
26074            ref[2,0,0,0]=(-0.902343328228)
26075            ref[2,0,0,1]=(-0.118486423959)
26076            ref[2,0,0,2]=(0.983457082831)
26077            ref[2,0,1,0]=(-1.32314473272)
26078            ref[2,0,1,1]=(1.09473600277)
26079            ref[2,0,1,2]=(0.526840449987)
26080            ref[2,1,0,0]=(1.02149157674)
26081            ref[2,1,0,1]=(0.6830798576)
26082            ref[2,1,0,2]=(-0.694642330424)
26083            ref[2,1,1,0]=(0.471980048259)
26084            ref[2,1,1,1]=(1.43051661856)
26085            ref[2,1,1,2]=(-0.591151392642)
26086            ref[3,0,0,0]=(-0.207925182408)
26087            ref[3,0,0,1]=(0.644497833444)
26088            ref[3,0,0,2]=(0.0356376370926)
26089            ref[3,0,1,0]=(1.91147142951)
26090            ref[3,0,1,1]=(-0.872318227607)
26091            ref[3,0,1,2]=(0.714610341379)
26092            ref[3,1,0,0]=(-0.197729735501)
26093            ref[3,1,0,1]=(0.812673023114)
26094            ref[3,1,0,2]=(0.637138094981)
26095            ref[3,1,1,0]=(0.103430412074)
26096            ref[3,1,1,1]=(0.69310435757)
26097            ref[3,1,1,2]=(1.54404820552)
26098            ref[4,0,0,0]=(1.04427320711)
26099            ref[4,0,0,1]=(-0.655287212961)
26100            ref[4,0,0,2]=(0.674873379725)
26101            ref[4,0,1,0]=(0.0300148606336)
26102            ref[4,0,1,1]=(-0.336581334229)
26103            ref[4,0,1,2]=(-0.26036930034)
26104            ref[4,1,0,0]=(0.338077518919)
26105            ref[4,1,0,1]=(-0.965310125748)
26106            ref[4,1,0,2]=(1.66372736241)
26107            ref[4,1,1,0]=(-0.417143696516)
26108            ref[4,1,1,1]=(-0.764906477186)
26109            ref[4,1,1,2]=(-0.406563170367)
26110            ref[5,0,0,0]=(-0.894638979617)
26111            ref[5,0,0,1]=(-1.03496915396)
26112            ref[5,0,0,2]=(0.102679227173)
26113            ref[5,0,1,0]=(0.777823649077)
26114            ref[5,0,1,1]=(0.138595909746)
26115            ref[5,0,1,2]=(0.570318195247)
26116            ref[5,1,0,0]=(0.387449776869)
26117            ref[5,1,0,1]=(0.782752492387)
26118            ref[5,1,0,2]=(0.175162039427)
26119            ref[5,1,1,0]=(-0.467369934942)
26120            ref[5,1,1,1]=(0.343929304184)
26121            ref[5,1,1,2]=(0.42227012208)
26122          res=grad(arg,where=w_ref)
26123          self.failUnless(isinstance(res,Data),"wrong type of result.")
26124          self.failUnlessEqual(res.getShape(),(6, 2, 2)+(dim,),"wrong shape of result.")
26125          self.failUnless(Lsup(res-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
26126       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
26127       def test_grad_onFunction_fromSymbol_ContinuousFunction_rank0(self):
26128          """
26129          tests gradient for rank 0 Symbol on the Function
26130    
26131          assumptions: ContinuousFunction(self.domain) exists
26132                       self.domain supports gardient on Function
26133          """
26134          o=self.order
26135          dim=self.domain.getDim()
26136          w_ref=Function(self.domain)
26137          x_ref=w_ref.getX()
26138          w=ContinuousFunction(self.domain)
26139          x=w.getX()
26140          arg=Symbol(shape=(),dim=dim)
26141          s=Data(0,(),w)
26142          ref=Data(0,()+(dim,),w_ref)
26143          if dim==2:
26144            s=(-0.662618392141)*x[0]**o+(-0.42617914202)*x[0]+(-0.419315426864)*x[1]**o+(-0.63613129268)*x[1]
26145            ref[0]=o*(-0.662618392141)*x_ref[0]**(o-1)+(-0.42617914202)
26146            ref[1]=o*(-0.419315426864)*x_ref[1]**(o-1)+(-0.63613129268)
26147          else:
26148            s=(-0.762028198747)*x[0]**o+(0.14263183612)*x[0]+(0.185743923374)*x[1]**o+(-0.75903441887)*x[1]+(0.77116503084)*x[2]**o+(0.404561994654)*x[2]
26149            ref[0]=o*(-0.762028198747)*x_ref[0]**(o-1)+(0.14263183612)
26150            ref[1]=o*(0.185743923374)*x_ref[1]**(o-1)+(-0.75903441887)
26151            ref[2]=o*(0.77116503084)*x_ref[2]**(o-1)+(0.404561994654)
26152          res=grad(arg,where=w_ref)
26153          sub=res.substitute({arg:s})
26154          self.failUnless(isinstance(res,Symbol),"wrong type of result.")
26155          self.failUnlessEqual(res.getShape(),()+(dim,),"wrong shape of result.")
26156          self.failUnless(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
26157       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
26158       def test_grad_onFunction_fromSymbol_ContinuousFunction_rank1(self):
26159          """
26160          tests gradient for rank 1 Symbol on the Function
26161    
26162          assumptions: ContinuousFunction(self.domain) exists
26163                       self.domain supports gardient on Function
26164          """
26165          o=self.order
26166          dim=self.domain.getDim()
26167          w_ref=Function(self.domain)
26168          x_ref=w_ref.getX()
26169          w=ContinuousFunction(self.domain)
26170          x=w.getX()
26171          arg=Symbol(shape=(2,),dim=dim)
26172          s=Data(0,(2,),w)
26173          ref=Data(0,(2,)+(dim,),w_ref)
26174          if dim==2:
26175            s[0]=(0.876893099705)*x[0]**o+(-0.177079224798)*x[0]+(-0.527304645017)*x[1]**o+(-0.0349448735698)*x[1]
26176            s[1]=(-0.534225377579)*x[0]**o+(-0.280049692517)*x[0]+(0.912290702798)*x[1]**o+(-0.236862709157)*x[1]
26177            ref[0,0]=o*(0.876893099705)*x_ref[0]**(o-1)+(-0.177079224798)
26178            ref[0,1]=o*(-0.527304645017)*x_ref[1]**(o-1)+(-0.0349448735698)
26179            ref[1,0]=o*(-0.534225377579)*x_ref[0]**(o-1)+(-0.280049692517)
26180            ref[1,1]=o*(0.912290702798)*x_ref[1]**(o-1)+(-0.236862709157)
26181          else:
26182            s[0]=(-0.254550799071)*x[0]**o+(0.163641443345)*x[0]+(0.224143736485)*x[1]**o+(0.536806485124)*x[1]+(0.195320362214)*x[2]**o+(-0.0914207464578)*x[2]
26183            s[1]=(0.708798134546)*x[0]**o+(-0.572385005996)*x[0]+(-0.28510012443)*x[1]**o+(-0.305494018321)*x[1]+(-0.944999853945)*x[2]**o+(0.690936294379)*x[2]
26184            ref[0,0]=o*(-0.254550799071)*x_ref[0]**(o-1)+(0.163641443345)
26185            ref[0,1]=o*(0.224143736485)*x_ref[1]**(o-1)+(0.536806485124)
26186            ref[0,2]=o*(0.195320362214)*x_ref[2]**(o-1)+(-0.0914207464578)
26187            ref[1,0]=o*(0.708798134546)*x_ref[0]**(o-1)+(-0.572385005996)
26188            ref[1,1]=o*(-0.28510012443)*x_ref[1]**(o-1)+(-0.305494018321)
26189            ref[1,2]=o*(-0.944999853945)*x_ref[2]**(o-1)+(0.690936294379)
26190          res=grad(arg,where=w_ref)
26191          sub=res.substitute({arg:s})
26192          self.failUnless(isinstance(res,Symbol),"wrong type of result.")
26193          self.failUnlessEqual(res.getShape(),(2,)+(dim,),"wrong shape of result.")
26194          self.failUnless(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
26195       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
26196       def test_grad_onFunction_fromSymbol_ContinuousFunction_rank2(self):
26197          """
26198          tests gradient for rank 2 Symbol on the Function
26199    
26200          assumptions: ContinuousFunction(self.domain) exists
26201                       self.domain supports gardient on Function
26202          """
26203          o=self.order
26204          dim=self.domain.getDim()
26205          w_ref=Function(self.domain)
26206          x_ref=w_ref.getX()
26207          w=ContinuousFunction(self.domain)
26208          x=w.getX()
26209          arg=Symbol(shape=(4, 5),dim=dim)
26210          s=Data(0,(4, 5),w)
26211          ref=Data(0,(4, 5)+(dim,),w_ref)
26212          if dim==2:
26213            s[0,0]=(-0.555539333621)*x[0]**o+(0.568177319612)*x[0]+(-0.515690028057)*x[1]**o+(0.293250590603)*x[1]
26214            s[0,1]=(0.7906503945)*x[0]**o+(-0.167319950519)*x[0]+(-0.554762741045)*x[1]**o+(-0.669125892384)*x[1]
26215            s[0,2]=(-0.309865666451)*x[0]**o+(0.419499273794)*x[0]+(-0.563409144055)*x[1]**o+(0.734002122712)*x[1]
26216            s[0,3]=(-0.93657260436)*x[0]**o+(0.586601294944)*x[0]+(-0.0753458445127)*x[1]**o+(-0.429871038581)*x[1]
26217            s[0,4]=(-0.198003364647)*x[0]**o+(-0.76482793062)*x[0]+(-0.125188294649)*x[1]**o+(0.385219545236)*x[1]
26218            s[1,0]=(-0.179923035467)*x[0]**o+(0.962110768245)*x[0]+(0.422898666863)*x[1]**o+(-0.92193819062)*x[1]
26219            s[1,1]=(-0.490610670554)*x[0]**o+(-0.876474842232)*x[0]+(-0.870535201491)*x[1]**o+(-0.208576590799)*x[1]
26220            s[1,2]=(0.625747905975)*x[0]**o+(0.766151918225)*x[0]+(-0.865271283252)*x[1]**o+(-0.984130648049)*x[1]
26221            s[1,3]=(0.21674453499)*x[0]**o+(0.74684159223)*x[0]+(0.968938733366)*x[1]**o+(-0.980174574707)*x[1]
26222            s[1,4]=(0.15542486304)*x[0]**o+(-0.288729546241)*x[0]+(0.780533404805)*x[1]**o+(0.201416001866)*x[1]
26223            s[2,0]=(0.353102047108)*x[0]**o+(-0.388306135155)*x[0]+(0.837210776206)*x[1]**o+(0.775323252612)*x[1]
26224            s[2,1]=(-0.407280915312)*x[0]**o+(-0.53768541262)*x[0]+(0.893214604403)*x[1]**o+(-0.69705043663)*x[1]
26225            s[2,2]=(-0.447169656337)*x[0]**o+(0.728088534193)*x[0]+(0.0485994009494)*x[1]**o+(-0.503223824878)*x[1]
26226            s[2,3]=(-0.19757745902)*x[0]**o+(-0.627533475183)*x[0]+(0.962502499281)*x[1]**o+(0.859404568594)*x[1]
26227            s[2,4]=(-0.796987077625)*x[0]**o+(0.0568885495838)*x[0]+(0.84204928286)*x[1]**o+(0.521081919225)*x[1]
26228            s[3,0]=(-0.310704277911)*x[0]**o+(0.768329284718)*x[0]+(0.348908427651)*x[1]**o+(0.403870270277)*x[1]
26229            s[3,1]=(0.655277014208)*x[0]**o+(-0.770568143234)*x[0]+(0.101447715545)*x[1]**o+(0.525372367142)*x[1]
26230            s[3,2]=(-0.450815491992)*x[0]**o+(0.267341563784)*x[0]+(0.666360532863)*x[1]**o+(0.25468870732)*x[1]
26231            s[3,3]=(-0.448798233791)*x[0]**o+(0.825032894501)*x[0]+(0.0555349523209)*x[1]**o+(0.168286007255)*x[1]
26232            s[3,4]=(-0.260484305029)*x[0]**o+(0.265463408379)*x[0]+(0.147356758821)*x[1]**o+(-0.916280010272)*x[1]
26233            ref[0,0,0]=o*(-0.555539333621)*x_ref[0]**(o-1)+(0.568177319612)
26234            ref[0,0,1]=o*(-0.515690028057)*x_ref[1]**(o-1)+(0.293250590603)
26235            ref[0,1,0]=o*(0.7906503945)*x_ref[0]**(o-1)+(-0.167319950519)
26236            ref[0,1,1]=o*(-0.554762741045)*x_ref[1]**(o-1)+(-0.669125892384)
26237            ref[0,2,0]=o*(-0.309865666451)*x_ref[0]**(o-1)+(0.419499273794)
26238            ref[0,2,1]=o*(-0.563409144055)*x_ref[1]**(o-1)+(0.734002122712)
26239            ref[0,3,0]=o*(-0.93657260436)*x_ref[0]**(o-1)+(0.586601294944)
26240            ref[0,3,1]=o*(-0.0753458445127)*x_ref[1]**(o-1)+(-0.429871038581)
26241            ref[0,4,0]=o*(-0.198003364647)*x_ref[0]**(o-1)+(-0.76482793062)
26242            ref[0,4,1]=o*(-0.125188294649)*x_ref[1]**(o-1)+(0.385219545236)
26243            ref[1,0,0]=o*(-0.179923035467)*x_ref[0]**(o-1)+(0.962110768245)
26244            ref[1,0,1]=o*(0.422898666863)*x_ref[1]**(o-1)+(-0.92193819062)
26245            ref[1,1,0]=o*(-0.490610670554)*x_ref[0]**(o-1)+(-0.876474842232)
26246            ref[1,1,1]=o*(-0.870535201491)*x_ref[1]**(o-1)+(-0.208576590799)
26247            ref[1,2,0]=o*(0.625747905975)*x_ref[0]**(o-1)+(0.766151918225)
26248            ref[1,2,1]=o*(-0.865271283252)*x_ref[1]**(o-1)+(-0.984130648049)
26249            ref[1,3,0]=o*(0.21674453499)*x_ref[0]**(o-1)+(0.74684159223)
26250            ref[1,3,1]=o*(0.968938733366)*x_ref[1]**(o-1)+(-0.980174574707)
26251            ref[1,4,0]=o*(0.15542486304)*x_ref[0]**(o-1)+(-0.288729546241)
26252            ref[1,4,1]=o*(0.780533404805)*x_ref[1]**(o-1)+(0.201416001866)
26253            ref[2,0,0]=o*(0.353102047108)*x_ref[0]**(o-1)+(-0.388306135155)
26254            ref[2,0,1]=o*(0.837210776206)*x_ref[1]**(o-1)+(0.775323252612)
26255            ref[2,1,0]=o*(-0.407280915312)*x_ref[0]**(o-1)+(-0.53768541262)
26256            ref[2,1,1]=o*(0.893214604403)*x_ref[1]**(o-1)+(-0.69705043663)
26257            ref[2,2,0]=o*(-0.447169656337)*x_ref[0]**(o-1)+(0.728088534193)
26258            ref[2,2,1]=o*(0.0485994009494)*x_ref[1]**(o-1)+(-0.503223824878)
26259            ref[2,3,0]=o*(-0.19757745902)*x_ref[0]**(o-1)+(-0.627533475183)
26260            ref[2,3,1]=o*(0.962502499281)*x_ref[1]**(o-1)+(0.859404568594)
26261            ref[2,4,0]=o*(-0.796987077625)*x_ref[0]**(o-1)+(0.0568885495838)
26262            ref[2,4,1]=o*(0.84204928286)*x_ref[1]**(o-1)+(0.521081919225)
26263            ref[3,0,0]=o*(-0.310704277911)*x_ref[0]**(o-1)+(0.768329284718)
26264            ref[3,0,1]=o*(0.348908427651)*x_ref[1]**(o-1)+(0.403870270277)
26265            ref[3,1,0]=o*(0.655277014208)*x_ref[0]**(o-1)+(-0.770568143234)
26266            ref[3,1,1]=o*(0.101447715545)*x_ref[1]**(o-1)+(0.525372367142)
26267            ref[3,2,0]=o*(-0.450815491992)*x_ref[0]**(o-1)+(0.267341563784)
26268            ref[3,2,1]=o*(0.666360532863)*x_ref[1]**(o-1)+(0.25468870732)
26269            ref[3,3,0]=o*(-0.448798233791)*x_ref[0]**(o-1)+(0.825032894501)
26270            ref[3,3,1]=o*(0.0555349523209)*x_ref[1]**(o-1)+(0.168286007255)
26271            ref[3,4,0]=o*(-0.260484305029)*x_ref[0]**(o-1)+(0.265463408379)
26272            ref[3,4,1]=o*(0.147356758821)*x_ref[1]**(o-1)+(-0.916280010272)
26273          else:
26274            s[0,0]=(0.344242828216)*x[0]**o+(0.491144523585)*x[0]+(-0.92238663597)*x[1]**o+(0.655901250824)*x[1]+(0.683755311378)*x[2]**o+(-0.499214028484)*x[2]
26275            s[0,1]=(0.246950598177)*x[0]**o+(0.690983811313)*x[0]+(0.0441182184921)*x[1]**o+(-0.236074195046)*x[1]+(-0.365664761621)*x[2]**o+(0.406464337338)*x[2]
26276            s[0,2]=(-0.327739540606)*x[0]**o+(-0.96200067317)*x[0]+(-0.634811990063)*x[1]**o+(-0.0028455698091)*x[1]+(-0.773566753548)*x[2]**o+(-0.944614851063)*x[2]
26277            s[0,3]=(-0.423726389514)*x[0]**o+(0.930379169254)*x[0]+(0.551259733694)*x[1]**o+(-0.277405976565)*x[1]+(0.429454682659)*x[2]**o+(0.665041921999)*x[2]
26278            s[0,4]=(-0.808919025592)*x[0]**o+(0.527988478329)*x[0]+(0.598427398457)*x[1]**o+(-0.740120252678)*x[1]+(-0.57495557526)*x[2]**o+(-0.09358843573)*x[2]
26279            s[1,0]=(0.139579066196)*x[0]**o+(0.64838866949)*x[0]+(-0.310649190227)*x[1]**o+(-0.947998845563)*x[1]+(0.15735741361)*x[2]**o+(0.521031688881)*x[2]
26280            s[1,1]=(0.3564671327)*x[0]**o+(0.44368001644)*x[0]+(-0.867803053218)*x[1]**o+(-0.808576642073)*x[1]+(0.164399621384)*x[2]**o+(-0.929324362594)*x[2]
26281            s[1,2]=(-0.719971382108)*x[0]**o+(-0.509264166588)*x[0]+(0.880679383007)*x[1]**o+(0.150377261228)*x[1]+(-0.695573153702)*x[2]**o+(-0.504859578896)*x[2]
26282            s[1,3]=(0.19999237262)*x[0]**o+(0.301010290809)*x[0]+(-0.761383660349)*x[1]**o+(-0.943121991098)*x[1]+(-0.824426064219)*x[2]**o+(-0.288809145407)*x[2]
26283            s[1,4]=(0.0209332296639)*x[0]**o+(-0.745572124803)*x[0]+(0.649794969638)*x[1]**o+(0.997896690337)*x[1]+(0.245116895509)*x[2]**o+(0.934427411594)*x[2]
26284            s[2,0]=(-0.415649481447)*x[0]**o+(0.967011773751)*x[0]+(0.850275812024)*x[1]**o+(0.368460051013)*x[1]+(-0.895648484555)*x[2]**o+(-0.748318156303)*x[2]
26285            s[2,1]=(0.822253194356)*x[0]**o+(-0.209207542819)*x[0]+(-0.323961739942)*x[1]**o+(-0.108506915189)*x[1]+(0.39419174146)*x[2]**o+(-0.880778942413)*x[2]
26286            s[2,2]=(0.730106025416)*x[0]**o+(-0.0921212828406)*x[0]+(-0.0790190498056)*x[1]**o+(0.456083884786)*x[1]+(-0.226537921015)*x[2]**o+(0.293694285152)*x[2]
26287            s[2,3]=(-0.978825730702)*x[0]**o+(-0.914905098143)*x[0]+(-0.110991764399)*x[1]**o+(-0.144744770355)*x[1]+(0.625189542344)*x[2]**o+(0.804751738687)*x[2]
26288            s[2,4]=(0.862409094298)*x[0]**o+(-0.953204890595)*x[0]+(-0.66083629488)*x[1]**o+(0.892835328867)*x[1]+(-0.724419944382)*x[2]**o+(-0.352952976454)*x[2]
26289            s[3,0]=(0.518573942986)*x[0]**o+(0.525366624319)*x[0]+(-0.184521233411)*x[1]**o+(-0.577732664805)*x[1]+(0.194495181041)*x[2]**o+(-0.651069449215)*x[2]
26290            s[3,1]=(-0.900134328609)*x[0]**o+(-0.502594184837)*x[0]+(0.972006928979)*x[1]**o+(-0.58560991354)*x[1]+(0.423531955361)*x[2]**o+(-0.149983453241)*x[2]
26291            s[3,2]=(-0.949776951808)*x[0]**o+(-0.557083489688)*x[0]+(-0.860426216679)*x[1]**o+(0.740745372034)*x[1]+(-0.770598389143)*x[2]**o+(0.576226272811)*x[2]
26292            s[3,3]=(0.947181609851)*x[0]**o+(0.624290827777)*x[0]+(0.163876818237)*x[1]**o+(-0.881648295139)*x[1]+(0.460250347501)*x[2]**o+(0.278384518072)*x[2]
26293            s[3,4]=(-0.235115463614)*x[0]**o+(-0.608162950212)*x[0]+(-0.942527781961)*x[1]**o+(-0.473027994027)*x[1]+(0.784701664346)*x[2]**o+(0.67497154466)*x[2]
26294            ref[0,0,0]=o*(0.344242828216)*x_ref[0]**(o-1)+(0.491144523585)
26295            ref[0,0,1]=o*(-0.92238663597)*x_ref[1]**(o-1)+(0.655901250824)
26296            ref[0,0,2]=o*(0.683755311378)*x_ref[2]**(o-1)+(-0.499214028484)
26297            ref[0,1,0]=o*(0.246950598177)*x_ref[0]**(o-1)+(0.690983811313)
26298            ref[0,1,1]=o*(0.0441182184921)*x_ref[1]**(o-1)+(-0.236074195046)
26299            ref[0,1,2]=o*(-0.365664761621)*x_ref[2]**(o-1)+(0.406464337338)
26300            ref[0,2,0]=o*(-0.327739540606)*x_ref[0]**(o-1)+(-0.96200067317)
26301            ref[0,2,1]=o*(-0.634811990063)*x_ref[1]**(o-1)+(-0.0028455698091)
26302            ref[0,2,2]=o*(-0.773566753548)*x_ref[2]**(o-1)+(-0.944614851063)
26303            ref[0,3,0]=o*(-0.423726389514)*x_ref[0]**(o-1)+(0.930379169254)
26304            ref[0,3,1]=o*(0.551259733694)*x_ref[1]**(o-1)+(-0.277405976565)
26305            ref[0,3,2]=o*(0.429454682659)*x_ref[2]**(o-1)+(0.665041921999)
26306            ref[0,4,0]=o*(-0.808919025592)*x_ref[0]**(o-1)+(0.527988478329)
26307            ref[0,4,1]=o*(0.598427398457)*x_ref[1]**(o-1)+(-0.740120252678)
26308            ref[0,4,2]=o*(-0.57495557526)*x_ref[2]**(o-1)+(-0.09358843573)
26309            ref[1,0,0]=o*(0.139579066196)*x_ref[0]**(o-1)+(0.64838866949)
26310            ref[1,0,1]=o*(-0.310649190227)*x_ref[1]**(o-1)+(-0.947998845563)
26311            ref[1,0,2]=o*(0.15735741361)*x_ref[2]**(o-1)+(0.521031688881)
26312            ref[1,1,0]=o*(0.3564671327)*x_ref[0]**(o-1)+(0.44368001644)
26313            ref[1,1,1]=o*(-0.867803053218)*x_ref[1]**(o-1)+(-0.808576642073)
26314            ref[1,1,2]=o*(0.164399621384)*x_ref[2]**(o-1)+(-0.929324362594)
26315            ref[1,2,0]=o*(-0.719971382108)*x_ref[0]**(o-1)+(-0.509264166588)
26316            ref[1,2,1]=o*(0.880679383007)*x_ref[1]**(o-1)+(0.150377261228)
26317            ref[1,2,2]=o*(-0.695573153702)*x_ref[2]**(o-1)+(-0.504859578896)
26318            ref[1,3,0]=o*(0.19999237262)*x_ref[0]**(o-1)+(0.301010290809)
26319            ref[1,3,1]=o*(-0.761383660349)*x_ref[1]**(o-1)+(-0.943121991098)
26320            ref[1,3,2]=o*(-0.824426064219)*x_ref[2]**(o-1)+(-0.288809145407)
26321            ref[1,4,0]=o*(0.0209332296639)*x_ref[0]**(o-1)+(-0.745572124803)
26322            ref[1,4,1]=o*(0.649794969638)*x_ref[1]**(o-1)+(0.997896690337)
26323            ref[1,4,2]=o*(0.245116895509)*x_ref[2]**(o-1)+(0.934427411594)
26324            ref[2,0,0]=o*(-0.415649481447)*x_ref[0]**(o-1)+(0.967011773751)
26325            ref[2,0,1]=o*(0.850275812024)*x_ref[1]**(o-1)+(0.368460051013)
26326            ref[2,0,2]=o*(-0.895648484555)*x_ref[2]**(o-1)+(-0.748318156303)
26327            ref[2,1,0]=o*(0.822253194356)*x_ref[0]**(o-1)+(-0.209207542819)
26328            ref[2,1,1]=o*(-0.323961739942)*x_ref[1]**(o-1)+(-0.108506915189)
26329            ref[2,1,2]=o*(0.39419174146)*x_ref[2]**(o-1)+(-0.880778942413)
26330            ref[2,2,0]=o*(0.730106025416)*x_ref[0]**(o-1)+(-0.0921212828406)
26331            ref[2,2,1]=o*(-0.0790190498056)*x_ref[1]**(o-1)+(0.456083884786)
26332            ref[2,2,2]=o*(-0.226537921015)*x_ref[2]**(o-1)+(0.293694285152)
26333            ref[2,3,0]=o*(-0.978825730702)*x_ref[0]**(o-1)+(-0.914905098143)
26334            ref[2,3,1]=o*(-0.110991764399)*x_ref[1]**(o-1)+(-0.144744770355)
26335            ref[2,3,2]=o*(0.625189542344)*x_ref[2]**(o-1)+(0.804751738687)
26336            ref[2,4,0]=o*(0.862409094298)*x_ref[0]**(o-1)+(-0.953204890595)
26337            ref[2,4,1]=o*(-0.66083629488)*x_ref[1]**(o-1)+(0.892835328867)
26338            ref[2,4,2]=o*(-0.724419944382)*x_ref[2]**(o-1)+(-0.352952976454)
26339            ref[3,0,0]=o*(0.518573942986)*x_ref[0]**(o-1)+(0.525366624319)
26340            ref[3,0,1]=o*(-0.184521233411)*x_ref[1]**(o-1)+(-0.577732664805)
26341            ref[3,0,2]=o*(0.194495181041)*x_ref[2]**(o-1)+(-0.651069449215)
26342            ref[3,1,0]=o*(-0.900134328609)*x_ref[0]**(o-1)+(-0.502594184837)
26343            ref[3,1,1]=o*(0.972006928979)*x_ref[1]**(o-1)+(-0.58560991354)
26344            ref[3,1,2]=o*(0.423531955361)*x_ref[2]**(o-1)+(-0.149983453241)
26345            ref[3,2,0]=o*(-0.949776951808)*x_ref[0]**(o-1)+(-0.557083489688)
26346            ref[3,2,1]=o*(-0.860426216679)*x_ref[1]**(o-1)+(0.740745372034)
26347            ref[3,2,2]=o*(-0.770598389143)*x_ref[2]**(o-1)+(0.576226272811)
26348            ref[3,3,0]=o*(0.947181609851)*x_ref[0]**(o-1)+(0.624290827777)
26349            ref[3,3,1]=o*(0.163876818237)*x_ref[1]**(o-1)+(-0.881648295139)
26350            ref[3,3,2]=o*(0.460250347501)*x_ref[2]**(o-1)+(0.278384518072)
26351            ref[3,4,0]=o*(-0.235115463614)*x_ref[0]**(o-1)+(-0.608162950212)
26352            ref[3,4,1]=o*(-0.942527781961)*x_ref[1]**(o-1)+(-0.473027994027)
26353            ref[3,4,2]=o*(0.784701664346)*x_ref[2]**(o-1)+(0.67497154466)
26354          res=grad(arg,where=w_ref)
26355          sub=res.substitute({arg:s})
26356          self.failUnless(isinstance(res,Symbol),"wrong type of result.")
26357          self.failUnlessEqual(res.getShape(),(4, 5)+(dim,),"wrong shape of result.")
26358          self.failUnless(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
26359       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
26360       def test_grad_onFunction_fromSymbol_ContinuousFunction_rank3(self):
26361          """
26362          tests gradient for rank 3 Symbol on the Function
26363    
26364          assumptions: ContinuousFunction(self.domain) exists
26365                       self.domain supports gardient on Function
26366          """
26367          o=self.order
26368          dim=self.domain.getDim()
26369          w_ref=Function(self.domain)
26370          x_ref=w_ref.getX()
26371          w=ContinuousFunction(self.domain)
26372          x=w.getX()
26373          arg=Symbol(shape=(6, 2, 2),dim=dim)
26374          s=Data(0,(6, 2, 2),w)
26375          ref=Data(0,(6, 2, 2)+(dim,),w_ref)
26376          if dim==2:
26377            s[0,0,0]=(-0.19873307647)*x[0]**o+(-0.402324928722)*x[0]+(0.78581260176)*x[1]**o+(0.855692742935)*x[1]
26378            s[0,0,1]=(-0.976563405673)*x[0]**o+(0.100149365141)*x[0]+(0.630689651275)*x[1]**o+(0.601727769629)*x[1]
26379            s[0,1,0]=(-0.832835486573)*x[0]**o+(0.0671587043511)*x[0]+(-0.610210594342)*x[1]**o+(-0.436026877569)*x[1]
26380            s[0,1,1]=(0.292942538448)*x[0]**o+(0.0385459359421)*x[0]+(0.790299248934)*x[1]**o+(-0.319413494032)*x[1]
26381            s[1,0,0]=(0.58698003273)*x[0]**o+(0.613088892876)*x[0]+(0.552617483007)*x[1]**o+(0.720306398451)*x[1]
26382            s[1,0,1]=(0.955352789796)*x[0]**o+(0.174378913925)*x[0]+(-0.0314000136685)*x[1]**o+(0.959578237088)*x[1]
26383            s[1,1,0]=(0.281022820802)*x[0]**o+(0.326052665369)*x[0]+(-0.492525348509)*x[1]**o+(-0.466634839923)*x[1]
26384            s[1,1,1]=(0.479963735062)*x[0]**o+(-0.779437072555)*x[0]+(-0.208397089582)*x[1]**o+(-0.303640352239)*x[1]
26385            s[2,0,0]=(0.434668114042)*x[0]**o+(0.0691902144608)*x[0]+(-0.177103703295)*x[1]**o+(0.91338709789)*x[1]
26386            s[2,0,1]=(-0.476825738275)*x[0]**o+(0.819380857167)*x[0]+(-0.661832108828)*x[1]**o+(0.873879046431)*x[1]
26387            s[2,1,0]=(0.30919914009)*x[0]**o+(-0.0366057876782)*x[0]+(-0.966956881285)*x[1]**o+(-0.829788683577)*x[1]
26388            s[2,1,1]=(-0.168382165296)*x[0]**o+(-0.682198962507)*x[0]+(0.190572223366)*x[1]**o+(-0.667568574676)*x[1]
26389            s[3,0,0]=(0.668658559933)*x[0]**o+(-0.253060573754)*x[0]+(-0.864766645952)*x[1]**o+(-0.714197991697)*x[1]
26390            s[3,0,1]=(0.538191340464)*x[0]**o+(0.806266803991)*x[0]+(0.437103643795)*x[1]**o+(0.972593986026)*x[1]
26391            s[3,1,0]=(-0.120672797742)*x[0]**o+(0.840236886959)*x[0]+(-0.279061306399)*x[1]**o+(0.119529093461)*x[1]
26392            s[3,1,1]=(-0.405723067833)*x[0]**o+(-0.964291783264)*x[0]+(0.201561553981)*x[1]**o+(0.882148297909)*x[1]
26393            s[4,0,0]=(-0.501360654417)*x[0]**o+(-0.977210439162)*x[0]+(0.0742786636276)*x[1]**o+(-0.831462191269)*x[1]
26394            s[4,0,1]=(-0.354758190164)*x[0]**o+(0.737302507124)*x[0]+(-0.221806769305)*x[1]**o+(-0.0261943694435)*x[1]
26395            s[4,1,0]=(-0.921367050665)*x[0]**o+(-0.77028348328)*x[0]+(-0.799765110774)*x[1]**o+(-0.708684233564)*x[1]
26396            s[4,1,1]=(-0.764817738089)*x[0]**o+(0.13308831245)*x[0]+(-0.0835084988678)*x[1]**o+(0.181328374835)*x[1]
26397            s[5,0,0]=(0.0795012634978)*x[0]**o+(0.527681277019)*x[0]+(-0.0656230383346)*x[1]**o+(0.0884801523765)*x[1]
26398            s[5,0,1]=(-0.316260178996)*x[0]**o+(-0.372232635711)*x[0]+(0.868288352534)*x[1]**o+(0.22823979163)*x[1]
26399            s[5,1,0]=(0.655698586327)*x[0]**o+(-0.734551617528)*x[0]+(-0.627595993352)*x[1]**o+(0.485738750199)*x[1]
26400            s[5,1,1]=(-0.522687357394)*x[0]**o+(-0.232523849025)*x[0]+(0.559349644178)*x[1]**o+(-0.640468984193)*x[1]
26401            ref[0,0,0,0]=o*(-0.19873307647)*x_ref[0]**(o-1)+(-0.402324928722)
26402            ref[0,0,0,1]=o*(0.78581260176)*x_ref[1]**(o-1)+(0.855692742935)
26403            ref[0,0,1,0]=o*(-0.976563405673)*x_ref[0]**(o-1)+(0.100149365141)
26404            ref[0,0,1,1]=o*(0.630689651275)*x_ref[1]**(o-1)+(0.601727769629)
26405            ref[0,1,0,0]=o*(-0.832835486573)*x_ref[0]**(o-1)+(0.0671587043511)
26406            ref[0,1,0,1]=o*(-0.610210594342)*x_ref[1]**(o-1)+(-0.436026877569)
26407            ref[0,1,1,0]=o*(0.292942538448)*x_ref[0]**(o-1)+(0.0385459359421)
26408            ref[0,1,1,1]=o*(0.790299248934)*x_ref[1]**(o-1)+(-0.319413494032)
26409            ref[1,0,0,0]=o*(0.58698003273)*x_ref[0]**(o-1)+(0.613088892876)
26410            ref[1,0,0,1]=o*(0.552617483007)*x_ref[1]**(o-1)+(0.720306398451)
26411            ref[1,0,1,0]=o*(0.955352789796)*x_ref[0]**(o-1)+(0.174378913925)
26412            ref[1,0,1,1]=o*(-0.0314000136685)*x_ref[1]**(o-1)+(0.959578237088)
26413            ref[1,1,0,0]=o*(0.281022820802)*x_ref[0]**(o-1)+(0.326052665369)
26414            ref[1,1,0,1]=o*(-0.492525348509)*x_ref[1]**(o-1)+(-0.466634839923)
26415            ref[1,1,1,0]=o*(0.479963735062)*x_ref[0]**(o-1)+(-0.779437072555)
26416            ref[1,1,1,1]=o*(-0.208397089582)*x_ref[1]**(o-1)+(-0.303640352239)
26417            ref[2,0,0,0]=o*(0.434668114042)*x_ref[0]**(o-1)+(0.0691902144608)
26418            ref[2,0,0,1]=o*(-0.177103703295)*x_ref[1]**(o-1)+(0.91338709789)
26419            ref[2,0,1,0]=o*(-0.476825738275)*x_ref[0]**(o-1)+(0.819380857167)
26420            ref[2,0,1,1]=o*(-0.661832108828)*x_ref[1]**(o-1)+(0.873879046431)
26421            ref[2,1,0,0]=o*(0.30919914009)*x_ref[0]**(o-1)+(-0.0366057876782)
26422            ref[2,1,0,1]=o*(-0.966956881285)*x_ref[1]**(o-1)+(-0.829788683577)
26423            ref[2,1,1,0]=o*(-0.168382165296)*x_ref[0]**(o-1)+(-0.682198962507)
26424            ref[2,1,1,1]=o*(0.190572223366)*x_ref[1]**(o-1)+(-0.667568574676)
26425            ref[3,0,0,0]=o*(0.668658559933)*x_ref[0]**(o-1)+(-0.253060573754)
26426            ref[3,0,0,1]=o*(-0.864766645952)*x_ref[1]**(o-1)+(-0.714197991697)
26427            ref[3,0,1,0]=o*(0.538191340464)*x_ref[0]**(o-1)+(0.806266803991)
26428            ref[3,0,1,1]=o*(0.437103643795)*x_ref[1]**(o-1)+(0.972593986026)
26429            ref[3,1,0,0]=o*(-0.120672797742)*x_ref[0]**(o-1)+(0.840236886959)
26430            ref[3,1,0,1]=o*(-0.279061306399)*x_ref[1]**(o-1)+(0.119529093461)
26431            ref[3,1,1,0]=o*(-0.405723067833)*x_ref[0]**(o-1)+(-0.964291783264)
26432            ref[3,1,1,1]=o*(0.201561553981)*x_ref[1]**(o-1)+(0.882148297909)
26433            ref[4,0,0,0]=o*(-0.501360654417)*x_ref[0]**(o-1)+(-0.977210439162)
26434            ref[4,0,0,1]=o*(0.0742786636276)*x_ref[1]**(o-1)+(-0.831462191269)
26435            ref[4,0,1,0]=o*(-0.354758190164)*x_ref[0]**(o-1)+(0.737302507124)
26436            ref[4,0,1,1]=o*(-0.221806769305)*x_ref[1]**(o-1)+(-0.0261943694435)
26437            ref[4,1,0,0]=o*(-0.921367050665)*x_ref[0]**(o-1)+(-0.77028348328)
26438            ref[4,1,0,1]=o*(-0.799765110774)*x_ref[1]**(o-1)+(-0.708684233564)
26439            ref[4,1,1,0]=o*(-0.764817738089)*x_ref[0]**(o-1)+(0.13308831245)
26440            ref[4,1,1,1]=o*(-0.0835084988678)*x_ref[1]**(o-1)+(0.181328374835)
26441            ref[5,0,0,0]=o*(0.0795012634978)*x_ref[0]**(o-1)+(0.527681277019)
26442            ref[5,0,0,1]=o*(-0.0656230383346)*x_ref[1]**(o-1)+(0.0884801523765)
26443            ref[5,0,1,0]=o*(-0.316260178996)*x_ref[0]**(o-1)+(-0.372232635711)
26444            ref[5,0,1,1]=o*(0.868288352534)*x_ref[1]**(o-1)+(0.22823979163)
26445            ref[5,1,0,0]=o*(0.655698586327)*x_ref[0]**(o-1)+(-0.734551617528)
26446            ref[5,1,0,1]=o*(-0.627595993352)*x_ref[1]**(o-1)+(0.485738750199)
26447            ref[5,1,1,0]=o*(-0.522687357394)*x_ref[0]**(o-1)+(-0.232523849025)
26448            ref[5,1,1,1]=o*(0.559349644178)*x_ref[1]**(o-1)+(-0.640468984193)
26449          else:
26450            s[0,0,0]=(-0.252254362053)*x[0]**o+(-0.73201258434)*x[0]+(0.129279219807)*x[1]**o+(0.739511847421)*x[1]+(-0.335757163655)*x[2]**o+(0.645975465365)*x[2]
26451            s[0,0,1]=(-0.735055416054)*x[0]**o+(-0.392972979059)*x[0]+(-0.400312505739)*x[1]**o+(-0.431371712491)*x[1]+(0.570395624547)*x[2]**o+(0.138472351049)*x[2]
26452            s[0,1,0]=(-0.000809920184319)*x[0]**o+(0.39610549699)*x[0]+(0.46183657032)*x[1]**o+(-0.90835208084)*x[1]+(0.359160987844)*x[2]**o+(0.63185061127)*x[2]
26453            s[0,1,1]=(0.627804065013)*x[0]**o+(-0.616378680528)*x[0]+(-0.623715533085)*x[1]**o+(-0.457832375425)*x[1]+(-0.274712768232)*x[2]**o+(0.425333514519)*x[2]
26454            s[1,0,0]=(-0.901107526813)*x[0]**o+(0.0680326855019)*x[0]+(-0.24023047937)*x[1]**o+(0.33244773534)*x[1]+(0.649715117184)*x[2]**o+(-0.832757442484)*x[2]
26455            s[1,0,1]=(0.419698786285)*x[0]**o+(-0.929558931125)*x[0]+(-0.211068611062)*x[1]**o+(-0.308568292995)*x[1]+(-0.302460643894)*x[2]**o+(-0.792090369968)*x[2]
26456            s[1,1,0]=(-0.350071906565)*x[0]**o+(0.915476959141)*x[0]+(0.511206427652)*x[1]**o+(0.925740134945)*x[1]+(-0.163642337237)*x[2]**o+(0.466249765823)*x[2]
26457            s[1,1,1]=(-0.00679707570295)*x[0]**o+(-0.20076295244)*x[0]+(0.264205579203)*x[1]**o+(-0.411292187293)*x[1]+(-0.934377917835)*x[2]**o+(0.634215851155)*x[2]
26458            s[2,0,0]=(-0.324841664958)*x[0]**o+(-0.956529004217)*x[0]+(-0.918338753073)*x[1]**o+(0.626923365653)*x[1]+(-0.799444332565)*x[2]**o+(-0.0695464844552)*x[2]
26459            s[2,0,1]=(0.506623201982)*x[0]**o+(-0.149035848663)*x[0]+(-0.238527222625)*x[1]**o+(0.179414470428)*x[1]+(-0.830587331222)*x[2]**o+(-0.771223952622)*x[2]
26460            s[2,1,0]=(-0.600971886655)*x[0]**o+(0.578997478246)*x[0]+(0.307807603149)*x[1]**o+(-0.187632470569)*x[1]+(0.715704085441)*x[2]**o+(0.666008020335)*x[2]
26461            s[2,1,1]=(-0.927640726378)*x[0]**o+(-0.615258128661)*x[0]+(0.0458637924464)*x[1]**o+(0.316776923148)*x[1]+(-0.816443096595)*x[2]**o+(0.586050614098)*x[2]
26462            s[3,0,0]=(0.0116773788954)*x[0]**o+(-0.450016183617)*x[0]+(-0.722050331425)*x[1]**o+(-0.752741628658)*x[1]+(0.0807023425045)*x[2]**o+(-0.888353661711)*x[2]
26463            s[3,0,1]=(0.774410128748)*x[0]**o+(0.00319037654241)*x[0]+(-0.872810066503)*x[1]**o+(-0.667066572773)*x[1]+(0.87558896843)*x[2]**o+(-0.691829241879)*x[2]
26464            s[3,1,0]=(-0.81762346888)*x[0]**o+(0.117005969026)*x[0]+(-0.745835352632)*x[1]**o+(-0.162993479637)*x[1]+(0.259977485657)*x[2]**o+(-0.4154446656)*x[2]
26465            s[3,1,1]=(0.0202189083822)*x[0]**o+(0.276300397225)*x[0]+(-0.473252990801)*x[1]**o+(0.139373130343)*x[1]+(0.236401212883)*x[2]**o+(0.250980379862)*x[2]
26466            s[4,0,0]=(0.114221091454)*x[0]**o+(0.956199921345)*x[0]+(0.920335553649)*x[1]**o+(0.953720056733)*x[1]+(-0.869205945463)*x[2]**o+(-0.702596947421)*x[2]
26467            s[4,0,1]=(0.242788249724)*x[0]**o+(0.484618105306)*x[0]+(-0.0856836792276)*x[1]**o+(0.314175782784)*x[1]+(-0.462603325333)*x[2]**o+(-0.527952799625)*x[2]
26468            s[4,1,0]=(0.124168860106)*x[0]**o+(-0.846086223242)*x[0]+(-0.536186421788)*x[1]**o+(-0.103140610306)*x[1]+(-0.115670483732)*x[2]**o+(0.771594201067)*x[2]
26469            s[4,1,1]=(0.649717322503)*x[0]**o+(0.911557314842)*x[0]+(-0.498767014909)*x[1]**o+(0.647065328805)*x[1]+(0.722903839932)*x[2]**o+(0.514148167148)*x[2]
26470            s[5,0,0]=(-0.380297540184)*x[0]**o+(-0.485514278978)*x[0]+(0.785198036928)*x[1]**o+(-0.0846164275939)*x[1]+(-0.252406925767)*x[2]**o+(-0.223499486716)*x[2]
26471            s[5,0,1]=(-0.184173490174)*x[0]**o+(0.569523639256)*x[0]+(-0.294243155077)*x[1]**o+(-0.323071302538)*x[1]+(0.661442924711)*x[2]**o+(0.640705614167)*x[2]
26472            s[5,1,0]=(0.110804523334)*x[0]**o+(-0.933148550901)*x[0]+(-0.664439117013)*x[1]**o+(-0.33712595594)*x[1]+(0.0561563633834)*x[2]**o+(-0.728089270393)*x[2]
26473            s[5,1,1]=(-0.474826954962)*x[0]**o+(0.953336718849)*x[0]+(0.616224037612)*x[1]**o+(0.596223200958)*x[1]+(-0.790460006091)*x[2]**o+(0.580623251887)*x[2]
26474            ref[0,0,0,0]=o*(-0.252254362053)*x_ref[0]**(o-1)+(-0.73201258434)
26475            ref[0,0,0,1]=o*(0.129279219807)*x_ref[1]**(o-1)+(0.739511847421)
26476            ref[0,0,0,2]=o*(-0.335757163655)*x_ref[2]**(o-1)+(0.645975465365)
26477            ref[0,0,1,0]=o*(-0.735055416054)*x_ref[0]**(o-1)+(-0.392972979059)
26478            ref[0,0,1,1]=o*(-0.400312505739)*x_ref[1]**(o-1)+(-0.431371712491)
26479            ref[0,0,1,2]=o*(0.570395624547)*x_ref[2]**(o-1)+(0.138472351049)
26480            ref[0,1,0,0]=o*(-0.000809920184319)*x_ref[0]**(o-1)+(0.39610549699)
26481            ref[0,1,0,1]=o*(0.46183657032)*x_ref[1]**(o-1)+(-0.90835208084)
26482            ref[0,1,0,2]=o*(0.359160987844)*x_ref[2]**(o-1)+(0.63185061127)
26483            ref[0,1,1,0]=o*(0.627804065013)*x_ref[0]**(o-1)+(-0.616378680528)
26484            ref[0,1,1,1]=o*(-0.623715533085)*x_ref[1]**(o-1)+(-0.457832375425)
26485            ref[0,1,1,2]=o*(-0.274712768232)*x_ref[2]**(o-1)+(0.425333514519)
26486            ref[1,0,0,0]=o*(-0.901107526813)*x_ref[0]**(o-1)+(0.0680326855019)
26487            ref[1,0,0,1]=o*(-0.24023047937)*x_ref[1]**(o-1)+(0.33244773534)
26488            ref[1,0,0,2]=o*(0.649715117184)*x_ref[2]**(o-1)+(-0.832757442484)
26489            ref[1,0,1,0]=o*(0.419698786285)*x_ref[0]**(o-1)+(-0.929558931125)
26490            ref[1,0,1,1]=o*(-0.211068611062)*x_ref[1]**(o-1)+(-0.308568292995)
26491            ref[1,0,1,2]=o*(-0.302460643894)*x_ref[2]**(o-1)+(-0.792090369968)
26492            ref[1,1,0,0]=o*(-0.350071906565)*x_ref[0]**(o-1)+(0.915476959141)
26493            ref[1,1,0,1]=o*(0.511206427652)*x_ref[1]**(o-1)+(0.925740134945)
26494            ref[1,1,0,2]=o*(-0.163642337237)*x_ref[2]**(o-1)+(0.466249765823)
26495            ref[1,1,1,0]=o*(-0.00679707570295)*x_ref[0]**(o-1)+(-0.20076295244)
26496            ref[1,1,1,1]=o*(0.264205579203)*x_ref[1]**(o-1)+(-0.411292187293)
26497            ref[1,1,1,2]=o*(-0.934377917835)*x_ref[2]**(o-1)+(0.634215851155)
26498            ref[2,0,0,0]=o*(-0.324841664958)*x_ref[0]**(o-1)+(-0.956529004217)
26499            ref[2,0,0,1]=o*(-0.918338753073)*x_ref[1]**(o-1)+(0.626923365653)
26500            ref[2,0,0,2]=o*(-0.799444332565)*x_ref[2]**(o-1)+(-0.0695464844552)
26501            ref[2,0,1,0]=o*(0.506623201982)*x_ref[0]**(o-1)+(-0.149035848663)
26502            ref[2,0,1,1]=o*(-0.238527222625)*x_ref[1]**(o-1)+(0.179414470428)
26503            ref[2,0,1,2]=o*(-0.830587331222)*x_ref[2]**(o-1)+(-0.771223952622)
26504            ref[2,1,0,0]=o*(-0.600971886655)*x_ref[0]**(o-1)+(0.578997478246)
26505            ref[2,1,0,1]=o*(0.307807603149)*x_ref[1]**(o-1)+(-0.187632470569)
26506            ref[2,1,0,2]=o*(0.715704085441)*x_ref[2]**(o-1)+(0.666008020335)
26507            ref[2,1,1,0]=o*(-0.927640726378)*x_ref[0]**(o-1)+(-0.615258128661)
26508            ref[2,1,1,1]=o*(0.0458637924464)*x_ref[1]**(o-1)+(0.316776923148)
26509            ref[2,1,1,2]=o*(-0.816443096595)*x_ref[2]**(o-1)+(0.586050614098)
26510            ref[3,0,0,0]=o*(0.0116773788954)*x_ref[0]**(o-1)+(-0.450016183617)
26511            ref[3,0,0,1]=o*(-0.722050331425)*x_ref[1]**(o-1)+(-0.752741628658)
26512            ref[3,0,0,2]=o*(0.0807023425045)*x_ref[2]**(o-1)+(-0.888353661711)
26513            ref[3,0,1,0]=o*(0.774410128748)*x_ref[0]**(o-1)+(0.00319037654241)
26514            ref[3,0,1,1]=o*(-0.872810066503)*x_ref[1]**(o-1)+(-0.667066572773)
26515            ref[3,0,1,2]=o*(0.87558896843)*x_ref[2]**(o-1)+(-0.691829241879)
26516            ref[3,1,0,0]=o*(-0.81762346888)*x_ref[0]**(o-1)+(0.117005969026)
26517            ref[3,1,0,1]=o*(-0.745835352632)*x_ref[1]**(o-1)+(-0.162993479637)
26518            ref[3,1,0,2]=o*(0.259977485657)*x_ref[2]**(o-1)+(-0.4154446656)
26519            ref[3,1,1,0]=o*(0.0202189083822)*x_ref[0]**(o-1)+(0.276300397225)
26520            ref[3,1,1,1]=o*(-0.473252990801)*x_ref[1]**(o-1)+(0.139373130343)
26521            ref[3,1,1,2]=o*(0.236401212883)*x_ref[2]**(o-1)+(0.250980379862)
26522            ref[4,0,0,0]=o*(0.114221091454)*x_ref[0]**(o-1)+(0.956199921345)
26523            ref[4,0,0,1]=o*(0.920335553649)*x_ref[1]**(o-1)+(0.953720056733)
26524            ref[4,0,0,2]=o*(-0.869205945463)*x_ref[2]**(o-1)+(-0.702596947421)
26525            ref[4,0,1,0]=o*(0.242788249724)*x_ref[0]**(o-1)+(0.484618105306)
26526            ref[4,0,1,1]=o*(-0.0856836792276)*x_ref[1]**(o-1)+(0.314175782784)
26527            ref[4,0,1,2]=o*(-0.462603325333)*x_ref[2]**(o-1)+(-0.527952799625)
26528            ref[4,1,0,0]=o*(0.124168860106)*x_ref[0]**(o-1)+(-0.846086223242)
26529            ref[4,1,0,1]=o*(-0.536186421788)*x_ref[1]**(o-1)+(-0.103140610306)
26530            ref[4,1,0,2]=o*(-0.115670483732)*x_ref[2]**(o-1)+(0.771594201067)
26531            ref[4,1,1,0]=o*(0.649717322503)*x_ref[0]**(o-1)+(0.911557314842)
26532            ref[4,1,1,1]=o*(-0.498767014909)*x_ref[1]**(o-1)+(0.647065328805)
26533            ref[4,1,1,2]=o*(0.722903839932)*x_ref[2]**(o-1)+(0.514148167148)
26534            ref[5,0,0,0]=o*(-0.380297540184)*x_ref[0]**(o-1)+(-0.485514278978)
26535            ref[5,0,0,1]=o*(0.785198036928)*x_ref[1]**(o-1)+(-0.0846164275939)
26536            ref[5,0,0,2]=o*(-0.252406925767)*x_ref[2]**(o-1)+(-0.223499486716)
26537            ref[5,0,1,0]=o*(-0.184173490174)*x_ref[0]**(o-1)+(0.569523639256)
26538            ref[5,0,1,1]=o*(-0.294243155077)*x_ref[1]**(o-1)+(-0.323071302538)
26539            ref[5,0,1,2]=o*(0.661442924711)*x_ref[2]**(o-1)+(0.640705614167)
26540            ref[5,1,0,0]=o*(0.110804523334)*x_ref[0]**(o-1)+(-0.933148550901)
26541            ref[5,1,0,1]=o*(-0.664439117013)*x_ref[1]**(o-1)+(-0.33712595594)
26542            ref[5,1,0,2]=o*(0.0561563633834)*x_ref[2]**(o-1)+(-0.728089270393)
26543            ref[5,1,1,0]=o*(-0.474826954962)*x_ref[0]**(o-1)+(0.953336718849)
26544            ref[5,1,1,1]=o*(0.616224037612)*x_ref[1]**(o-1)+(0.596223200958)
26545            ref[5,1,1,2]=o*(-0.790460006091)*x_ref[2]**(o-1)+(0.580623251887)
26546          res=grad(arg,where=w_ref)
26547          sub=res.substitute({arg:s})
26548          self.failUnless(isinstance(res,Symbol),"wrong type of result.")
26549          self.failUnlessEqual(res.getShape(),(6, 2, 2)+(dim,),"wrong shape of result.")
26550          self.failUnless(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
26551       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
26552       def test_grad_onFunction_fromSymbol_Solution_rank0(self):
26553          """
26554          tests gradient for rank 0 Symbol on the Function
26555    
26556          assumptions: Solution(self.domain) exists
26557                       self.domain supports gardient on Function
26558          """
26559          o=self.order
26560          dim=self.domain.getDim()
26561          w_ref=Function(self.domain)
26562          x_ref=w_ref.getX()
26563          w=Solution(self.domain)
26564          x=w.getX()
26565          arg=Symbol(shape=(),dim=dim)
26566          s=Data(0,(),w)
26567          ref=Data(0,()+(dim,),w_ref)
26568          if dim==2:
26569            s=(-0.661534580714)*x[0]**o+(0.108482570281)*x[0]+(0.930475222346)*x[1]**o+(-0.560831828628)*x[1]
26570            ref[0]=o*(-0.661534580714)*x_ref[0]**(o-1)+(0.108482570281)
26571            ref[1]=o*(0.930475222346)*x_ref[1]**(o-1)+(-0.560831828628)
26572          else:
26573            s=(0.661787087481)*x[0]**o+(0.789038424245)*x[0]+(-0.172842194551)*x[1]**o+(-0.313156164165)*x[1]+(-0.521097764776)*x[2]**o+(0.879698074812)*x[2]
26574            ref[0]=o*(0.661787087481)*x_ref[0]**(o-1)+(0.789038424245)
26575            ref[1]=o*(-0.172842194551)*x_ref[1]**(o-1)+(-0.313156164165)
26576            ref[2]=o*(-0.521097764776)*x_ref[2]**(o-1)+(0.879698074812)
26577          res=grad(arg,where=w_ref)
26578          sub=res.substitute({arg:s})
26579          self.failUnless(isinstance(res,Symbol),"wrong type of result.")
26580          self.failUnlessEqual(res.getShape(),()+(dim,),"wrong shape of result.")
26581          self.failUnless(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
26582       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
26583       def test_grad_onFunction_fromSymbol_Solution_rank1(self):
26584          """
26585          tests gradient for rank 1 Symbol on the Function
26586    
26587          assumptions: Solution(self.domain) exists
26588                       self.domain supports gardient on Function
26589          """
26590          o=self.order
26591          dim=self.domain.getDim()
26592          w_ref=Function(self.domain)
26593          x_ref=w_ref.getX()
26594          w=Solution(self.domain)
26595          x=w.getX()
26596          arg=Symbol(shape=(2,),dim=dim)
26597          s=Data(0,(2,),w)
26598          ref=Data(0,(2,)+(dim,),w_ref)
26599          if dim==2:
26600            s[0]=(-0.190630799823)*x[0]**o+(0.235686163485)*x[0]+(0.568780014934)*x[1]**o+(0.869208291526)*x[1]
26601            s[1]=(-0.637753770052)*x[0]**o+(-0.184551176704)*x[0]+(0.678386051731)*x[1]**o+(0.103311313677)*x[1]
26602            ref[0,0]=o*(-0.190630799823)*x_ref[0]**(o-1)+(0.235686163485)
26603            ref[0,1]=o*(0.568780014934)*x_ref[1]**(o-1)+(0.869208291526)
26604            ref[1,0]=o*(-0.637753770052)*x_ref[0]**(o-1)+(-0.184551176704)
26605            ref[1,1]=o*(0.678386051731)*x_ref[1]**(o-1)+(0.103311313677)
26606          else:
26607            s[0]=(0.65617389354)*x[0]**o+(-0.41233134159)*x[0]+(-0.471086791763)*x[1]**o+(0.399070328851)*x[1]+(-0.30038453779)*x[2]**o+(0.637544697206)*x[2]
26608            s[1]=(0.0974925575768)*x[0]**o+(0.968900636228)*x[0]+(-0.386954772478)*x[1]**o+(0.234655265071)*x[1]+(0.755549468261)*x[2]**o+(-0.119269665245)*x[2]
26609            ref[0,0]=o*(0.65617389354)*x_ref[0]**(o-1)+(-0.41233134159)
26610            ref[0,1]=o*(-0.471086791763)*x_ref[1]**(o-1)+(0.399070328851)
26611            ref[0,2]=o*(-0.30038453779)*x_ref[2]**(o-1)+(0.637544697206)
26612            ref[1,0]=o*(0.0974925575768)*x_ref[0]**(o-1)+(0.968900636228)
26613            ref[1,1]=o*(-0.386954772478)*x_ref[1]**(o-1)+(0.234655265071)
26614            ref[1,2]=o*(0.755549468261)*x_ref[2]**(o-1)+(-0.119269665245)
26615          res=grad(arg,where=w_ref)
26616          sub=res.substitute({arg:s})
26617          self.failUnless(isinstance(res,Symbol),"wrong type of result.")
26618          self.failUnlessEqual(res.getShape(),(2,)+(dim,),"wrong shape of result.")
26619          self.failUnless(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
26620       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
26621       def test_grad_onFunction_fromSymbol_Solution_rank2(self):
26622          """
26623          tests gradient for rank 2 Symbol on the Function
26624    
26625          assumptions: Solution(self.domain) exists
26626                       self.domain supports gardient on Function
26627          """
26628          o=self.order
26629          dim=self.domain.getDim()
26630          w_ref=Function(self.domain)
26631          x_ref=w_ref.getX()
26632          w=Solution(self.domain)
26633          x=w.getX()
26634          arg=Symbol(shape=(4, 5),dim=dim)
26635          s=Data(0,(4, 5),w)
26636          ref=Data(0,(4, 5)+(dim,),w_ref)
26637          if dim==2:
26638            s[0,0]=(-0.300429908481)*x[0]**o+(-0.550176774021)*x[0]+(0.313544523598)*x[1]**o+(0.191557196291)*x[1]
26639            s[0,1]=(0.00116867375625)*x[0]**o+(0.126481551395)*x[0]+(-0.525739733277)*x[1]**o+(0.628228355029)*x[1]
26640            s[0,2]=(-0.790055765486)*x[0]**o+(-0.118003096828)*x[0]+(-0.620290760565)*x[1]**o+(-0.460021810788)*x[1]
26641            s[0,3]=(0.800717644254)*x[0]**o+(-0.685505835346)*x[0]+(-0.382046994517)*x[1]**o+(-0.765159598284)*x[1]
26642            s[0,4]=(-0.295987131319)*x[0]**o+(-0.0324335264934)*x[0]+(-0.583454515945)*x[1]**o+(-0.137940341278)*x[1]
26643            s[1,0]=(-0.186271508459)*x[0]**o+(-0.0457260753159)*x[0]+(-0.83853233149)*x[1]**o+(0.730348417106)*x[1]
26644            s[1,1]=(-0.678758709357)*x[0]**o+(-0.352619765194)*x[0]+(0.850836393219)*x[1]**o+(-0.749995270113)*x[1]
26645            s[1,2]=(0.598004774999)*x[0]**o+(-0.764313433057)*x[0]+(-0.892691377674)*x[1]**o+(0.436164793316)*x[1]
26646            s[1,3]=(-0.114398805139)*x[0]**o+(0.170882318781)*x[0]+(-0.159446706481)*x[1]**o+(0.168268554115)*x[1]
26647            s[1,4]=(0.245440053023)*x[0]**o+(-0.391101810385)*x[0]+(-0.0621967792961)*x[1]**o+(-0.25914597073)*x[1]
26648            s[2,0]=(0.758930908002)*x[0]**o+(-0.137399611576)*x[0]+(-0.524730401698)*x[1]**o+(-0.68595790282)*x[1]
26649            s[2,1]=(-0.956320437139)*x[0]**o+(-0.741920593412)*x[0]+(0.470411496813)*x[1]**o+(-0.912492685238)*x[1]
26650            s[2,2]=(0.386762534234)*x[0]**o+(0.297029046975)*x[0]+(-0.999949621409)*x[1]**o+(-0.273952756751)*x[1]
26651            s[2,3]=(-0.137635508969)*x[0]**o+(0.0502825343025)*x[0]+(-0.856424864287)*x[1]**o+(0.501432472431)*x[1]
26652            s[2,4]=(0.927974425929)*x[0]**o+(-0.602904477506)*x[0]+(0.766583044002)*x[1]**o+(0.070024577589)*x[1]
26653            s[3,0]=(0.336864984737)*x[0]**o+(0.0974502498452)*x[0]+(-0.820387387723)*x[1]**o+(0.022457213421)*x[1]
26654            s[3,1]=(0.879517107747)*x[0]**o+(0.267883865556)*x[0]+(-0.795732666749)*x[1]**o+(0.81701302209)*x[1]
26655            s[3,2]=(-0.971853752113)*x[0]**o+(0.210482589767)*x[0]+(0.422058370831)*x[1]**o+(-0.0945771197357)*x[1]
26656            s[3,3]=(0.0130393893213)*x[0]**o+(0.331617264696)*x[0]+(-0.0460157855829)*x[1]**o+(0.513357385084)*x[1]
26657            s[3,4]=(-0.466291714481)*x[0]**o+(0.877178907345)*x[0]+(0.356001871079)*x[1]**o+(-0.755177274311)*x[1]
26658            ref[0,0,0]=o*(-0.300429908481)*x_ref[0]**(o-1)+(-0.550176774021)
26659            ref[0,0,1]=o*(0.313544523598)*x_ref[1]**(o-1)+(0.191557196291)
26660            ref[0,1,0]=o*(0.00116867375625)*x_ref[0]**(o-1)+(0.126481551395)
26661            ref[0,1,1]=o*(-0.525739733277)*x_ref[1]**(o-1)+(0.628228355029)
26662            ref[0,2,0]=o*(-0.790055765486)*x_ref[0]**(o-1)+(-0.118003096828)
26663            ref[0,2,1]=o*(-0.620290760565)*x_ref[1]**(o-1)+(-0.460021810788)
26664            ref[0,3,0]=o*(0.800717644254)*x_ref[0]**(o-1)+(-0.685505835346)
26665            ref[0,3,1]=o*(-0.382046994517)*x_ref[1]**(o-1)+(-0.765159598284)
26666            ref[0,4,0]=o*(-0.295987131319)*x_ref[0]**(o-1)+(-0.0324335264934)
26667            ref[0,4,1]=o*(-0.583454515945)*x_ref[1]**(o-1)+(-0.137940341278)
26668            ref[1,0,0]=o*(-0.186271508459)*x_ref[0]**(o-1)+(-0.0457260753159)
26669            ref[1,0,1]=o*(-0.83853233149)*x_ref[1]**(o-1)+(0.730348417106)
26670            ref[1,1,0]=o*(-0.678758709357)*x_ref[0]**(o-1)+(-0.352619765194)
26671            ref[1,1,1]=o*(0.850836393219)*x_ref[1]**(o-1)+(-0.749995270113)
26672            ref[1,2,0]=o*(0.598004774999)*x_ref[0]**(o-1)+(-0.764313433057)
26673            ref[1,2,1]=o*(-0.892691377674)*x_ref[1]**(o-1)+(0.436164793316)
26674            ref[1,3,0]=o*(-0.114398805139)*x_ref[0]**(o-1)+(0.170882318781)
26675            ref[1,3,1]=o*(-0.159446706481)*x_ref[1]**(o-1)+(0.168268554115)
26676            ref[1,4,0]=o*(0.245440053023)*x_ref[0]**(o-1)+(-0.391101810385)
26677            ref[1,4,1]=o*(-0.0621967792961)*x_ref[1]**(o-1)+(-0.25914597073)
26678            ref[2,0,0]=o*(0.758930908002)*x_ref[0]**(o-1)+(-0.137399611576)
26679            ref[2,0,1]=o*(-0.524730401698)*x_ref[1]**(o-1)+(-0.68595790282)
26680            ref[2,1,0]=o*(-0.956320437139)*x_ref[0]**(o-1)+(-0.741920593412)
26681            ref[2,1,1]=o*(0.470411496813)*x_ref[1]**(o-1)+(-0.912492685238)
26682            ref[2,2,0]=o*(0.386762534234)*x_ref[0]**(o-1)+(0.297029046975)
26683            ref[2,2,1]=o*(-0.999949621409)*x_ref[1]**(o-1)+(-0.273952756751)
26684            ref[2,3,0]=o*(-0.137635508969)*x_ref[0]**(o-1)+(0.0502825343025)
26685            ref[2,3,1]=o*(-0.856424864287)*x_ref[1]**(o-1)+(0.501432472431)
26686            ref[2,4,0]=o*(0.927974425929)*x_ref[0]**(o-1)+(-0.602904477506)
26687            ref[2,4,1]=o*(0.766583044002)*x_ref[1]**(o-1)+(0.070024577589)
26688            ref[3,0,0]=o*(0.336864984737)*x_ref[0]**(o-1)+(0.0974502498452)
26689            ref[3,0,1]=o*(-0.820387387723)*x_ref[1]**(o-1)+(0.022457213421)
26690            ref[3,1,0]=o*(0.879517107747)*x_ref[0]**(o-1)+(0.267883865556)
26691            ref[3,1,1]=o*(-0.795732666749)*x_ref[1]**(o-1)+(0.81701302209)
26692            ref[3,2,0]=o*(-0.971853752113)*x_ref[0]**(o-1)+(0.210482589767)
26693            ref[3,2,1]=o*(0.422058370831)*x_ref[1]**(o-1)+(-0.0945771197357)
26694            ref[3,3,0]=o*(0.0130393893213)*x_ref[0]**(o-1)+(0.331617264696)
26695            ref[3,3,1]=o*(-0.0460157855829)*x_ref[1]**(o-1)+(0.513357385084)
26696            ref[3,4,0]=o*(-0.466291714481)*x_ref[0]**(o-1)+(0.877178907345)
26697            ref[3,4,1]=o*(0.356001871079)*x_ref[1]**(o-1)+(-0.755177274311)
26698          else:
26699            s[0,0]=(-0.582848481634)*x[0]**o+(-0.799173040171)*x[0]+(-0.402728303622)*x[1]**o+(-0.294649773058)*x[1]+(-0.248183917161)*x[2]**o+(-0.182025430599)*x[2]
26700            s[0,1]=(0.421723448079)*x[0]**o+(-0.881083512259)*x[0]+(-0.411609580693)*x[1]**o+(-0.60866119666)*x[1]+(0.447246876403)*x[2]**o+(-0.566693550375)*x[2]
26701            s[0,2]=(0.676859700236)*x[0]**o+(-0.0721141912983)*x[0]+(-0.930202067587)*x[1]**o+(-0.779660291535)*x[1]+(-0.846576347271)*x[2]**o+(0.182815431369)*x[2]
26702            s[0,3]=(0.640898585384)*x[0]**o+(0.133026195724)*x[0]+(-0.264924898824)*x[1]**o+(0.984926461364)*x[1]+(-0.366473159006)*x[2]**o+(-0.893150501229)*x[2]
26703            s[0,4]=(-0.0617160479105)*x[0]**o+(-0.781163890754)*x[0]+(0.482406386837)*x[1]**o+(0.242984596118)*x[1]+(0.387455073331)*x[2]**o+(0.713852275793)*x[2]
26704            s[1,0]=(-0.261960056141)*x[0]**o+(0.289706307634)*x[0]+(0.33502315284)*x[1]**o+(0.373867353003)*x[1]+(0.988176700778)*x[2]**o+(0.821674109963)*x[2]
26705            s[1,1]=(-0.564538779546)*x[0]**o+(0.512720259636)*x[0]+(0.519794117449)*x[1]**o+(0.140310457627)*x[1]+(-0.987992481444)*x[2]**o+(-0.658619677691)*x[2]
26706            s[1,2]=(-0.94468459827)*x[0]**o+(-0.59503451145)*x[0]+(0.638928053728)*x[1]**o+(-0.426823410254)*x[1]+(0.698221019291)*x[2]**o+(0.584939961146)*x[2]
26707            s[1,3]=(-0.736608632072)*x[0]**o+(0.121237394007)*x[0]+(0.965644483539)*x[1]**o+(-0.69597048224)*x[1]+(-0.131814696207)*x[2]**o+(0.218156302554)*x[2]
26708            s[1,4]=(-0.68564146602)*x[0]**o+(-0.613073625086)*x[0]+(-0.480606344797)*x[1]**o+(0.305215204518)*x[1]+(-0.932537843561)*x[2]**o+(0.753998778964)*x[2]
26709            s[2,0]=(0.149366204787)*x[0]**o+(0.518985565336)*x[0]+(-0.108643244187)*x[1]**o+(-0.133769184691)*x[1]+(-0.91950647261)*x[2]**o+(-0.165713076313)*x[2]
26710            s[2,1]=(0.377574358299)*x[0]**o+(-0.881166371065)*x[0]+(0.859757091349)*x[1]**o+(-0.571419705867)*x[1]+(0.688875894062)*x[2]**o+(-0.475017852628)*x[2]
26711            s[2,2]=(-0.293556901343)*x[0]**o+(-0.21565327941)*x[0]+(-0.661622857503)*x[1]**o+(-0.822811400487)*x[1]+(0.773358448616)*x[2]**o+(0.687967954749)*x[2]
26712            s[2,3]=(-0.0678537895443)*x[0]**o+(-0.620817206574)*x[0]+(0.195444962807)*x[1]**o+(-0.802482456128)*x[1]+(0.839892027886)*x[2]**o+(0.53033825313)*x[2]
26713            s[2,4]=(-0.174133277232)*x[0]**o+(-0.11357878673)*x[0]+(0.896953765213)*x[1]**o+(-0.111411131996)*x[1]+(-0.911590351769)*x[2]**o+(-0.867631474956)*x[2]
26714            s[3,0]=(0.619809270826)*x[0]**o+(0.234416234461)*x[0]+(-0.265703869206)*x[1]**o+(-0.179792194117)*x[1]+(0.650878614932)*x[2]**o+(0.832933790635)*x[2]
26715            s[3,1]=(-0.464423972484)*x[0]**o+(-0.0792284263184)*x[0]+(0.591682473906)*x[1]**o+(-0.69612265297)*x[1]+(-0.847084735807)*x[2]**o+(0.406411159143)*x[2]
26716            s[3,2]=(-0.206502883044)*x[0]**o+(0.266143672088)*x[0]+(0.742487243777)*x[1]**o+(0.652888436702)*x[1]+(-0.638601136445)*x[2]**o+(-0.411202594715)*x[2]
26717            s[3,3]=(0.749860017366)*x[0]**o+(0.0712552207004)*x[0]+(0.932270746555)*x[1]**o+(-0.743243258158)*x[1]+(0.77742513611)*x[2]**o+(-0.0951940129286)*x[2]
26718            s[3,4]=(-0.736329018198)*x[0]**o+(-0.346737131331)*x[0]+(0.15155322637)*x[1]**o+(0.209410136584)*x[1]+(-0.283669919947)*x[2]**o+(-0.736677347286)*x[2]
26719            ref[0,0,0]=o*(-0.582848481634)*x_ref[0]**(o-1)+(-0.799173040171)
26720            ref[0,0,1]=o*(-0.402728303622)*x_ref[1]**(o-1)+(-0.294649773058)
26721            ref[0,0,2]=o*(-0.248183917161)*x_ref[2]**(o-1)+(-0.182025430599)
26722            ref[0,1,0]=o*(0.421723448079)*x_ref[0]**(o-1)+(-0.881083512259)
26723            ref[0,1,1]=o*(-0.411609580693)*x_ref[1]**(o-1)+(-0.60866119666)
26724            ref[0,1,2]=o*(0.447246876403)*x_ref[2]**(o-1)+(-0.566693550375)
26725            ref[0,2,0]=o*(0.676859700236)*x_ref[0]**(o-1)+(-0.0721141912983)
26726            ref[0,2,1]=o*(-0.930202067587)*x_ref[1]**(o-1)+(-0.779660291535)
26727            ref[0,2,2]=o*(-0.846576347271)*x_ref[2]**(o-1)+(0.182815431369)
26728            ref[0,3,0]=o*(0.640898585384)*x_ref[0]**(o-1)+(0.133026195724)
26729            ref[0,3,1]=o*(-0.264924898824)*x_ref[1]**(o-1)+(0.984926461364)
26730            ref[0,3,2]=o*(-0.366473159006)*x_ref[2]**(o-1)+(-0.893150501229)
26731            ref[0,4,0]=o*(-0.0617160479105)*x_ref[0]**(o-1)+(-0.781163890754)
26732            ref[0,4,1]=o*(0.482406386837)*x_ref[1]**(o-1)+(0.242984596118)
26733            ref[0,4,2]=o*(0.387455073331)*x_ref[2]**(o-1)+(0.713852275793)
26734            ref[1,0,0]=o*(-0.261960056141)*x_ref[0]**(o-1)+(0.289706307634)
26735            ref[1,0,1]=o*(0.33502315284)*x_ref[1]**(o-1)+(0.373867353003)
26736            ref[1,0,2]=o*(0.988176700778)*x_ref[2]**(o-1)+(0.821674109963)
26737            ref[1,1,0]=o*(-0.564538779546)*x_ref[0]**(o-1)+(0.512720259636)
26738            ref[1,1,1]=o*(0.519794117449)*x_ref[1]**(o-1)+(0.140310457627)
26739            ref[1,1,2]=o*(-0.987992481444)*x_ref[2]**(o-1)+(-0.658619677691)
26740            ref[1,2,0]=o*(-0.94468459827)*x_ref[0]**(o-1)+(-0.59503451145)
26741            ref[1,2,1]=o*(0.638928053728)*x_ref[1]**(o-1)+(-0.426823410254)
26742            ref[1,2,2]=o*(0.698221019291)*x_ref[2]**(o-1)+(0.584939961146)
26743            ref[1,3,0]=o*(-0.736608632072)*x_ref[0]**(o-1)+(0.121237394007)
26744            ref[1,3,1]=o*(0.965644483539)*x_ref[1]**(o-1)+(-0.69597048224)
26745            ref[1,3,2]=o*(-0.131814696207)*x_ref[2]**(o-1)+(0.218156302554)
26746            ref[1,4,0]=o*(-0.68564146602)*x_ref[0]**(o-1)+(-0.613073625086)
26747            ref[1,4,1]=o*(-0.480606344797)*x_ref[1]**(o-1)+(0.305215204518)
26748            ref[1,4,2]=o*(-0.932537843561)*x_ref[2]**(o-1)+(0.753998778964)
26749            ref[2,0,0]=o*(0.149366204787)*x_ref[0]**(o-1)+(0.518985565336)
26750            ref[2,0,1]=o*(-0.108643244187)*x_ref[1]**(o-1)+(-0.133769184691)
26751            ref[2,0,2]=o*(-0.91950647261)*x_ref[2]**(o-1)+(-0.165713076313)
26752            ref[2,1,0]=o*(0.377574358299)*x_ref[0]**(o-1)+(-0.881166371065)
26753            ref[2,1,1]=o*(0.859757091349)*x_ref[1]**(o-1)+(-0.571419705867)
26754            ref[2,1,2]=o*(0.688875894062)*x_ref[2]**(o-1)+(-0.475017852628)
26755            ref[2,2,0]=o*(-0.293556901343)*x_ref[0]**(o-1)+(-0.21565327941)
26756            ref[2,2,1]=o*(-0.661622857503)*x_ref[1]**(o-1)+(-0.822811400487)
26757            ref[2,2,2]=o*(0.773358448616)*x_ref[2]**(o-1)+(0.687967954749)
26758            ref[2,3,0]=o*(-0.0678537895443)*x_ref[0]**(o-1)+(-0.620817206574)
26759            ref[2,3,1]=o*(0.195444962807)*x_ref[1]**(o-1)+(-0.802482456128)
26760            ref[2,3,2]=o*(0.839892027886)*x_ref[2]**(o-1)+(0.53033825313)
26761            ref[2,4,0]=o*(-0.174133277232)*x_ref[0]**(o-1)+(-0.11357878673)
26762            ref[2,4,1]=o*(0.896953765213)*x_ref[1]**(o-1)+(-0.111411131996)
26763            ref[2,4,2]=o*(-0.911590351769)*x_ref[2]**(o-1)+(-0.867631474956)
26764            ref[3,0,0]=o*(0.619809270826)*x_ref[0]**(o-1)+(0.234416234461)
26765            ref[3,0,1]=o*(-0.265703869206)*x_ref[1]**(o-1)+(-0.179792194117)
26766            ref[3,0,2]=o*(0.650878614932)*x_ref[2]**(o-1)+(0.832933790635)
26767            ref[3,1,0]=o*(-0.464423972484)*x_ref[0]**(o-1)+(-0.0792284263184)
26768            ref[3,1,1]=o*(0.591682473906)*x_ref[1]**(o-1)+(-0.69612265297)
26769            ref[3,1,2]=o*(-0.847084735807)*x_ref[2]**(o-1)+(0.406411159143)
26770            ref[3,2,0]=o*(-0.206502883044)*x_ref[0]**(o-1)+(0.266143672088)
26771            ref[3,2,1]=o*(0.742487243777)*x_ref[1]**(o-1)+(0.652888436702)
26772            ref[3,2,2]=o*(-0.638601136445)*x_ref[2]**(o-1)+(-0.411202594715)
26773            ref[3,3,0]=o*(0.749860017366)*x_ref[0]**(o-1)+(0.0712552207004)
26774            ref[3,3,1]=o*(0.932270746555)*x_ref[1]**(o-1)+(-0.743243258158)
26775            ref[3,3,2]=o*(0.77742513611)*x_ref[2]**(o-1)+(-0.0951940129286)
26776            ref[3,4,0]=o*(-0.736329018198)*x_ref[0]**(o-1)+(-0.346737131331)
26777            ref[3,4,1]=o*(0.15155322637)*x_ref[1]**(o-1)+(0.209410136584)
26778            ref[3,4,2]=o*(-0.283669919947)*x_ref[2]**(o-1)+(-0.736677347286)
26779          res=grad(arg,where=w_ref)
26780          sub=res.substitute({arg:s})
26781          self.failUnless(isinstance(res,Symbol),"wrong type of result.")
26782          self.failUnlessEqual(res.getShape(),(4, 5)+(dim,),"wrong shape of result.")
26783          self.failUnless(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
26784       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
26785       def test_grad_onFunction_fromSymbol_Solution_rank3(self):
26786          """
26787          tests gradient for rank 3 Symbol on the Function
26788    
26789          assumptions: Solution(self.domain) exists
26790                       self.domain supports gardient on Function
26791          """
26792          o=self.order
26793          dim=self.domain.getDim()
26794          w_ref=Function(self.domain)
26795          x_ref=w_ref.getX()
26796          w=Solution(self.domain)
26797          x=w.getX()
26798          arg=Symbol(shape=(6, 2, 2),dim=dim)
26799          s=Data(0,(6, 2, 2),w)
26800          ref=Data(0,(6, 2, 2)+(dim,),w_ref)
26801          if dim==2:
26802            s[0,0,0]=(0.285489768558)*x[0]**o+(-0.814169283089)*x[0]+(-0.146214432938)*x[1]**o+(0.971176476923)*x[1]
26803            s[0,0,1]=(0.796197012783)*x[0]**o+(0.138854173842)*x[0]+(0.911141134854)*x[1]**o+(0.24230493445)*x[1]
26804            s[0,1,0]=(0.335306616869)*x[0]**o+(-0.346373461144)*x[0]+(0.485198289812)*x[1]**o+(-0.557460170056)*x[1]
26805            s[0,1,1]=(-0.202832958777)*x[0]**o+(0.202612852038)*x[0]+(-0.382959990066)*x[1]**o+(0.982713356847)*x[1]
26806            s[1,0,0]=(-0.732852201528)*x[0]**o+(-0.52380849964)*x[0]+(-0.423867496739)*x[1]**o+(-0.476139964916)*x[1]
26807            s[1,0,1]=(0.730537196604)*x[0]**o+(0.782053455575)*x[0]+(-0.496379081802)*x[1]**o+(-0.610796298113)*x[1]
26808            s[1,1,0]=(-0.518151715463)*x[0]**o+(0.466253389588)*x[0]+(0.792730016645)*x[1]**o+(-0.0928866491573)*x[1]
26809            s[1,1,1]=(0.721737904289)*x[0]**o+(0.662197543309)*x[0]+(0.402567060485)*x[1]**o+(-0.0537539240196)*x[1]
26810            s[2,0,0]=(0.264010742903)*x[0]**o+(-0.209394534976)*x[0]+(0.901338534988)*x[1]**o+(0.751548611498)*x[1]
26811            s[2,0,1]=(0.255790620214)*x[0]**o+(0.979495958037)*x[0]+(-0.00862935506386)*x[1]**o+(0.472608624671)*x[1]
26812            s[2,1,0]=(0.348157499697)*x[0]**o+(-0.489084366673)*x[0]+(-0.797020984331)*x[1]**o+(0.850642513227)*x[1]
26813            s[2,1,1]=(0.619156982334)*x[0]**o+(-0.871389250139)*x[0]+(0.838613332974)*x[1]**o+(0.865428066011)*x[1]
26814            s[3,0,0]=(-0.498572545085)*x[0]**o+(0.26752755104)*x[0]+(-0.742506202612)*x[1]**o+(-0.867811055537)*x[1]
26815            s[3,0,1]=(-0.469062081737)*x[0]**o+(-0.896231281785)*x[0]+(-0.0537944852375)*x[1]**o+(-0.566775495197)*x[1]
26816            s[3,1,0]=(0.960466927125)*x[0]**o+(-0.790015287315)*x[0]+(-0.249364909212)*x[1]**o+(0.55000656331)*x[1]
26817            s[3,1,1]=(0.107190484709)*x[0]**o+(0.206656185528)*x[0]+(0.445355269686)*x[1]**o+(0.177791381802)*x[1]
26818            s[4,0,0]=(0.926353234834)*x[0]**o+(0.0187238838755)*x[0]+(-0.0335895202391)*x[1]**o+(0.396027343683)*x[1]
26819            s[4,0,1]=(-0.122883815734)*x[0]**o+(0.114014252654)*x[0]+(0.390958937743)*x[1]**o+(0.743802098345)*x[1]
26820            s[4,1,0]=(0.0434615831789)*x[0]**o+(-0.0061546333485)*x[0]+(-0.941682112962)*x[1]**o+(0.546094645223)*x[1]
26821            s[4,1,1]=(-0.876438895739)*x[0]**o+(-0.307842960731)*x[0]+(-0.958906847802)*x[1]**o+(-0.698921900635)*x[1]
26822            s[5,0,0]=(-0.0294848627519)*x[0]**o+(-0.108277485049)*x[0]+(0.653184058519)*x[1]**o+(0.268533892275)*x[1]
26823            s[5,0,1]=(0.0643758658725)*x[0]**o+(0.403982947726)*x[0]+(-0.966297836476)*x[1]**o+(-0.934899934913)*x[1]
26824            s[5,1,0]=(-0.354834560075)*x[0]**o+(-0.641982491187)*x[0]+(0.231470813627)*x[1]**o+(0.597773058655)*x[1]
26825            s[5,1,1]=(0.457345532548)*x[0]**o+(0.930909964958)*x[0]+(-0.190821688076)*x[1]**o+(0.763332121356)*x[1]
26826            ref[0,0,0,0]=o*(0.285489768558)*x_ref[0]**(o-1)+(-0.814169283089)
26827            ref[0,0,0,1]=o*(-0.146214432938)*x_ref[1]**(o-1)+(0.971176476923)
26828            ref[0,0,1,0]=o*(0.796197012783)*x_ref[0]**(o-1)+(0.138854173842)
26829            ref[0,0,1,1]=o*(0.911141134854)*x_ref[1]**(o-1)+(0.24230493445)
26830            ref[0,1,0,0]=o*(0.335306616869)*x_ref[0]**(o-1)+(-0.346373461144)
26831            ref[0,1,0,1]=o*(0.485198289812)*x_ref[1]**(o-1)+(-0.557460170056)
26832            ref[0,1,1,0]=o*(-0.202832958777)*x_ref[0]**(o-1)+(0.202612852038)
26833            ref[0,1,1,1]=o*(-0.382959990066)*x_ref[1]**(o-1)+(0.982713356847)
26834            ref[1,0,0,0]=o*(-0.732852201528)*x_ref[0]**(o-1)+(-0.52380849964)
26835            ref[1,0,0,1]=o*(-0.423867496739)*x_ref[1]**(o-1)+(-0.476139964916)
26836            ref[1,0,1,0]=o*(0.730537196604)*x_ref[0]**(o-1)+(0.782053455575)
26837            ref[1,0,1,1]=o*(-0.496379081802)*x_ref[1]**(o-1)+(-0.610796298113)
26838            ref[1,1,0,0]=o*(-0.518151715463)*x_ref[0]**(o-1)+(0.466253389588)
26839            ref[1,1,0,1]=o*(0.792730016645)*x_ref[1]**(o-1)+(-0.0928866491573)
26840            ref[1,1,1,0]=o*(0.721737904289)*x_ref[0]**(o-1)+(0.662197543309)
26841            ref[1,1,1,1]=o*(0.402567060485)*x_ref[1]**(o-1)+(-0.0537539240196)
26842            ref[2,0,0,0]=o*(0.264010742903)*x_ref[0]**(o-1)+(-0.209394534976)
26843            ref[2,0,0,1]=o*(0.901338534988)*x_ref[1]**(o-1)+(0.751548611498)
26844            ref[2,0,1,0]=o*(0.255790620214)*x_ref[0]**(o-1)+(0.979495958037)
26845            ref[2,0,1,1]=o*(-0.00862935506386)*x_ref[1]**(o-1)+(0.472608624671)
26846            ref[2,1,0,0]=o*(0.348157499697)*x_ref[0]**(o-1)+(-0.489084366673)
26847            ref[2,1,0,1]=o*(-0.797020984331)*x_ref[1]**(o-1)+(0.850642513227)
26848            ref[2,1,1,0]=o*(0.619156982334)*x_ref[0]**(o-1)+(-0.871389250139)
26849            ref[2,1,1,1]=o*(0.838613332974)*x_ref[1]**(o-1)+(0.865428066011)
26850            ref[3,0,0,0]=o*(-0.498572545085)*x_ref[0]**(o-1)+(0.26752755104)
26851            ref[3,0,0,1]=o*(-0.742506202612)*x_ref[1]**(o-1)+(-0.867811055537)
26852            ref[3,0,1,0]=o*(-0.469062081737)*x_ref[0]**(o-1)+(-0.896231281785)
26853            ref[3,0,1,1]=o*(-0.0537944852375)*x_ref[1]**(o-1)+(-0.566775495197)
26854            ref[3,1,0,0]=o*(0.960466927125)*x_ref[0]**(o-1)+(-0.790015287315)
26855            ref[3,1,0,1]=o*(-0.249364909212)*x_ref[1]**(o-1)+(0.55000656331)
26856            ref[3,1,1,0]=o*(0.107190484709)*x_ref[0]**(o-1)+(0.206656185528)
26857            ref[3,1,1,1]=o*(0.445355269686)*x_ref[1]**(o-1)+(0.177791381802)
26858            ref[4,0,0,0]=o*(0.926353234834)*x_ref[0]**(o-1)+(0.0187238838755)
26859            ref[4,0,0,1]=o*(-0.0335895202391)*x_ref[1]**(o-1)+(0.396027343683)
26860            ref[4,0,1,0]=o*(-0.122883815734)*x_ref[0]**(o-1)+(0.114014252654)
26861            ref[4,0,1,1]=o*(0.390958937743)*x_ref[1]**(o-1)+(0.743802098345)
26862            ref[4,1,0,0]=o*(0.0434615831789)*x_ref[0]**(o-1)+(-0.0061546333485)
26863            ref[4,1,0,1]=o*(-0.941682112962)*x_ref[1]**(o-1)+(0.546094645223)
26864            ref[4,1,1,0]=o*(-0.876438895739)*x_ref[0]**(o-1)+(-0.307842960731)
26865            ref[4,1,1,1]=o*(-0.958906847802)*x_ref[1]**(o-1)+(-0.698921900635)
26866            ref[5,0,0,0]=o*(-0.0294848627519)*x_ref[0]**(o-1)+(-0.108277485049)
26867            ref[5,0,0,1]=o*(0.653184058519)*x_ref[1]**(o-1)+(0.268533892275)
26868            ref[5,0,1,0]=o*(0.0643758658725)*x_ref[0]**(o-1)+(0.403982947726)
26869            ref[5,0,1,1]=o*(-0.966297836476)*x_ref[1]**(o-1)+(-0.934899934913)
26870            ref[5,1,0,0]=o*(-0.354834560075)*x_ref[0]**(o-1)+(-0.641982491187)
26871            ref[5,1,0,1]=o*(0.231470813627)*x_ref[1]**(o-1)+(0.597773058655)
26872            ref[5,1,1,0]=o*(0.457345532548)*x_ref[0]**(o-1)+(0.930909964958)
26873            ref[5,1,1,1]=o*(-0.190821688076)*x_ref[1]**(o-1)+(0.763332121356)
26874          else:
26875            s[0,0,0]=(0.0799106193628)*x[0]**o+(-0.385218529142)*x[0]+(0.423551372182)*x[1]**o+(-0.357661802001)*x[1]+(0.523815428088)*x[2]**o+(-0.867664901871)*x[2]
26876            s[0,0,1]=(-0.223298613593)*x[0]**o+(-0.563675059615)*x[0]+(0.854553636152)*x[1]**o+(0.00619936897032)*x[1]+(-0.168119043675)*x[2]**o+(-0.959967076262)*x[2]
26877            s[0,1,0]=(-0.538044222292)*x[0]**o+(0.519685043014)*x[0]+(-0.351144688067)*x[1]**o+(0.887365493845)*x[1]+(0.801566727487)*x[2]**o+(0.571280510487)*x[2]
26878            s[0,1,1]=(0.784344723309)*x[0]**o+(-0.0907512562255)*x[0]+(-0.24324080888)*x[1]**o+(-0.199412485507)*x[1]+(0.642344630349)*x[2]**o+(-0.735616137201)*x[2]
26879            s[1,0,0]=(-0.880206903193)*x[0]**o+(-0.749123123033)*x[0]+(0.104561575813)*x[1]**o+(-0.647441987473)*x[1]+(0.182201321281)*x[2]**o+(0.0102973222322)*x[2]
26880            s[1,0,1]=(0.915893198392)*x[0]**o+(-0.612952390562)*x[0]+(0.803094622661)*x[1]**o+(-0.140410725667)*x[1]+(-0.247855770678)*x[2]**o+(0.399254178737)*x[2]
26881            s[1,1,0]=(0.818321238866)*x[0]**o+(0.214893239645)*x[0]+(0.909338463913)*x[1]**o+(0.855186366612)*x[1]+(-0.835375145102)*x[2]**o+(-0.807936215386)*x[2]
26882            s[1,1,1]=(0.257588723885)*x[0]**o+(-0.952059092336)*x[0]+(-0.28964814303)*x[1]**o+(0.0129418032921)*x[1]+(0.854165719561)*x[2]**o+(0.16196867256)*x[2]
26883            s[2,0,0]=(-0.291805757446)*x[0]**o+(0.609410741859)*x[0]+(0.541295607728)*x[1]**o+(-0.220049109439)*x[1]+(0.773352330852)*x[2]**o+(-0.0999084978714)*x[2]
26884            s[2,0,1]=(-0.094477913729)*x[0]**o+(-0.764264730185)*x[0]+(-0.671804542061)*x[1]**o+(0.368646822044)*x[1]+(0.448237271807)*x[2]**o+(0.565106260459)*x[2]
26885            s[2,1,0]=(-0.240257182637)*x[0]**o+(0.859112706839)*x[0]+(-0.575504060232)*x[1]**o+(-0.611929236978)*x[1]+(0.675448692587)*x[2]**o+(0.31890080218)*x[2]
26886            s[2,1,1]=(-0.39222652102)*x[0]**o+(0.677458518423)*x[0]+(-0.412612361541)*x[1]**o+(-0.374686862277)*x[1]+(-0.737213784962)*x[2]**o+(-0.486920606866)*x[2]
26887            s[3,0,0]=(0.635190942363)*x[0]**o+(-0.330731024263)*x[0]+(-0.690112375174)*x[1]**o+(-0.446491601534)*x[1]+(-0.748307399262)*x[2]**o+(-0.578747596175)*x[2]
26888            s[3,0,1]=(-0.419848395854)*x[0]**o+(-0.31014199789)*x[0]+(0.818235061383)*x[1]**o+(0.0547944058433)*x[1]+(0.855573639674)*x[2]**o+(-0.740418501951)*x[2]
26889            s[3,1,0]=(-0.0448849811136)*x[0]**o+(-0.337048179302)*x[0]+(-0.504885976058)*x[1]**o+(-0.445450937517)*x[1]+(0.567028111275)*x[2]**o+(0.123980108452)*x[2]
26890            s[3,1,1]=(-0.438038042566)*x[0]**o+(-0.427397249753)*x[0]+(0.574195396827)*x[1]**o+(0.824799756958)*x[1]+(-0.886957824366)*x[2]**o+(-0.192557581967)*x[2]
26891            s[4,0,0]=(0.961581428919)*x[0]**o+(-0.666268681241)*x[0]+(0.916527151658)*x[1]**o+(0.879372699554)*x[1]+(-0.648140763963)*x[2]**o+(-0.692256048468)*x[2]
26892            s[4,0,1]=(-0.162077276705)*x[0]**o+(-0.306833194309)*x[0]+(0.611399808831)*x[1]**o+(-0.508477663404)*x[1]+(-0.380712354501)*x[2]**o+(0.490458516352)*x[2]
26893            s[4,1,0]=(-0.64539443571)*x[0]**o+(-0.570490580768)*x[0]+(-0.612017756646)*x[1]**o+(0.979359105468)*x[1]+(0.901671131984)*x[2]**o+(-0.57388809992)*x[2]
26894            s[4,1,1]=(0.0239934065942)*x[0]**o+(0.358848963609)*x[0]+(-0.262596433728)*x[1]**o+(0.966612108153)*x[1]+(0.048144124831)*x[2]**o+(0.106585203917)*x[2]
26895            s[5,0,0]=(-0.894844992009)*x[0]**o+(-0.991143708359)*x[0]+(-0.719802159076)*x[1]**o+(0.609678198738)*x[1]+(0.934875984305)*x[2]**o+(0.210728029537)*x[2]
26896            s[5,0,1]=(-0.0669111311933)*x[0]**o+(-0.145495535442)*x[0]+(-0.988259077226)*x[1]**o+(-0.736349726987)*x[1]+(-0.164335654094)*x[2]**o+(-0.364166925171)*x[2]
26897            s[5,1,0]=(-0.279004883801)*x[0]**o+(0.96466483765)*x[0]+(-0.445599169347)*x[1]**o+(0.866248162976)*x[1]+(0.13706485262)*x[2]**o+(-0.78704568071)*x[2]
26898            s[5,1,1]=(0.452358514637)*x[0]**o+(-0.456298799376)*x[0]+(0.80484494772)*x[1]**o+(-0.949154901869)*x[1]+(-0.106819359297)*x[2]**o+(-0.710983814219)*x[2]
26899            ref[0,0,0,0]=o*(0.0799106193628)*x_ref[0]**(o-1)+(-0.385218529142)
26900            ref[0,0,0,1]=o*(0.423551372182)*x_ref[1]**(o-1)+(-0.357661802001)
26901            ref[0,0,0,2]=o*(0.523815428088)*x_ref[2]**(o-1)+(-0.867664901871)
26902            ref[0,0,1,0]=o*(-0.223298613593)*x_ref[0]**(o-1)+(-0.563675059615)
26903            ref[0,0,1,1]=o*(0.854553636152)*x_ref[1]**(o-1)+(0.00619936897032)
26904            ref[0,0,1,2]=o*(-0.168119043675)*x_ref[2]**(o-1)+(-0.959967076262)
26905            ref[0,1,0,0]=o*(-0.538044222292)*x_ref[0]**(o-1)+(0.519685043014)
26906            ref[0,1,0,1]=o*(-0.351144688067)*x_ref[1]**(o-1)+(0.887365493845)
26907            ref[0,1,0,2]=o*(0.801566727487)*x_ref[2]**(o-1)+(0.571280510487)
26908            ref[0,1,1,0]=o*(0.784344723309)*x_ref[0]**(o-1)+(-0.0907512562255)
26909            ref[0,1,1,1]=o*(-0.24324080888)*x_ref[1]**(o-1)+(-0.199412485507)
26910            ref[0,1,1,2]=o*(0.642344630349)*x_ref[2]**(o-1)+(-0.735616137201)
26911            ref[1,0,0,0]=o*(-0.880206903193)*x_ref[0]**(o-1)+(-0.749123123033)
26912            ref[1,0,0,1]=o*(0.104561575813)*x_ref[1]**(o-1)+(-0.647441987473)
26913            ref[1,0,0,2]=o*(0.182201321281)*x_ref[2]**(o-1)+(0.0102973222322)
26914            ref[1,0,1,0]=o*(0.915893198392)*x_ref[0]**(o-1)+(-0.612952390562)
26915            ref[1,0,1,1]=o*(0.803094622661)*x_ref[1]**(o-1)+(-0.140410725667)
26916            ref[1,0,1,2]=o*(-0.247855770678)*x_ref[2]**(o-1)+(0.399254178737)
26917            ref[1,1,0,0]=o*(0.818321238866)*x_ref[0]**(o-1)+(0.214893239645)
26918            ref[1,1,0,1]=o*(0.909338463913)*x_ref[1]**(o-1)+(0.855186366612)
26919            ref[1,1,0,2]=o*(-0.835375145102)*x_ref[2]**(o-1)+(-0.807936215386)
26920            ref[1,1,1,0]=o*(0.257588723885)*x_ref[0]**(o-1)+(-0.952059092336)
26921            ref[1,1,1,1]=o*(-0.28964814303)*x_ref[1]**(o-1)+(0.0129418032921)
26922            ref[1,1,1,2]=o*(0.854165719561)*x_ref[2]**(o-1)+(0.16196867256)
26923            ref[2,0,0,0]=o*(-0.291805757446)*x_ref[0]**(o-1)+(0.609410741859)
26924            ref[2,0,0,1]=o*(0.541295607728)*x_ref[1]**(o-1)+(-0.220049109439)
26925            ref[2,0,0,2]=o*(0.773352330852)*x_ref[2]**(o-1)+(-0.0999084978714)
26926            ref[2,0,1,0]=o*(-0.094477913729)*x_ref[0]**(o-1)+(-0.764264730185)
26927            ref[2,0,1,1]=o*(-0.671804542061)*x_ref[1]**(o-1)+(0.368646822044)
26928            ref[2,0,1,2]=o*(0.448237271807)*x_ref[2]**(o-1)+(0.565106260459)
26929            ref[2,1,0,0]=o*(-0.240257182637)*x_ref[0]**(o-1)+(0.859112706839)
26930            ref[2,1,0,1]=o*(-0.575504060232)*x_ref[1]**(o-1)+(-0.611929236978)
26931            ref[2,1,0,2]=o*(0.675448692587)*x_ref[2]**(o-1)+(0.31890080218)
26932            ref[2,1,1,0]=o*(-0.39222652102)*x_ref[0]**(o-1)+(0.677458518423)
26933            ref[2,1,1,1]=o*(-0.412612361541)*x_ref[1]**(o-1)+(-0.374686862277)
26934            ref[2,1,1,2]=o*(-0.737213784962)*x_ref[2]**(o-1)+(-0.486920606866)
26935            ref[3,0,0,0]=o*(0.635190942363)*x_ref[0]**(o-1)+(-0.330731024263)
26936            ref[3,0,0,1]=o*(-0.690112375174)*x_ref[1]**(o-1)+(-0.446491601534)
26937            ref[3,0,0,2]=o*(-0.748307399262)*x_ref[2]**(o-1)+(-0.578747596175)
26938            ref[3,0,1,0]=o*(-0.419848395854)*x_ref[0]**(o-1)+(-0.31014199789)
26939            ref[3,0,1,1]=o*(0.818235061383)*x_ref[1]**(o-1)+(0.0547944058433)
26940            ref[3,0,1,2]=o*(0.855573639674)*x_ref[2]**(o-1)+(-0.740418501951)
26941            ref[3,1,0,0]=o*(-0.0448849811136)*x_ref[0]**(o-1)+(-0.337048179302)
26942            ref[3,1,0,1]=o*(-0.504885976058)*x_ref[1]**(o-1)+(-0.445450937517)
26943            ref[3,1,0,2]=o*(0.567028111275)*x_ref[2]**(o-1)+(0.123980108452)
26944            ref[3,1,1,0]=o*(-0.438038042566)*x_ref[0]**(o-1)+(-0.427397249753)
26945            ref[3,1,1,1]=o*(0.574195396827)*x_ref[1]**(o-1)+(0.824799756958)
26946            ref[3,1,1,2]=o*(-0.886957824366)*x_ref[2]**(o-1)+(-0.192557581967)
26947            ref[4,0,0,0]=o*(0.961581428919)*x_ref[0]**(o-1)+(-0.666268681241)
26948            ref[4,0,0,1]=o*(0.916527151658)*x_ref[1]**(o-1)+(0.879372699554)
26949            ref[4,0,0,2]=o*(-0.648140763963)*x_ref[2]**(o-1)+(-0.692256048468)
26950            ref[4,0,1,0]=o*(-0.162077276705)*x_ref[0]**(o-1)+(-0.306833194309)
26951            ref[4,0,1,1]=o*(0.611399808831)*x_ref[1]**(o-1)+(-0.508477663404)
26952            ref[4,0,1,2]=o*(-0.380712354501)*x_ref[2]**(o-1)+(0.490458516352)
26953            ref[4,1,0,0]=o*(-0.64539443571)*x_ref[0]**(o-1)+(-0.570490580768)
26954            ref[4,1,0,1]=o*(-0.612017756646)*x_ref[1]**(o-1)+(0.979359105468)
26955            ref[4,1,0,2]=o*(0.901671131984)*x_ref[2]**(o-1)+(-0.57388809992)
26956            ref[4,1,1,0]=o*(0.0239934065942)*x_ref[0]**(o-1)+(0.358848963609)
26957            ref[4,1,1,1]=o*(-0.262596433728)*x_ref[1]**(o-1)+(0.966612108153)
26958            ref[4,1,1,2]=o*(0.048144124831)*x_ref[2]**(o-1)+(0.106585203917)
26959            ref[5,0,0,0]=o*(-0.894844992009)*x_ref[0]**(o-1)+(-0.991143708359)
26960            ref[5,0,0,1]=o*(-0.719802159076)*x_ref[1]**(o-1)+(0.609678198738)
26961            ref[5,0,0,2]=o*(0.934875984305)*x_ref[2]**(o-1)+(0.210728029537)
26962            ref[5,0,1,0]=o*(-0.0669111311933)*x_ref[0]**(o-1)+(-0.145495535442)
26963            ref[5,0,1,1]=o*(-0.988259077226)*x_ref[1]**(o-1)+(-0.736349726987)
26964            ref[5,0,1,2]=o*(-0.164335654094)*x_ref[2]**(o-1)+(-0.364166925171)
26965            ref[5,1,0,0]=o*(-0.279004883801)*x_ref[0]**(o-1)+(0.96466483765)
26966            ref[5,1,0,1]=o*(-0.445599169347)*x_ref[1]**(o-1)+(0.866248162976)
26967            ref[5,1,0,2]=o*(0.13706485262)*x_ref[2]**(o-1)+(-0.78704568071)
26968            ref[5,1,1,0]=o*(0.452358514637)*x_ref[0]**(o-1)+(-0.456298799376)
26969            ref[5,1,1,1]=o*(0.80484494772)*x_ref[1]**(o-1)+(-0.949154901869)
26970            ref[5,1,1,2]=o*(-0.106819359297)*x_ref[2]**(o-1)+(-0.710983814219)
26971          res=grad(arg,where=w_ref)
26972          sub=res.substitute({arg:s})
26973          self.failUnless(isinstance(res,Symbol),"wrong type of result.")
26974          self.failUnlessEqual(res.getShape(),(6, 2, 2)+(dim,),"wrong shape of result.")
26975          self.failUnless(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
26976       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
26977       def test_grad_onFunction_fromSymbol_ReducedSolution_rank0(self):
26978          """
26979          tests gradient for rank 0 Symbol on the Function
26980    
26981          assumptions: ReducedSolution(self.domain) exists
26982                       self.domain supports gardient on Function
26983          """
26984          o=1
26985          dim=self.domain.getDim()
26986          w_ref=Function(self.domain)
26987          x_ref=w_ref.getX()
26988          w=ReducedSolution(self.domain)
26989          x=w.getX()
26990          arg=Symbol(shape=(),dim=dim)
26991          s=Data(0,(),w)
26992          ref=Data(0,()+(dim,),w_ref)
26993          if dim==2:
26994            s=(-0.495552973369)*x[0]+(0.874390589312)*x[1]
26995            ref[0]=(-0.495552973369)
26996            ref[1]=(0.874390589312)
26997          else:
26998            s=(-0.354636799848)*x[0]+(0.555572828684)*x[1]+(-0.270947199201)*x[2]
26999            ref[0]=(-0.354636799848)
27000            ref[1]=(0.555572828684)
27001            ref[2]=(-0.270947199201)
27002          res=grad(arg,where=w_ref)
27003          sub=res.substitute({arg:s})
27004          self.failUnless(isinstance(res,Symbol),"wrong type of result.")
27005          self.failUnlessEqual(res.getShape(),()+(dim,),"wrong shape of result.")
27006          self.failUnless(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
27007       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
27008       def test_grad_onFunction_fromSymbol_ReducedSolution_rank1(self):
27009          """
27010          tests gradient for rank 1 Symbol on the Function
27011    
27012          assumptions: ReducedSolution(self.domain) exists
27013                       self.domain supports gardient on Function
27014          """
27015          o=1
27016          dim=self.domain.getDim()
27017          w_ref=Function(self.domain)
27018          x_ref=w_ref.getX()
27019          w=ReducedSolution(self.domain)
27020          x=w.getX()
27021          arg=Symbol(shape=(2,),dim=dim)
27022          s=Data(0,(2,),w)
27023          ref=Data(0,(2,)+(dim,),w_ref)
27024          if dim==2:
27025            s[0]=(-0.187161756695)*x[0]+(-0.776766204086)*x[1]
27026            s[1]=(0.724774116602)*x[0]+(0.446775762856)*x[1]
27027            ref[0,0]=(-0.187161756695)
27028            ref[0,1]=(-0.776766204086)
27029            ref[1,0]=(0.724774116602)
27030            ref[1,1]=(0.446775762856)
27031          else:
27032            s[0]=(-0.0251530250542)*x[0]+(-1.23786881883)*x[1]+(1.1819624619)*x[2]
27033            s[1]=(0.801009266263)*x[0]+(-0.210512005637)*x[1]+(-1.42548669085)*x[2]
27034            ref[0,0]=(-0.0251530250542)
27035            ref[0,1]=(-1.23786881883)
27036            ref[0,2]=(1.1819624619)
27037            ref[1,0]=(0.801009266263)
27038            ref[1,1]=(-0.210512005637)
27039            ref[1,2]=(-1.42548669085)
27040          res=grad(arg,where=w_ref)
27041          sub=res.substitute({arg:s})
27042          self.failUnless(isinstance(res,Symbol),"wrong type of result.")
27043          self.failUnlessEqual(res.getShape(),(2,)+(dim,),"wrong shape of result.")
27044          self.failUnless(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
27045       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
27046       def test_grad_onFunction_fromSymbol_ReducedSolution_rank2(self):
27047          """
27048          tests gradient for rank 2 Symbol on the Function
27049    
27050          assumptions: ReducedSolution(self.domain) exists
27051                       self.domain supports gardient on Function
27052          """
27053          o=1
27054          dim=self.domain.getDim()
27055          w_ref=Function(self.domain)
27056          x_ref=w_ref.getX()
27057          w=ReducedSolution(self.domain)
27058          x=w.getX()
27059          arg=Symbol(shape=(4, 5),dim=dim)
27060          s=Data(0,(4, 5),w)
27061          ref=Data(0,(4, 5)+(dim,),w_ref)
27062          if dim==2:
27063            s[0,0]=(-0.105140628344)*x[0]+(0.681061911151)*x[1]
27064            s[0,1]=(1.12568473028)*x[0]+(-0.142806409661)*x[1]
27065            s[0,2]=(-0.709551703126)*x[0]+(0.470204858155)*x[1]
27066            s[0,3]=(-0.457889995297)*x[0]+(0.119831077838)*x[1]
27067            s[0,4]=(-0.137584694085)*x[0]+(-0.815364572262)*x[1]
27068            s[1,0]=(-0.747275494188)*x[0]+(0.419390416238)*x[1]
27069            s[1,1]=(-0.55554960963)*x[0]+(1.68766532296)*x[1]
27070            s[1,2]=(0.0380274635555)*x[0]+(0.903518514201)*x[1]
27071            s[1,3]=(1.30478047839)*x[0]+(0.576658405128)*x[1]
27072            s[1,4]=(-0.786884541126)*x[0]+(0.481365349672)*x[1]
27073            s[2,0]=(1.30445628093)*x[0]+(1.06765714413)*x[1]
27074            s[2,1]=(0.7269884164)*x[0]+(-1.34914325614)*x[1]
27075            s[2,2]=(-0.827940783305)*x[0]+(1.05409369275)*x[1]
27076            s[2,3]=(0.57117918118)*x[0]+(-0.857074951332)*x[1]
27077            s[2,4]=(0.808649779643)*x[0]+(-0.746017104416)*x[1]
27078            s[3,0]=(1.06443222736)*x[0]+(-0.458402762622)*x[1]
27079            s[3,1]=(-0.328990411524)*x[0]+(1.10697234223)*x[1]
27080            s[3,2]=(-0.0777059446026)*x[0]+(1.04837766698)*x[1]
27081            s[3,3]=(0.0542117671967)*x[0]+(-1.24129430221)*x[1]
27082            s[3,4]=(0.176491870492)*x[0]+(0.310238631995)*x[1]
27083            ref[0,0,0]=(-0.105140628344)
27084            ref[0,0,1]=(0.681061911151)
27085            ref[0,1,0]=(1.12568473028)
27086            ref[0,1,1]=(-0.142806409661)
27087            ref[0,2,0]=(-0.709551703126)
27088            ref[0,2,1]=(0.470204858155)
27089            ref[0,3,0]=(-0.457889995297)
27090            ref[0,3,1]=(0.119831077838)
27091            ref[0,4,0]=(-0.137584694085)
27092            ref[0,4,1]=(-0.815364572262)
27093            ref[1,0,0]=(-0.747275494188)
27094            ref[1,0,1]=(0.419390416238)
27095            ref[1,1,0]=(-0.55554960963)
27096            ref[1,1,1]=(1.68766532296)
27097            ref[1,2,0]=(0.0380274635555)
27098            ref[1,2,1]=(0.903518514201)
27099            ref[1,3,0]=(1.30478047839)
27100            ref[1,3,1]=(0.576658405128)
27101            ref[1,4,0]=(-0.786884541126)
27102            ref[1,4,1]=(0.481365349672)
27103            ref[2,0,0]=(1.30445628093)
27104            ref[2,0,1]=(1.06765714413)
27105            ref[2,1,0]=(0.7269884164)
27106            ref[2,1,1]=(-1.34914325614)
27107            ref[2,2,0]=(-0.827940783305)
27108            ref[2,2,1]=(1.05409369275)
27109            ref[2,3,0]=(0.57117918118)
27110            ref[2,3,1]=(-0.857074951332)
27111            ref[2,4,0]=(0.808649779643)
27112            ref[2,4,1]=(-0.746017104416)
27113            ref[3,0,0]=(1.06443222736)
27114            ref[3,0,1]=(-0.458402762622)
27115            ref[3,1,0]=(-0.328990411524)
27116            ref[3,1,1]=(1.10697234223)
27117            ref[3,2,0]=(-0.0777059446026)
27118            ref[3,2,1]=(1.04837766698)
27119            ref[3,3,0]=(0.0542117671967)
27120            ref[3,3,1]=(-1.24129430221)
27121            ref[3,4,0]=(0.176491870492)
27122            ref[3,4,1]=(0.310238631995)
27123          else:
27124            s[0,0]=(-0.835695322993)*x[0]+(0.168930135561)*x[1]+(-1.47180800481)*x[2]
27125            s[0,1]=(0.2001836256)*x[0]+(1.27356263599)*x[1]+(1.07485276442)*x[2]
27126            s[0,2]=(-0.178446572149)*x[0]+(-0.420078906939)*x[1]+(0.535633192895)*x[2]
27127            s[0,3]=(-0.0910549937921)*x[0]+(0.594316242371)*x[1]+(-1.06833005008)*x[2]
27128            s[0,4]=(0.722857786921)*x[0]+(-0.332473817629)*x[1]+(0.79883607252)*x[2]
27129            s[1,0]=(-1.02192468444)*x[0]+(1.2735296387)*x[1]+(-1.34574119314)*x[2]
27130            s[1,1]=(-1.20222077943)*x[0]+(0.180006226359)*x[1]+(0.582580396324)*x[2]
27131            s[1,2]=(0.292773497866)*x[0]+(0.503071430702)*x[1]+(1.25357442113)*x[2]
27132            s[1,3]=(-0.579871204353)*x[0]+(0.143994355108)*x[1]+(0.50466279341)*x[2]
27133            s[1,4]=(1.00530781493)*x[0]+(-0.646038982555)*x[1]+(0.315868158577)*x[2]
27134            s[2,0]=(0.0109517370271)*x[0]+(-1.27094713044)*x[1]+(0.647777134752)*x[2]
27135            s[2,1]=(0.615504753112)*x[0]+(0.479866346157)*x[1]+(1.72115593961)*x[2]
27136            s[2,2]=(-0.307778323155)*x[0]+(0.307520362533)*x[1]+(0.0061507801029)*x[2]
27137            s[2,3]=(-0.901393000596)*x[0]+(0.912379707397)*x[1]+(-0.0683825966669)*x[2]
27138            s[2,4]=(0.558642962243)*x[0]+(0.650906862857)*x[1]+(-1.44796931057)*x[2]
27139            s[3,0]=(1.08498680281)*x[0]+(-1.28372501216)*x[1]+(-1.27799790624)*x[2]
27140            s[3,1]=(0.45408516398)*x[0]+(-0.950068476479)*x[1]+(0.634133482831)*x[2]
27141            s[3,2]=(0.824015492184)*x[0]+(0.148535318857)*x[1]+(0.10609796765)*x[2]
27142            s[3,3]=(1.14342153343)*x[0]+(-0.0689548622931)*x[1]+(-0.166489981522)*x[2]
27143            s[3,4]=(0.995987765181)*x[0]+(0.915359249488)*x[1]+(-0.583052373261)*x[2]
27144            ref[0,0,0]=(-0.835695322993)
27145            ref[0,0,1]=(0.168930135561)
27146            ref[0,0,2]=(-1.47180800481)
27147            ref[0,1,0]=(0.2001836256)
27148            ref[0,1,1]=(1.27356263599)
27149            ref[0,1,2]=(1.07485276442)
27150            ref[0,2,0]=(-0.178446572149)
27151            ref[0,2,1]=(-0.420078906939)
27152            ref[0,2,2]=(0.535633192895)
27153            ref[0,3,0]=(-0.0910549937921)
27154            ref[0,3,1]=(0.594316242371)
27155            ref[0,3,2]=(-1.06833005008)
27156            ref[0,4,0]=(0.722857786921)
27157            ref[0,4,1]=(-0.332473817629)
27158            ref[0,4,2]=(0.79883607252)
27159            ref[1,0,0]=(-1.02192468444)
27160            ref[1,0,1]=(1.2735296387)
27161            ref[1,0,2]=(-1.34574119314)
27162            ref[1,1,0]=(-1.20222077943)
27163            ref[1,1,1]=(0.180006226359)
27164            ref[1,1,2]=(0.582580396324)
27165            ref[1,2,0]=(0.292773497866)
27166            ref[1,2,1]=(0.503071430702)
27167            ref[1,2,2]=(1.25357442113)
27168            ref[1,3,0]=(-0.579871204353)
27169            ref[1,3,1]=(0.143994355108)
27170            ref[1,3,2]=(0.50466279341)
27171            ref[1,4,0]=(1.00530781493)
27172            ref[1,4,1]=(-0.646038982555)
27173            ref[1,4,2]=(0.315868158577)
27174            ref[2,0,0]=(0.0109517370271)
27175            ref[2,0,1]=(-1.27094713044)
27176            ref[2,0,2]=(0.647777134752)
27177            ref[2,1,0]=(0.615504753112)
27178            ref[2,1,1]=(0.479866346157)
27179            ref[2,1,2]=(1.72115593961)
27180            ref[2,2,0]=(-0.307778323155)
27181            ref[2,2,1]=(0.307520362533)
27182            ref[2,2,2]=(0.0061507801029)
27183            ref[2,3,0]=(-0.901393000596)
27184            ref[2,3,1]=(0.912379707397)
27185            ref[2,3,2]=(-0.0683825966669)
27186            ref[2,4,0]=(0.558642962243)
27187            ref[2,4,1]=(0.650906862857)
27188            ref[2,4,2]=(-1.44796931057)
27189            ref[3,0,0]=(1.08498680281)
27190            ref[3,0,1]=(-1.28372501216)
27191            ref[3,0,2]=(-1.27799790624)
27192            ref[3,1,0]=(0.45408516398)
27193            ref[3,1,1]=(-0.950068476479)
27194            ref[3,1,2]=(0.634133482831)
27195            ref[3,2,0]=(0.824015492184)
27196            ref[3,2,1]=(0.148535318857)
27197            ref[3,2,2]=(0.10609796765)
27198            ref[3,3,0]=(1.14342153343)
27199            ref[3,3,1]=(-0.0689548622931)
27200            ref[3,3,2]=(-0.166489981522)
27201            ref[3,4,0]=(0.995987765181)
27202            ref[3,4,1]=(0.915359249488)
27203            ref[3,4,2]=(-0.583052373261)
27204          res=grad(arg,where=w_ref)
27205          sub=res.substitute({arg:s})
27206          self.failUnless(isinstance(res,Symbol),"wrong type of result.")
27207          self.failUnlessEqual(res.getShape(),(4, 5)+(dim,),"wrong shape of result.")
27208          self.failUnless(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
27209       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
27210       def test_grad_onFunction_fromSymbol_ReducedSolution_rank3(self):
27211          """
27212          tests gradient for rank 3 Symbol on the Function
27213    
27214          assumptions: ReducedSolution(self.domain) exists
27215                       self.domain supports gardient on Function
27216          """
27217          o=1
27218          dim=self.domain.getDim()
27219          w_ref=Function(self.domain)
27220          x_ref=w_ref.getX()
27221          w=ReducedSolution(self.domain)
27222          x=w.getX()
27223          arg=Symbol(shape=(6, 2, 2),dim=dim)
27224          s=Data(0,(6, 2, 2),w)
27225          ref=Data(0,(6, 2, 2)+(dim,),w_ref)
27226          if dim==2:
27227            s[0,0,0]=(0.116652834373)*x[0]+(1.4681512344)*x[1]
27228            s[0,0,1]=(1.89418390988)*x[0]+(-0.548065006619)*x[1]
27229            s[0,1,0]=(-0.07602392145)*x[0]+(0.0796515016952)*x[1]
27230            s[0,1,1]=(1.50333606195)*x[0]+(-0.211673198103)*x[1]
27231            s[1,0,0]=(0.172419295955)*x[0]+(-0.586603468045)*x[1]
27232            s[1,0,1]=(0.212952657549)*x[0]+(-0.100672655087)*x[1]
27233            s[1,1,0]=(-1.11939406352)*x[0]+(-0.589882254225)*x[1]
27234            s[1,1,1]=(0.318138253303)*x[0]+(0.409850277983)*x[1]
27235            s[2,0,0]=(-0.0669759465557)*x[0]+(0.525669761096)*x[1]
27236            s[2,0,1]=(0.349019390883)*x[0]+(0.154604501057)*x[1]
27237            s[2,1,0]=(1.95277106546)*x[0]+(0.495701766483)*x[1]
27238            s[2,1,1]=(-0.0986210008015)*x[0]+(1.12636829398)*x[1]
27239            s[3,0,0]=(0.971837535878)*x[0]+(-0.738253595188)*x[1]
27240            s[3,0,1]=(0.0314513203112)*x[0]+(-1.16646217783)*x[1]
27241            s[3,1,0]=(0.485751127243)*x[0]+(-0.340178033471)*x[1]
27242            s[3,1,1]=(0.408742867205)*x[0]+(0.151827789426)*x[1]
27243            s[4,0,0]=(-0.0134678971538)*x[0]+(0.884924133141)*x[1]
27244            s[4,0,1]=(-0.66899222691)*x[0]+(-0.959185584071)*x[1]
27245            s[4,1,0]=(1.05311767886)*x[0]+(0.64093792324)*x[1]
27246            s[4,1,1]=(0.562875594668)*x[0]+(0.539525481691)*x[1]
27247            s[5,0,0]=(0.310908751279)*x[0]+(0.497074267163)*x[1]
27248            s[5,0,1]=(-0.804186513465)*x[0]+(0.329762438933)*x[1]
27249            s[5,1,0]=(-0.946808260459)*x[0]+(-0.00260213368693)*x[1]
27250            s[5,1,1]=(0.63415870202)*x[0]+(1.38103994652)*x[1]
27251            ref[0,0,0,0]=(0.116652834373)
27252            ref[0,0,0,1]=(1.4681512344)
27253            ref[0,0,1,0]=(1.89418390988)
27254            ref[0,0,1,1]=(-0.548065006619)
27255            ref[0,1,0,0]=(-0.07602392145)
27256            ref[0,1,0,1]=(0.0796515016952)
27257            ref[0,1,1,0]=(1.50333606195)
27258            ref[0,1,1,1]=(-0.211673198103)
27259            ref[1,0,0,0]=(0.172419295955)
27260            ref[1,0,0,1]=(-0.586603468045)
27261            ref[1,0,1,0]=(0.212952657549)
27262            ref[1,0,1,1]=(-0.100672655087)
27263            ref[1,1,0,0]=(-1.11939406352)
27264            ref[1,1,0,1]=(-0.589882254225)
27265            ref[1,1,1,0]=(0.318138253303)
27266            ref[1,1,1,1]=(0.409850277983)
27267            ref[2,0,0,0]=(-0.0669759465557)
27268            ref[2,0,0,1]=(0.525669761096)
27269            ref[2,0,1,0]=(0.349019390883)
27270            ref[2,0,1,1]=(0.154604501057)
27271            ref[2,1,0,0]=(1.95277106546)
27272            ref[2,1,0,1]=(0.495701766483)
27273            ref[2,1,1,0]=(-0.0986210008015)
27274            ref[2,1,1,1]=(1.12636829398)
27275            ref[3,0,0,0]=(0.971837535878)
27276            ref[3,0,0,1]=(-0.738253595188)
27277            ref[3,0,1,0]=(0.0314513203112)
27278            ref[3,0,1,1]=(-1.16646217783)
27279            ref[3,1,0,0]=(0.485751127243)
27280            ref[3,1,0,1]=(-0.340178033471)
27281            ref[3,1,1,0]=(0.408742867205)
27282            ref[3,1,1,1]=(0.151827789426)
27283            ref[4,0,0,0]=(-0.0134678971538)
27284            ref[4,0,0,1]=(0.884924133141)
27285            ref[4,0,1,0]=(-0.66899222691)
27286            ref[4,0,1,1]=(-0.959185584071)
27287            ref[4,1,0,0]=(1.05311767886)
27288            ref[4,1,0,1]=(0.64093792324)
27289            ref[4,1,1,0]=(0.562875594668)
27290            ref[4,1,1,1]=(0.539525481691)
27291            ref[5,0,0,0]=(0.310908751279)
27292            ref[5,0,0,1]=(0.497074267163)
27293            ref[5,0,1,0]=(-0.804186513465)
27294            ref[5,0,1,1]=(0.329762438933)
27295            ref[5,1,0,0]=(-0.946808260459)
27296            ref[5,1,0,1]=(-0.00260213368693)
27297            ref[5,1,1,0]=(0.63415870202)
27298            ref[5,1,1,1]=(1.38103994652)
27299          else:
27300            s[0,0,0]=(-0.0840260391925)*x[0]+(0.385117859595)*x[1]+(1.36354425949)*x[2]
27301            s[0,0,1]=(0.682480367755)*x[0]+(-0.658980348414)*x[1]+(-0.129734588977)*x[2]
27302            s[0,1,0]=(-0.213790105123)*x[0]+(-0.774270821015)*x[1]+(0.160024784274)*x[2]
27303            s[0,1,1]=(-1.02270895286)*x[0]+(1.02607310825)*x[1]+(0.35056114816)*x[2]
27304            s[1,0,0]=(0.201792116067)*x[0]+(0.223564282304)*x[1]+(0.986785519545)*x[2]
27305            s[1,0,1]=(0.250819712775)*x[0]+(0.287643279417)*x[1]+(0.18295590528)*x[2]
27306            s[1,1,0]=(-1.47569225207)*x[0]+(-0.886933933801)*x[1]+(0.525380474082)*x[2]
27307            s[1,1,1]=(0.680401800239)*x[0]+(1.36155081028)*x[1]+(-1.76198171789)*x[2]
27308            s[2,0,0]=(-0.784439188011)*x[0]+(-0.797291895631)*x[1]+(-0.425550387518)*x[2]
27309            s[2,0,1]=(1.62016996989)*x[0]+(1.02824549576)*x[1]+(-0.157995046652)*x[2]
27310            s[2,1,0]=(-0.437412344413)*x[0]+(0.97005624264)*x[1]+(-0.321998550341)*x[2]
27311            s[2,1,1]=(0.473879660993)*x[0]+(0.483144823024)*x[1]+(0.168449443711)*x[2]
27312            s[3,0,0]=(-1.59822104736)*x[0]+(-1.24012649834)*x[1]+(0.695408081789)*x[2]
27313            s[3,0,1]=(0.827901715486)*x[0]+(-0.230621260402)*x[1]+(-0.789726238476)*x[2]
27314            s[3,1,0]=(-0.279064257268)*x[0]+(-1.35315417734)*x[1]+(0.593090655629)*x[2]
27315            s[3,1,1]=(0.387685237641)*x[0]+(1.60258880823)*x[1]+(-1.10088045432)*x[2]
27316            s[4,0,0]=(0.771374132686)*x[0]+(0.530393756307)*x[1]+(-0.366697715551)*x[2]
27317            s[4,0,1]=(-0.182374799863)*x[0]+(-0.125579433837)*x[1]+(-1.2028145445)*x[2]
27318            s[4,1,0]=(-0.208766654808)*x[0]+(0.645251941741)*x[1]+(-0.534068338041)*x[2]
27319            s[4,1,1]=(-0.064786779421)*x[0]+(0.0354509511326)*x[1]+(-1.32632049137)*x[2]
27320            s[5,0,0]=(0.833438445425)*x[0]+(0.770186199496)*x[1]+(0.112178380686)*x[2]
27321            s[5,0,1]=(1.36614714953)*x[0]+(-0.367243359207)*x[1]+(0.812867174908)*x[2]
27322            s[5,1,0]=(0.0359079603828)*x[0]+(0.622094474303)*x[1]+(-0.33137187739)*x[2]
27323            s[5,1,1]=(-0.479714378899)*x[0]+(-0.959098499695)*x[1]+(0.843889761479)*x[2]
27324            ref[0,0,0,0]=(-0.0840260391925)
27325            ref[0,0,0,1]=(0.385117859595)
27326            ref[0,0,0,2]=(1.36354425949)
27327            ref[0,0,1,0]=(0.682480367755)
27328            ref[0,0,1,1]=(-0.658980348414)
27329            ref[0,0,1,2]=(-0.129734588977)
27330            ref[0,1,0,0]=(-0.213790105123)
27331            ref[0,1,0,1]=(-0.774270821015)
27332            ref[0,1,0,2]=(0.160024784274)
27333            ref[0,1,1,0]=(-1.02270895286)
27334            ref[0,1,1,1]=(1.02607310825)
27335            ref[0,1,1,2]=(0.35056114816)
27336            ref[1,0,0,0]=(0.201792116067)
27337            ref[1,0,0,1]=(0.223564282304)
27338            ref[1,0,0,2]=(0.986785519545)
27339            ref[1,0,1,0]=(0.250819712775)
27340            ref[1,0,1,1]=(0.287643279417)
27341            ref[1,0,1,2]=(0.18295590528)
27342            ref[1,1,0,0]=(-1.47569225207)
27343            ref[1,1,0,1]=(-0.886933933801)
27344            ref[1,1,0,2]=(0.525380474082)
27345            ref[1,1,1,0]=(0.680401800239)
27346            ref[1,1,1,1]=(1.36155081028)
27347            ref[1,1,1,2]=(-1.76198171789)
27348            ref[2,0,0,0]=(-0.784439188011)
27349            ref[2,0,0,1]=(-0.797291895631)
27350            ref[2,0,0,2]=(-0.425550387518)
27351            ref[2,0,1,0]=(1.62016996989)
27352            ref[2,0,1,1]=(1.02824549576)
27353            ref[2,0,1,2]=(-0.157995046652)
27354            ref[2,1,0,0]=(-0.437412344413)
27355            ref[2,1,0,1]=(0.97005624264)
27356            ref[2,1,0,2]=(-0.321998550341)
27357            ref[2,1,1,0]=(0.473879660993)
27358            ref[2,1,1,1]=(0.483144823024)
27359            ref[2,1,1,2]=(0.168449443711)
27360            ref[3,0,0,0]=(-1.59822104736)
27361            ref[3,0,0,1]=(-1.24012649834)
27362            ref[3,0,0,2]=(0.695408081789)
27363            ref[3,0,1,0]=(0.827901715486)
27364            ref[3,0,1,1]=(-0.230621260402)
27365            ref[3,0,1,2]=(-0.789726238476)
27366            ref[3,1,0,0]=(-0.279064257268)
27367            ref[3,1,0,1]=(-1.35315417734)
27368            ref[3,1,0,2]=(0.593090655629)
27369            ref[3,1,1,0]=(0.387685237641)
27370            ref[3,1,1,1]=(1.60258880823)
27371            ref[3,1,1,2]=(-1.10088045432)
27372            ref[4,0,0,0]=(0.771374132686)
27373            ref[4,0,0,1]=(0.530393756307)
27374            ref[4,0,0,2]=(-0.366697715551)
27375            ref[4,0,1,0]=(-0.182374799863)
27376            ref[4,0,1,1]=(-0.125579433837)
27377            ref[4,0,1,2]=(-1.2028145445)
27378            ref[4,1,0,0]=(-0.208766654808)
27379            ref[4,1,0,1]=(0.645251941741)
27380            ref[4,1,0,2]=(-0.534068338041)
27381            ref[4,1,1,0]=(-0.064786779421)
27382            ref[4,1,1,1]=(0.0354509511326)
27383            ref[4,1,1,2]=(-1.32632049137)
27384            ref[5,0,0,0]=(0.833438445425)
27385            ref[5,0,0,1]=(0.770186199496)
27386            ref[5,0,0,2]=(0.112178380686)
27387            ref[5,0,1,0]=(1.36614714953)
27388            ref[5,0,1,1]=(-0.367243359207)
27389            ref[5,0,1,2]=(0.812867174908)
27390            ref[5,1,0,0]=(0.0359079603828)
27391            ref[5,1,0,1]=(0.622094474303)
27392            ref[5,1,0,2]=(-0.33137187739)
27393            ref[5,1,1,0]=(-0.479714378899)
27394            ref[5,1,1,1]=(-0.959098499695)
27395            ref[5,1,1,2]=(0.843889761479)
27396          res=grad(arg,where=w_ref)
27397          sub=res.substitute({arg:s})
27398          self.failUnless(isinstance(res,Symbol),"wrong type of result.")
27399          self.failUnlessEqual(res.getShape(),(6, 2, 2)+(dim,),"wrong shape of result.")
27400          self.failUnless(Lsup(sub-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
27401       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
27402       def test_grad_onFunctionOnBoundary_fromData_ContinuousFunction_rank0(self):
27403          """
27404          tests gradient for rank 0 Data on the FunctionOnBoundary
27405    
27406          assumptions: ContinuousFunction(self.domain) exists
27407                       self.domain supports gardient on FunctionOnBoundary
27408          """
27409          o=self.order
27410          dim=self.domain.getDim()
27411          w_ref=FunctionOnBoundary(self.domain)
27412          x_ref=w_ref.getX()
27413          w=ContinuousFunction(self.domain)
27414          x=w.getX()
27415          arg=Data(0,(),w)
27416          ref=Data(0,()+(dim,),w_ref)
27417          if dim==2:
27418            arg=(0.741017463552)*x[0]**o+(0.665549604887)*x[0]+(-0.294688627656)*x[1]**o+(-0.188608956137)*x[1]
27419            ref[0]=o*(0.741017463552)*x_ref[0]**(o-1)+(0.665549604887)
27420            ref[1]=o*(-0.294688627656)*x_ref[1]**(o-1)+(-0.188608956137)
27421          else:
27422            arg=(-0.182264095574)*x[0]**o+(0.388884343071)*x[0]+(0.0250471058578)*x[1]**o+(0.242724421847)*x[1]+(-0.863568419189)*x[2]**o+(-0.797427046061)*x[2]
27423            ref[0]=o*(-0.182264095574)*x_ref[0]**(o-1)+(0.388884343071)
27424            ref[1]=o*(0.0250471058578)*x_ref[1]**(o-1)+(0.242724421847)
27425            ref[2]=o*(-0.863568419189)*x_ref[2]**(o-1)+(-0.797427046061)
27426          res=grad(arg,where=w_ref)
27427          self.failUnless(isinstance(res,Data),"wrong type of result.")
27428          self.failUnlessEqual(res.getShape(),()+(dim,),"wrong shape of result.")
27429          self.failUnless(Lsup(res-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
27430       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
27431       def test_grad_onFunctionOnBoundary_fromData_ContinuousFunction_rank1(self):
27432          """
27433          tests gradient for rank 1 Data on the FunctionOnBoundary
27434    
27435          assumptions: ContinuousFunction(self.domain) exists
27436                       self.domain supports gardient on FunctionOnBoundary
27437          """
27438          o=self.order
27439          dim=self.domain.getDim()
27440          w_ref=FunctionOnBoundary(self.domain)
27441          x_ref=w_ref.getX()
27442          w=ContinuousFunction(self.domain)
27443          x=w.getX()
27444          arg=Data(0,(2,),w)
27445          ref=Data(0,(2,)+(dim,),w_ref)
27446          if dim==2:
27447            arg[0]=(-0.566748845779)*x[0]**o+(0.284156548246)*x[0]+(0.213805183732)*x[1]**o+(0.887833417271)*x[1]
27448            arg[1]=(-0.935376067943)*x[0]**o+(0.31417056704)*x[0]+(0.157729703937)*x[1]**o+(0.781264180355)*x[1]
27449            ref[0,0]=o*(-0.566748845779)*x_ref[0]**(o-1)+(0.284156548246)
27450            ref[0,1]=o*(0.213805183732)*x_ref[1]**(o-1)+(0.887833417271)
27451            ref[1,0]=o*(-0.935376067943)*x_ref[0]**(o-1)+(0.31417056704)
27452            ref[1,1]=o*(0.157729703937)*x_ref[1]**(o-1)+(0.781264180355)
27453          else:
27454            arg[0]=(0.787106597246)*x[0]**o+(0.0477259256332)*x[0]+(0.0657839729355)*x[1]**o+(-0.367242386854)*x[1]+(0.638047637996)*x[2]**o+(0.292293368262)*x[2]
27455            arg[1]=(0.325241621537)*x[0]**o+(-0.995465871567)*x[0]+(-0.589833259992)*x[1]**o+(0.252602994164)*x[1]+(0.271544628727)*x[2]**o+(0.401222388174)*x[2]
27456            ref[0,0]=o*(0.787106597246)*x_ref[0]**(o-1)+(0.0477259256332)
27457            ref[0,1]=o*(0.0657839729355)*x_ref[1]**(o-1)+(-0.367242386854)
27458            ref[0,2]=o*(0.638047637996)*x_ref[2]**(o-1)+(0.292293368262)
27459            ref[1,0]=o*(0.325241621537)*x_ref[0]**(o-1)+(-0.995465871567)
27460            ref[1,1]=o*(-0.589833259992)*x_ref[1]**(o-1)+(0.252602994164)
27461            ref[1,2]=o*(0.271544628727)*x_ref[2]**(o-1)+(0.401222388174)
27462          res=grad(arg,where=w_ref)
27463          self.failUnless(isinstance(res,Data),"wrong type of result.")
27464          self.failUnlessEqual(res.getShape(),(2,)+(dim,),"wrong shape of result.")
27465          self.failUnless(Lsup(res-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
27466       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
27467       def test_grad_onFunctionOnBoundary_fromData_ContinuousFunction_rank2(self):
27468          """
27469          tests gradient for rank 2 Data on the FunctionOnBoundary
27470    
27471          assumptions: ContinuousFunction(self.domain) exists
27472                       self.domain supports gardient on FunctionOnBoundary
27473          """
27474          o=self.order
27475          dim=self.domain.getDim()
27476          w_ref=FunctionOnBoundary(self.domain)
27477          x_ref=w_ref.getX()
27478          w=ContinuousFunction(self.domain)
27479          x=w.getX()
27480          arg=Data(0,(4, 5),w)
27481          ref=Data(0,(4, 5)+(dim,),w_ref)
27482          if dim==2:
27483            arg[0,0]=(-0.535138548297)*x[0]**o+(0.320793182084)*x[0]+(-0.363556615611)*x[1]**o+(0.80028981928)*x[1]
27484            arg[0,1]=(0.50712290341)*x[0]**o+(0.0696582374725)*x[0]+(-0.565430065964)*x[1]**o+(0.840341269012)*x[1]
27485            arg[0,2]=(0.222608517758)*x[0]**o+(0.0741096149609)*x[0]+(-0.926916099396)*x[1]**o+(0.840471681255)*x[1]
27486            arg[0,3]=(-0.0729061065831)*x[0]**o+(-0.361006912293)*x[0]+(-0.796381694915)*x[1]**o+(-0.87399027927)*x[1]
27487            arg[0,4]=(0.946982642563)*x[0]**o+(0.776871793528)*x[0]+(0.906858449271)*x[1]**o+(0.23076439514)*x[1]
27488            arg[1,0]=(-0.121641842365)*x[0]**o+(0.755274749862)*x[0]+(-0.905815080361)*x[1]**o+(-0.27711865979)*x[1]
27489            arg[1,1]=(0.870675475328)*x[0]**o+(0.000245820302085)*x[0]+(0.990534371185)*x[1]**o+(-0.0132722523111)*x[1]
27490            arg[1,2]=(0.665375098591)*x[0]**o+(0.602779210152)*x[0]+(0.112732227406)*x[1]**o+(0.973600268944)*x[1]
27491            arg[1,3]=(-0.760686885095)*x[0]**o+(-0.993893837808)*x[0]+(-0.279242757928)*x[1]**o+(0.0970216781461)*x[1]
27492            arg[1,4]=(-0.326265155118)*x[0]**o+(-0.302971035826)*x[0]+(-0.991053864037)*x[1]**o+(-0.787776341406)*x[1]
27493            arg[2,0]=(-0.798558123695)*x[0]**o+(-0.648773673567)*x[0]+(0.911336567339)*x[1]**o+(0.525888531875)*x[1]
27494            arg[2,1]=(0.334481967771)*x[0]**o+(0.559633318828)*x[0]+(-0.738361234791)*x[1]**o+(0.863808627657)*x[1]
27495            arg[2,2]=(-0.660270802705)*x[0]**o+(-0.500800405285)*x[0]+(0.250991213972)*x[1]**o+(-0.855371865339)*x[1]
27496            arg[2,3]=(0.573495152924)*x[0]**o+(0.841810214664)*x[0]+(0.816402403997)*x[1]**o+(0.871435278968)*x[1]
27497            arg[2,4]=(0.00700234490903)*x[0]**o+(0.609696655384)*x[0]+(-0.908261420109)*x[1]**o+(-0.0469518512659)*x[1]
27498            arg[3,0]=(-0.78381944233)*x[0]**o+(0.547849085605)*x[0]+(-0.481333073199)*x[1]**o+(-0.100496681813)*x[1]
27499            arg[3,1]=(0.53995869966)*x[0]**o+(-0.503303606531)*x[0]+(0.783394329024)*x[1]**o+(0.989828473603)*x[1]
27500            arg[3,2]=(0.723590003109)*x[0]**o+(-0.75511396868)*x[0]+(0.249651386017)*x[1]**o+(0.545636109436)*x[1]
27501            arg[3,3]=(-0.126863462818)*x[0]**o+(0.553295312002)*x[0]+(-0.286155398085)*x[1]**o+(0.425889110789)*x[1]
27502            arg[3,4]=(-0.970069386779)*x[0]**o+(0.457400568855)*x[0]+(-0.245839304835)*x[1]**o+(-0.463000940469)*x[1]
27503            ref[0,0,0]=o*(-0.535138548297)*x_ref[0]**(o-1)+(0.320793182084)
27504            ref[0,0,1]=o*(-0.363556615611)*x_ref[1]**(o-1)+(0.80028981928)
27505            ref[0,1,0]=o*(0.50712290341)*x_ref[0]**(o-1)+(0.0696582374725)
27506            ref[0,1,1]=o*(-0.565430065964)*x_ref[1]**(o-1)+(0.840341269012)
27507            ref[0,2,0]=o*(0.222608517758)*x_ref[0]**(o-1)+(0.0741096149609)
27508            ref[0,2,1]=o*(-0.926916099396)*x_ref[1]**(o-1)+(0.840471681255)
27509            ref[0,3,0]=o*(-0.0729061065831)*x_ref[0]**(o-1)+(-0.361006912293)
27510            ref[0,3,1]=o*(-0.796381694915)*x_ref[1]**(o-1)+(-0.87399027927)
27511            ref[0,4,0]=o*(0.946982642563)*x_ref[0]**(o-1)+(0.776871793528)
27512            ref[0,4,1]=o*(0.906858449271)*x_ref[1]**(o-1)+(0.23076439514)
27513            ref[1,0,0]=o*(-0.121641842365)*x_ref[0]**(o-1)+(0.755274749862)
27514            ref[1,0,1]=o*(-0.905815080361)*x_ref[1]**(o-1)+(-0.27711865979)
27515            ref[1,1,0]=o*(0.870675475328)*x_ref[0]**(o-1)+(0.000245820302085)
27516            ref[1,1,1]=o*(0.990534371185)*x_ref[1]**(o-1)+(-0.0132722523111)
27517            ref[1,2,0]=o*(0.665375098591)*x_ref[0]**(o-1)+(0.602779210152)
27518            ref[1,2,1]=o*(0.112732227406)*x_ref[1]**(o-1)+(0.973600268944)
27519            ref[1,3,0]=o*(-0.760686885095)*x_ref[0]**(o-1)+(-0.993893837808)
27520            ref[1,3,1]=o*(-0.279242757928)*x_ref[1]**(o-1)+(0.0970216781461)
27521            ref[1,4,0]=o*(-0.326265155118)*x_ref[0]**(o-1)+(-0.302971035826)
27522            ref[1,4,1]=o*(-0.991053864037)*x_ref[1]**(o-1)+(-0.787776341406)
27523            ref[2,0,0]=o*(-0.798558123695)*x_ref[0]**(o-1)+(-0.648773673567)
27524            ref[2,0,1]=o*(0.911336567339)*x_ref[1]**(o-1)+(0.525888531875)
27525            ref[2,1,0]=o*(0.334481967771)*x_ref[0]**(o-1)+(0.559633318828)
27526            ref[2,1,1]=o*(-0.738361234791)*x_ref[1]**(o-1)+(0.863808627657)
27527            ref[2,2,0]=o*(-0.660270802705)*x_ref[0]**(o-1)+(-0.500800405285)
27528            ref[2,2,1]=o*(0.250991213972)*x_ref[1]**(o-1)+(-0.855371865339)
27529            ref[2,3,0]=o*(0.573495152924)*x_ref[0]**(o-1)+(0.841810214664)
27530            ref[2,3,1]=o*(0.816402403997)*x_ref[1]**(o-1)+(0.871435278968)
27531            ref[2,4,0]=o*(0.00700234490903)*x_ref[0]**(o-1)+(0.609696655384)
27532            ref[2,4,1]=o*(-0.908261420109)*x_ref[1]**(o-1)+(-0.0469518512659)
27533            ref[3,0,0]=o*(-0.78381944233)*x_ref[0]**(o-1)+(0.547849085605)
27534            ref[3,0,1]=o*(-0.481333073199)*x_ref[1]**(o-1)+(-0.100496681813)
27535            ref[3,1,0]=o*(0.53995869966)*x_ref[0]**(o-1)+(-0.503303606531)
27536            ref[3,1,1]=o*(0.783394329024)*x_ref[1]**(o-1)+(0.989828473603)
27537            ref[3,2,0]=o*(0.723590003109)*x_ref[0]**(o-1)+(-0.75511396868)
27538            ref[3,2,1]=o*(0.249651386017)*x_ref[1]**(o-1)+(0.545636109436)
27539            ref[3,3,0]=o*(-0.126863462818)*x_ref[0]**(o-1)+(0.553295312002)
27540            ref[3,3,1]=o*(-0.286155398085)*x_ref[1]**(o-1)+(0.425889110789)
27541            ref[3,4,0]=o*(-0.970069386779)*x_ref[0]**(o-1)+(0.457400568855)
27542            ref[3,4,1]=o*(-0.245839304835)*x_ref[1]**(o-1)+(-0.463000940469)
27543          else:
27544            arg[0,0]=(-0.0252675874258)*x[0]**o+(-0.998043629662)*x[0]+(-0.956603187221)*x[1]**o+(-0.642113208329)*x[1]+(-0.59687133215)*x[2]**o+(-0.222380006695)*x[2]
27545            arg[0,1]=(0.540057023826)*x[0]**o+(0.660021105706)*x[0]+(-0.0847035816563)*x[1]**o+(0.734935147879)*x[1]+(0.895080236848)*x[2]**o+(0.759076168225)*x[2]
27546            arg[0,2]=(0.208276460123)*x[0]**o+(-0.842726599314)*x[0]+(0.514146640689)*x[1]**o+(-0.931115443386)*x[1]+(-0.427990918054)*x[2]**o+(-0.0944702225036)*x[2]
27547            arg[0,3]=(-0.669873393665)*x[0]**o+(-0.164211687812)*x[0]+(0.257292402022)*x[1]**o+(0.788249196864)*x[1]+(-0.0160232742588)*x[2]**o+(0.593261720532)*x[2]
27548            arg[0,4]=(0.574685018662)*x[0]**o+(-0.404093341935)*x[0]+(-0.613704015926)*x[1]**o+(-0.388769512229)*x[1]+(0.65014059769)*x[2]**o+(0.796497720581)*x[2]
27549            arg[1,0]=(0.579425469692)*x[0]**o+(0.706786266065)*x[0]+(-0.489805412824)*x[1]**o+(0.412673120993)*x[1]+(-0.261487328773)*x[2]**o+(0.323016314178)*x[2]
27550            arg[1,1]=(-0.406115852457)*x[0]**o+(-0.320011474154)*x[0]+(0.83353566302)*x[1]**o+(-0.770757586792)*x[1]+(-0.497021878205)*x[2]**o+(-0.108546214912)*x[2]
27551            arg[1,2]=(-0.799159182698)*x[0]**o+(0.221424788319)*x[0]+(0.882092644719)*x[1]**o+(0.25804039903)*x[1]+(-0.788642442802)*x[2]**o+(-0.434293659417)*x[2]
27552            arg[1,3]=(-0.453596867354)*x[0]**o+(-0.855684542333)*x[0]+(0.421257402196)*x[1]**o+(0.162268279507)*x[1]+(-0.618396236314)*x[2]**o+(-0.650684413266)*x[2]
27553            arg[1,4]=(-0.464749011522)*x[0]**o+(-0.050661862641)*x[0]+(-0.7554290975)*x[1]**o+(-0.213826578781)*x[1]+(-0.536460109672)*x[2]**o+(-0.441490452069)*x[2]
27554            arg[2,0]=(0.335438338384)*x[0]**o+(-0.598515232086)*x[0]+(0.396958696838)*x[1]**o+(0.712094780848)*x[1]+(0.0112487672163)*x[2]**o+(-0.106361601342)*x[2]
27555            arg[2,1]=(0.157333767552)*x[0]**o+(0.763247557186)*x[0]+(0.454047596703)*x[1]**o+(0.874633696245)*x[1]+(0.80992740886)*x[2]**o+(-0.465565575276)*x[2]
27556            arg[2,2]=(-0.668932235683)*x[0]**o+(0.99055962791)*x[0]+(-0.473440344595)*x[1]**o+(-0.694789559356)*x[1]+(-0.337501506478)*x[2]**o+(-0.552461610916)*x[2]
27557            arg[2,3]=(-0.174040039098)*x[0]**o+(0.878604594327)*x[0]+(-0.488684761288)*x[1]**o+(-0.225626690649)*x[1]+(0.307550460093)*x[2]**o+(0.279172145442)*x[2]
27558            arg[2,4]=(0.771496476361)*x[0]**o+(-0.528231004311)*x[0]+(0.318620411204)*x[1]**o+(-0.831636376644)*x[1]+(-0.23477599759)*x[2]**o+(0.452986258707)*x[2]
27559            arg[3,0]=(0.689878836595)*x[0]**o+(-0.723887531161)*x[0]+(0.906077469738)*x[1]**o+(-0.729986756151)*x[1]+(0.860506345609)*x[2]**o+(-0.437203511895)*x[2]
27560            arg[3,1]=(0.867909616506)*x[0]**o+(-0.0480808079676)*x[0]+(-0.439925732789)*x[1]**o+(-0.753945614279)*x[1]+(-0.0015149141551)*x[2]**o+(-0.465559525628)*x[2]
27561            arg[3,2]=(0.915231983332)*x[0]**o+(0.77428136852)*x[0]+(0.902598621987)*x[1]**o+(-0.49204288782)*x[1]+(0.77362022057)*x[2]**o+(0.872135547313)*x[2]
27562            arg[3,3]=(0.274436414079)*x[0]**o+(-0.291721638943)*x[0]+(0.202501119852)*x[1]**o+(0.911330931145)*x[1]+(-0.61382801878)*x[2]**o+(0.386704897682)*x[2]
27563            arg[3,4]=(-0.0258695378217)*x[0]**o+(0.263046110195)*x[0]+(-0.162461126288)*x[1]**o+(-0.123570278155)*x[1]+(0.598012400912)*x[2]**o+(0.769951340801)*x[2]
27564            ref[0,0,0]=o*(-0.0252675874258)*x_ref[0]**(o-1)+(-0.998043629662)
27565            ref[0,0,1]=o*(-0.956603187221)*x_ref[1]**(o-1)+(-0.642113208329)
27566            ref[0,0,2]=o*(-0.59687133215)*x_ref[2]**(o-1)+(-0.222380006695)
27567            ref[0,1,0]=o*(0.540057023826)*x_ref[0]**(o-1)+(0.660021105706)
27568            ref[0,1,1]=o*(-0.0847035816563)*x_ref[1]**(o-1)+(0.734935147879)
27569            ref[0,1,2]=o*(0.895080236848)*x_ref[2]**(o-1)+(0.759076168225)
27570            ref[0,2,0]=o*(0.208276460123)*x_ref[0]**(o-1)+(-0.842726599314)
27571            ref[0,2,1]=o*(0.514146640689)*x_ref[1]**(o-1)+(-0.931115443386)
27572            ref[0,2,2]=o*(-0.427990918054)*x_ref[2]**(o-1)+(-0.0944702225036)
27573            ref[0,3,0]=o*(-0.669873393665)*x_ref[0]**(o-1)+(-0.164211687812)
27574            ref[0,3,1]=o*(0.257292402022)*x_ref[1]**(o-1)+(0.788249196864)
27575            ref[0,3,2]=o*(-0.0160232742588)*x_ref[2]**(o-1)+(0.593261720532)
27576            ref[0,4,0]=o*(0.574685018662)*x_ref[0]**(o-1)+(-0.404093341935)
27577            ref[0,4,1]=o*(-0.613704015926)*x_ref[1]**(o-1)+(-0.388769512229)
27578            ref[0,4,2]=o*(0.65014059769)*x_ref[2]**(o-1)+(0.796497720581)
27579            ref[1,0,0]=o*(0.579425469692)*x_ref[0]**(o-1)+(0.706786266065)
27580            ref[1,0,1]=o*(-0.489805412824)*x_ref[1]**(o-1)+(0.412673120993)
27581            ref[1,0,2]=o*(-0.261487328773)*x_ref[2]**(o-1)+(0.323016314178)
27582            ref[1,1,0]=o*(-0.406115852457)*x_ref[0]**(o-1)+(-0.320011474154)
27583            ref[1,1,1]=o*(0.83353566302)*x_ref[1]**(o-1)+(-0.770757586792)
27584            ref[1,1,2]=o*(-0.497021878205)*x_ref[2]**(o-1)+(-0.108546214912)
27585            ref[1,2,0]=o*(-0.799159182698)*x_ref[0]**(o-1)+(0.221424788319)
27586            ref[1,2,1]=o*(0.882092644719)*x_ref[1]**(o-1)+(0.25804039903)
27587            ref[1,2,2]=o*(-0.788642442802)*x_ref[2]**(o-1)+(-0.434293659417)
27588            ref[1,3,0]=o*(-0.453596867354)*x_ref[0]**(o-1)+(-0.855684542333)
27589            ref[1,3,1]=o*(0.421257402196)*x_ref[1]**(o-1)+(0.162268279507)
27590            ref[1,3,2]=o*(-0.618396236314)*x_ref[2]**(o-1)+(-0.650684413266)
27591            ref[1,4,0]=o*(-0.464749011522)*x_ref[0]**(o-1)+(-0.050661862641)
27592            ref[1,4,1]=o*(-0.7554290975)*x_ref[1]**(o-1)+(-0.213826578781)
27593            ref[1,4,2]=o*(-0.536460109672)*x_ref[2]**(o-1)+(-0.441490452069)
27594            ref[2,0,0]=o*(0.335438338384)*x_ref[0]**(o-1)+(-0.598515232086)
27595            ref[2,0,1]=o*(0.396958696838)*x_ref[1]**(o-1)+(0.712094780848)
27596            ref[2,0,2]=o*(0.0112487672163)*x_ref[2]**(o-1)+(-0.106361601342)
27597            ref[2,1,0]=o*(0.157333767552)*x_ref[0]**(o-1)+(0.763247557186)
27598            ref[2,1,1]=o*(0.454047596703)*x_ref[1]**(o-1)+(0.874633696245)
27599            ref[2,1,2]=o*(0.80992740886)*x_ref[2]**(o-1)+(-0.465565575276)
27600            ref[2,2,0]=o*(-0.668932235683)*x_ref[0]**(o-1)+(0.99055962791)
27601            ref[2,2,1]=o*(-0.473440344595)*x_ref[1]**(o-1)+(-0.694789559356)
27602            ref[2,2,2]=o*(-0.337501506478)*x_ref[2]**(o-1)+(-0.552461610916)
27603            ref[2,3,0]=o*(-0.174040039098)*x_ref[0]**(o-1)+(0.878604594327)
27604            ref[2,3,1]=o*(-0.488684761288)*x_ref[1]**(o-1)+(-0.225626690649)
27605            ref[2,3,2]=o*(0.307550460093)*x_ref[2]**(o-1)+(0.279172145442)
27606            ref[2,4,0]=o*(0.771496476361)*x_ref[0]**(o-1)+(-0.528231004311)
27607            ref[2,4,1]=o*(0.318620411204)*x_ref[1]**(o-1)+(-0.831636376644)
27608            ref[2,4,2]=o*(-0.23477599759)*x_ref[2]**(o-1)+(0.452986258707)
27609            ref[3,0,0]=o*(0.689878836595)*x_ref[0]**(o-1)+(-0.723887531161)
27610            ref[3,0,1]=o*(0.906077469738)*x_ref[1]**(o-1)+(-0.729986756151)
27611            ref[3,0,2]=o*(0.860506345609)*x_ref[2]**(o-1)+(-0.437203511895)
27612            ref[3,1,0]=o*(0.867909616506)*x_ref[0]**(o-1)+(-0.0480808079676)
27613            ref[3,1,1]=o*(-0.439925732789)*x_ref[1]**(o-1)+(-0.753945614279)
27614            ref[3,1,2]=o*(-0.0015149141551)*x_ref[2]**(o-1)+(-0.465559525628)
27615            ref[3,2,0]=o*(0.915231983332)*x_ref[0]**(o-1)+(0.77428136852)
27616            ref[3,2,1]=o*(0.902598621987)*x_ref[1]**(o-1)+(-0.49204288782)
27617            ref[3,2,2]=o*(0.77362022057)*x_ref[2]**(o-1)+(0.872135547313)
27618            ref[3,3,0]=o*(0.274436414079)*x_ref[0]**(o-1)+(-0.291721638943)
27619            ref[3,3,1]=o*(0.202501119852)*x_ref[1]**(o-1)+(0.911330931145)
27620            ref[3,3,2]=o*(-0.61382801878)*x_ref[2]**(o-1)+(0.386704897682)
27621            ref[3,4,0]=o*(-0.0258695378217)*x_ref[0]**(o-1)+(0.263046110195)
27622            ref[3,4,1]=o*(-0.162461126288)*x_ref[1]**(o-1)+(-0.123570278155)
27623            ref[3,4,2]=o*(0.598012400912)*x_ref[2]**(o-1)+(0.769951340801)
27624          res=grad(arg,where=w_ref)
27625          self.failUnless(isinstance(res,Data),"wrong type of result.")
27626          self.failUnlessEqual(res.getShape(),(4, 5)+(dim,),"wrong shape of result.")
27627          self.failUnless(Lsup(res-ref)<=self.RES_TOL*Lsup(ref),"wrong result")
27628       #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
27629       def test_grad_onFunctionOnBoundary_fromData_ContinuousFunction_rank3(self):
27630          """
27631          tests gradient for rank 3 Data on the FunctionOnBoundary
27632    
27633          assumptions: ContinuousFunction(self.domain) exists
27634                       self.domain supports gardient on FunctionOnBoundary
27635          """
27636          o=self.order
27637          dim=self.domain.getDim()
27638          w_ref=FunctionOnBoundary(self.domain)
27639          x_ref=w_ref.getX()
27640          w=ContinuousFunction(self.domain)
27641          x=w.getX()
27642          arg=Data(0,(6, 2, 2),w)
27643          ref=Data(0,(6, 2, 2)+(dim,),w_ref)
27644          if dim==2:
27645            arg[0,0,0]=(-0.301542954432)*x[0]**o+(-0.126029003998)*x[0]+(-0.408561086014)*x[1]**o+(0.090642210886)*x[1]
27646            arg[0,0,1]=(0.456052591865)*x[0]**o+(0.624896766511)*x[0]+(0.87137087467)*x[1]**o+(-0.296114354421)*x[1]
27647            arg[0,1,0]=(0.370833001032)*x[0]**o+(-0.700862384031)*x[0]+(-0.276076372016)*x[1]**o+(-0.820884025764)*x[1]
27648            arg[0,1,1]=(0.550805148631)*x[0]**o+(-0.628825647329)*x[0]+(0.906362219793)*x[1]**o+(0.093148354989)*x[1]
27649            arg[1,0,0]=(-0.80347190678)*x[0]**o+(-0.112285193049)*x[0]+(-0.703090064994)*x[1]**o+(0.738893806856)*x[1]
27650            arg[1,0,1]=(0.716113817265)*x[0]**o+(-0.403563175278)*x[0]+(-0.545474326725)*x[1]**o+(-0.085377932579)*x[1]
27651            arg[1,1,0]=(0.0151945295253)*x[0]**o+(0.419681120006)*x[0]+(0.605889120207)*x[1]**o+(0.94921670969)*x[1]
27652            arg[1,1,1]=(0.330888675781)*x[0]**o+(0.536336632067)*x[0]+(0.130243661103)*x[1]**o+(0.249581698903)*x[1]
27653            arg[2,0,0]=(-0.94168189216)*x[0]**o+(0.42899125004)*x[0]+(0.104206704223)*x[1]**o+(0.992451993183)*x[1]
27654            arg[2,0,1]=(-0.557898869487)*x[0]**o+(-0.0387050073802)*x[0]+(-0.880396260326)*x[1]**o+(-0.649734782543)*x[1]
27655            arg[2,1,0]=(0.0362873703011)*x[0]**o+(0.641116555832)*x[0]+(-0.878565186806)*x[1]**o+(-0.305825058029)*x[1]
27656            arg[2,1,1]=(0.926144430868)*x[0]**o+(0.207902756992)*x[0]+(-0.823834000424)*x[1]**o+(0.541980766739)*x[1]
27657            arg[3,0,0]=(-0.497934527226)*x[0]**o+(0.904514339359)*x[0]+(0.0627382682436)*x[1]**o+(-0.886845257384)*x[1]
27658            arg[3,0,1]=(0.458163004678)*x[0]**o+(-0.890966354569)*x[0]+(0.779511556433)*x[1]**o+(0.911407858547)*x[1]
27659            arg[3,1,0]=(0.643197533583)*x[0]**o+(-0.445952483015)*x[0]+(-0.491648538422)*x[1]**o+(-0.339803793944)*x[1]
27660            arg[3,1,1]=(0.564910446806)*x[0]**o+(-0.251342703228)*x[0]+(-0.102526510378)*x[1]**o+(0.989034603428)*x[1]
27661            arg[4,0,0]=(0.0728812877818)*x[0]**o+(-0.160839673847)*x[0]+(0.078039622926)*x[1]**o+(-0.778740146006)*x[1]
27662            arg[4,0,1]=(-0.848970759855)*x[0]**o+(0.83795370612)*x[0]+(-0.652802628253)*x[1]**o+(0.570900978851)*x[1]
27663            arg[4,1,0]=(0.492154273484)*x[0]**o+(-0.138488354185)*x[0]+(0.269142955069)*x[1]**o+(-0.849995493706)*x[1]
27664            arg[4,1,1]=(0.945032529684)*x[0]**o+(0.611284327327)*x[0]+(0.549856083886)*x[1]**o+(0.347585489606)*x[1]
27665            arg[5,0,0]=(0.481456547858)*x[0]**o+(0.238848312219)*x[0]+(-0.5849679413)*x[1]**o+(-0.749140400072)*x[1]
27666            arg[5,0,1]=(0.27081490311)*x[0]**o+(-0.101642948148)*x[0]+(0.31847076679)*x[1]**o+(0.192182993758)*x[1]
27667            arg[5,1,0]=(-0.873348151897)*x[0]**o+(-0.613499952221)*x[0]+(0.54087826152)*x[1]**o+(-0.269096416524)*x[1]
27668            arg[5,1,1]=(-0.803277233859)*x[0]**o+(-0.714237882827)*x[0]+(-0.205544031812)*x[1]**o+(0.188144864673)*x[1]
27669            ref[0,0,0,0]=o*(-0.301542954432)*x_ref[0]**(o-1)+(-0.126029003998)
27670            ref[0,0,0,1]=o*(-0.408561086014)*x_ref[1]**(o-1)+(0.090642210886)
27671            ref[0,0,1,0]=o*(0.456052591865)*x_ref[0]**(o-1)+(0.624896766511)
27672            ref[0,0,1,1]=o*(0.87137087467)*x_ref[1]**(o-1)+(-0.296114354421)
27673            ref[0,1,0,0]=o*(0.370833001032)*x_ref[0]**(o-1)+(-0.700862384031)
27674            ref[0,1,0,1]=o*(-0.276076372016)*x_ref[1]**(o-1)+(-0.820884025764)
27675            ref[0,1,1,0]=o*(0.550805148631)*x_ref[0]**(o-1)+(-0.628825647329)
27676            ref[0,1,1,1]=o*(0.906362219793)*x_ref[1]**(o-1)+(0.093148354989)
27677            ref[1,0,0,0]=o*(-0.80347190678)*x_ref[0]**(o-1)+(-0.112285193049)
27678            ref[1,0,0,1]=o*(-0.703090064994)*x_ref[1]**(o-1)+(0.738893806856)
27679            ref[1,0,1,0]=o*(0.716113817265)*x_ref[0]**(o-1)+(-0.403563175278)
27680            ref[1,0,1,1]=o*(-0.545474326725)*x_ref[1]**(o-1)+(-0.085377932579)
27681            ref[1,1,0,0]=o*(0.0151945295253)*x_ref[0]**(o-1)+(0.419681120006)
27682            ref[1,1,0,1]=o*(0.605889120207)*x_ref[1]**(o-1)+(0.94921670969)
27683            ref[1,1,1,0]=o*(0.330888675781)*x_ref[0]**(o-1)+(0.536336632067)
27684            ref[1,1,1,1]=o*(0.130243661103)*x_ref[1]**(o-1)+(0.249581698903)
27685            ref[2,0,0,0]=o*(-0.94168189216)*x_ref[0]**(o-1)+(0.42899125004)
27686            ref[2,0,0,1]=o*(0.104206704223)*x_ref[1]**(o-1)+(0.992451993183)
27687            ref[2,0,1,0]=o*(-0.557898869487)*x_ref[0]**(o-1)+(-0.0387050073802)
27688            ref[2,0,1,1]=o*(-0.880396260326)*x_ref[1]**(o-1)+(-0.649734782543)
27689            ref[2,1,0,0]=o*(0.0362873703011)*x_ref[0]**(o-1)+(0.641116555832)
27690            ref[2,1,0,1]=o*(-0.878565186806)*x_ref[1]**(o-1)+(-0.305825058029)
27691            ref[2,1,1,0]=o*(0.926144430868)*x_ref[0]**(o-1)+(0.207902756992)
27692            ref[2,1,1,1]=o*(-0.823834000424)*x_ref[1]**(o-1)+(0.541980766739)
27693            ref[3,0,0,0]=o*(-0.497934527226)*x_ref[0]**(o-1)+(0.904514339359)
27694            ref[3,0,0,1]=o*(0.0627382682436)*x_ref[1]**(o-1)+(-0.886845257384)
27695            ref[3,0,1,0]=o*(0.458163004678)*x_ref[0]**(o-1)+(-0.890966354569)
27696            ref[3,0,1,1]=o*(0.779511556433)*x_ref[1]**(o-1)+(0.911407858547)
27697            ref[3,1,0,0]=o*(0.643197533583)*x_ref[0]**(o-1)+(-0.445952483015)
27698            ref[3,1,0,1]=o*(-0.491648538422)*x_ref[1]**(o-1)+(-0.339803793944)
27699            ref[3,1,1,0]=o*(0.564910446806)*x_ref[0]**(o-1)+(-0.251342703228)
27700            ref[3,1,1,1]=o*(-0.102526510378)*x_ref[1]**(o-1)+(0.989034603428)
27701            ref[4,0,0,0]=o*(0.0728812877818)*x_ref[0]**(o-1)+(-0.160839673847)
27702            ref[4,0,0,1]=o*(0.078039622926)*x_ref[1]**(o-1)+(-0.778740146006)
27703            ref[4,0,1,0]=o*(-0.848970759855)*x_ref[0]**(o-1)+(0.83795370612)
27704            ref[4,0,1,1]=o*(-0.652802628253)*x_ref[1]**(o-1)+(0.570900978851)
27705            ref[4,1,0,0]=o*(0.492154273484)*x_ref[0]**(o-1)+(-0.138488354185)
27706            ref[4,1,0,1]=o*(0.269142955069)*x_ref[1]**(o-1)+(-0.849995493706)
27707            ref[4,1,1,0]=o*(0.945032529684)*x_ref[0]**(o-1)+(0.611284327327)
27708            ref[4,1,1,1]=o*(0.549856083886)*x_ref[1]**(o-1)+(0.347585489606)
27709            ref[5,0,0,0]=o*(0.481456547858)*x_ref[0]**(o-1)+(0.238848312219)
27710            ref[5,0,0,1]=o*(-0.5849679413)*x_ref[1]**(o-1)+(-0.749140400072)
27711            ref[5,0,1,0]=o*(0.27081490311)*x_ref[0]**(o-1)+(-0.101642948148)
27712            ref[5,0,1,1]=o*(0.31847076679)*x_ref[1]**(o-1)+(0.192182993758)
27713            ref[5,1,0,0]=o*(-0.873348151897)*x_ref[0]**(o-1)+(-0.613499952221)
27714            ref[5,1,0,1]=o*(0.54087826152)*x_ref[1]**(o-1)+(-0.269096416524)
27715            ref[5,1,1,0]=o*(-0.803277233859)*x_ref[0]**(o-1)+(-0.714237882827)
27716            ref[5,1,1,1]=o*(-0.205544031812)*x_ref[1]**(o-1)+(0.188144864673)
27717          else:
27718            arg[0,0,0]=(-0.639251981322)*x[0]**o+(-0.115972267818)*x[0]+(0.491134645863)*x[1]**o+(0.345343639029)*x[1]+(-0.663597762251)*x[2]**o+(-0.328150609455)*x[2]
27719            arg[0,0,1]=(-0.76280151252)*x[0]**o+(0.933789965647)*x[0]+(-0.117386438957)*x[1]**o+(0.738801880577)*x[1]+(-0.823759196233)*x[2]**o+(-0.591225057134)*x[2]
27720            arg[0,1,0]=(-0.515479158328)*x[0]**o+(-0.498840147412)*x[0]+(-0.07870152457)*x[1]**o+(0.240823897179)*x[1]+(-0.529483054724)*x[2]**o+(0.957444878465)*x[2]
27721            arg[0,1,1]=(0.659163197783)*x[0]**o+(-0.987017484017)*x[0]+(0.316073196672)*x[1]**o+(-0.858184573568)*x[1]+(-0.324909144593)*x[2]**o+(-0.89624674398)*x[2]
27722            arg[1,0,0]=(0.582390600104)*x[0]**o+(-0.808724939916)*x[0]+(-0.204186916478)*x[1]**o+(0.63212764696)*x[1]+(-0.272947627588)*x[2]**o+(-0.133369751815)*x[2]
27723            arg[1,0,1]=(-0.955892141909)*x[0]**o+(0.915832405494)*x[0]+(-0.823428836636)*x[1]**o+(-0.527176552593)*x[1]+(-0.439872810771)*x[2]**o+(0.282431362763)*x[2]
27724            arg[1,1,0]=(0.269192050139)*x[0]**o+(0.304289733459)*x[0]+(-0.252137123064)*x[1]**o+(0.159346881758)*x[1]+(-0.875713938743)*x[2]**o+(-0.804681982204)*x[2]
27725            arg[1,1,1]=(0.100159906585)*x[0]**o+(0.652670710888)*x[0]+(-0.0471177296503)*x[1]**o+(0.15344212377)*x[1]+(0.162356023341)*x[2]**o+(0.242855769737)*x[2]
27726            arg[2,0,0]=(-0.0214334988311)*x[0]**o+(0.444654672491)*x[0]+(0.235478960156)*x[1]**o+(0.62191559883)*x[1]+(0.124531773653)*x[2]**o+(-0.603748942811)*x[2]
27727            arg[2,0,1]=(-0.00696114124898)*x[0]**o+(-0.350635993795)*x[0]+(0.766513244466)*x[1]**o+(-0.99996024111)*x[1]+(0.976036637033)*x[2]**o+(0.00703160282837)*x[2]
27728            arg[2,1,0]=(-0.210499708873)*x[0]**o+(-0.763641982769)*x[0]+(0.435435481771)*x[1]**o+(0.0886400511888)*x[1]+(0.540913993886)*x[2]**o+(-0.864904989707)*x[2]
27729            arg[2,1,1]=(0.609017357846)*x[0]**o+(-0.681305727596)*x[0]+(-0.291763309802)*x[1]**o+(0.12465245807)*x[1]+(-0.265362499082)*x[2]**o+(-0.978509447338)*x[2]
27730            arg[3,0,0]=(0.622861389608)*x[0]**o+(-0.341108338962)*x[0]+(0.908588438318)*x[1]**o+(-0.583012719535)*x[1]+(0.33513654797)*x[2]**o+(-0.835513934636)*x[2]
27731            arg[3,0,1]=(0.164841305439)*x[0]**o+(-0.622242302911)*x[0]+(-0.0469305037163)*x[1]**o+(-0.859517953063)*x[1]+(-0.112485630662)*x[2]**o+(0.31475831421)*x[2]
27732            arg[3,1,0]=(-0.177913851996)*x[0]**o+(0.74607750787)*x[0]+(-0.188838634745)*x[1]**o+(-0.803617744529)*x[1]+(0.18839438068)*x[2]**o+(-0.857696671728)*x[2]
27733            arg[3,1,1]=(0.485172697497)*x[0]**o+(-0.554750723313)*x[0]+(-0.59838039994)*x[1]**o+(-0.83177053032)*x[1]+(0.655490277067)*x[2]**o+(0.0645924856059)*x[2]
27734            arg[4,0,0]=(0.900678166492)*x[0]**o+(-0.485573346705)*x[0]+(0.0108149783491)*x[1]**o+(0.982616024342)*x[1]+(-0.374371784319)*x[2]**o+(-0.825014166204)*x[2]
27735            arg[4,0,1]=(0.682753472393)*x[0]**o+(0.810927347906)*x[0]+(-0.128780174224)*x[1]**o+(0.514607304836)*x[1]+(0.606285011416)*x[2]**o+(-0.691191486471)*x[2]
27736            arg[4,1,0]=(0.0103661338625)*x[0]**o+(0.184111752707)*x[0]+(-0.270751890504)*x[1]**o+(0.207351712222)*x[1]+(-0.366280871535)*x[2]**o+(-0.638450092731)*x[2]
27737            arg[4,1,1]=(-0.111302974207)*x[0]**o+(-0.520252159917)*x[0]+(-0.911197545741)*x[1]**o+(-0.779732160528)*x[1]+(-0.443379349795)*x[2]**o+(-0.783540988384)*x[2]
27738            arg[5,0,0]=(0.319701766792)*x[0]**o+(-0.953929305858)*x[0]+(-0.783942145061)*x[1]**o+(0.687992583635)*x[1]+(0.873868267323)*x[2]**o+(-0.204836707955)*x[2]
27739            arg[5,0,1]=(-0.240340717622)*x[0]**o+(-0.799598459684)*x[0]+(-0.827096078861)*x[1]**o+(0.229071234102)*x[1]+(0.309197705487)*x[2]**o+(-0.286088934882)*x[2]
27740            arg[5,1,0]=(-0.0926450319507)*x[0]**o+(0.638985747884)*x[0]+(0.604913216138)*x[1]**o+(-0.364251815312)*x[1]+(-0.47971664069)*x[2]**o+(-0.20655528518)*x[2]
27741            arg[5,1,1]=(0.418341452333)*x[0]**o+(0.430002851684)*x[0]+(0.624025385599)*x[1]**o+(0.338601201629)*x[1]+(0.0900364406242)*x[2]**o+(0.193533337073)*x[2]
27742            ref[0,0,0,0]=o*(-0.639251981322)*x_ref[0]**(o-1)+(-0.115972267818)
27743            ref[0,0,0,1]=o*(0.491134645863)*x_ref[1]**(o-1)+(0.345343639029)
27744            ref[0,0,0,2]=o*(-0.663597762251)*x_ref[2]**(o-1)+(-0.328150609455)
27745            ref[0,0,1,0]=o*(-0.76280151252)*x_ref[0]**(o-1)+(0.933789965647)
27746            ref[0,0,1,1]=o*(-0.117386438957)*x_ref[1]**(o-1)+(0.738801880577)
27747            ref[0,0,1,2]=o*(-0.823759196233)*x_ref[2]**(o-1)+(-0.591225057134)
27748            ref[0,1,0,0]=o*(-0.515479158328)*x_ref[0]**(o-1)+(-0.498840147412)
27749            ref[0,1,0,1]=o*(-0.07870152457)*x_ref[1]**(o-1)+(0.240823897179)
27750            ref[0,1,0,2]=o*(-0.529483054724)*x_ref[2]**(o-1)+(0.957444878465)
27751            ref[0,1,1,0]=o*(0.659163197783)*x_ref[0]**(o-1)+(-0.987017484017)
27752            ref[0,1,1,1]=o*(0.316073196672)*x_ref[1]**(o-1)+(-0.858184573568)
27753            ref[0,1,1,2]=o*(-0.324909144593)*x_ref[2]**(o-1)+(-0.89624674398)
27754            ref[1,0,0,0]=o*(0.582390600104)*x_ref[0]**(o-1)+(-0.808724939916)
27755            ref[1,0,0,1]=o*(-0.204186916478)*x_ref[1]**(o-1)+(0.63212764696)
27756            ref[1,0,0,2]=o*(-0.272947627588)*x_ref[2]**(o-1)+(-0.133369751815)
27757            ref[1,0,1,0]=o*(-0.955892141909)*x_ref[0]**(o-1)+(0.915832405494)
27758            ref[1,0,1,1]=o*(-0.823428836636)*x_ref[1]**(o-1)+(-0.527176552593)
27759            ref[1,0,1,2]=o*(-0.439872810771)*x_ref[2]**(o-1)+(0.282431362763)
27760            ref[1,1,0,0]=o*(0.269192050139)*x_ref[0]**(o-1)+(0.304289733459)
27761            ref[1,1,0,1]=o*(-0.252137123064)*x_ref[1]**(o-1)+(0.159346881758)
27762            ref[1,1,0,2]=o*(-0.875713938743)*x_ref[2]**(o-1)+(-0.804681982204)
27763            ref[1,1,1,0]=o*(0.100159906585)*x_ref[0]**(o-1)+(0.652670710888)
27764            ref[1,1,1,1]=o*(-0.0471177296503)*x_ref[1]**(o-1)+(0.15344212377)
27765            ref[1,1,1,2]=o*(0.162356023341)*x_ref[2]**(o-1)+(0.242855769737)
27766            ref[2,0,0,0]=o*(-0.0214334988311)*x_ref[0]**(o-1)+(0.444654672491)
27767            ref[2,0,0,1]=o*(0.235478960156)*x_ref[1]**(o-1)+(0.62191559883)
27768            ref[2,0,0,2]=o*(0.124531773653)*x_ref[2]**(o-1)+(-0.603748942811)
27769            ref[2,0,1,0]=o*(-0.00696114124898)*x_ref[0]**(o-1)+(-0.350635993795)
27770            ref[2,0,1,1]=o*(0.766513244466)*x_ref[1]**(o-1)+(-0.99996024111)
27771            ref[2,0,1,2]=o*(0.976036637033)*x_ref[2]**(o-1)+(0.00703160282837)
27772            ref[2,1,0,0]=o*(-0.210499708873)*x_ref[0]**(o-1)+(-0.763641982769)
27773            ref[2,1,0,1]=o*(0.435435481771)*x_ref[1]**(o-1)+(0.0886400511888)
27774            ref[2,1,0,2]=o*(0.540913993886)*x_ref[2]**(o-1)+(-0.864904989707)
27775            ref[2,1,1,0]=o*(0.609017357846)*x_ref[0]**(o-1)+(-0.681305727596)
27776            ref[2,1,1,1]=o*(-0.291763309802)*x_ref[1]**(o-1)+(0.12465245807)
27777            ref[2,1,1,2]=o*(-0.265362499082)*x_ref[2]**(o-1)+(-0.978509447338)
27778            ref[3,0,0,0]=o*(0.622861389608)*x_ref[0]**(o-1)+(-0.341108338962)
27779            ref[3,0,0,1]=o*(0.908588438318)*x_ref[1]**(o-1)+(-0.583012719535)
27780       &nbs