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

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