38 check_macro (dim==2,
"dexp(d="<<dim<<
"): only d=2 case available yet, sorry");
39 static Float eps = 1e3*std::numeric_limits<Float>::epsilon();
45 Float d2 = sqr(a-c)+4*b2;
62 Float a3 = sinh(
d/2), a4 = cosh(
d/2);
63 E(0,0, 0,0) = (eac/d3)
64 *((
pow(a-c,3) + 4*sqr(b)*(a-c+1))*a3
65 +
d*(sqr(a-c) + 2*sqr(b))*a4);
66 E(0,0, 0,1) = E(0,0, 1,0)
68 *((sqr(
d) + 2*(c-a))*a3 +
d*(a-c)*a4);
69 E(0,0, 1,1) = ((2*sqr(b)*eac)/d3)
71 E(0,1, 0,0) = E(1,0, 0,0)
73 *((sqr(
d) + 2*(c-a))*a3 +
d*(a-c)*a4);
74 E(0,1, 0,1) = E(1,0, 0,1) = E(0,1, 1,0) = E(1,0, 1,0)
76 *(sqr(a-c)*a3 + 2*sqr(b)*
d*a4);
77 E(0,1, 1,1) = E(1,0, 1,1)
79 *((sqr(
d) + 2*(a-c))*a3 +
d*(c-a)*a4);
80 E(1,1, 0,0) = ((2*sqr(b)*eac)/d3)
82 E(1,1, 0,1) = E(1,1, 1,0)
84 *((sqr(
d) + 2*(a-c))*a3 +
d*(c-a)*a4);
85 E(1,1, 1,1) = ((2*eac)/d3)
86 *((
pow(a-c,3) + 4*sqr(b)*(a-c-1))*a3
87 -
d*(sqr(a-c) + 2*sqr(b))*a4);
97 k7=
exp(-
d/2.0+c/2.0+a/2.0),
101 k11=c*
d*k10-a*
d*k10-c2*k10+2*a*c*k10-4*b2*k10-a2*k10-c*
d+a*
d-c2+2*a*c-4*b2-a2;
103 = -k5*(1.0/2.0-k8*k9/4.0)*k7*k11/2.0+k8*k7*k11/sqr(d2)/2.0-k5*k7*(-
d*k10-k8*c2*k9*k10/2.0+a*k8*c*k9*k10+k8*c*k9*k10/2.0-2*b2*k8*k9*k10-a2*k8*k9*k10/2.0-a*k8*k9*k10/2.0+k8*c*k10/2.0+2*c*k10-a*k8*k10/2.0-2*a*k10+
d-k8*c*k9/2.0+a*k8*k9/2.0+2*c-2*a)/2.0;
106 T k6=
exp(-
d/2.0+c/2.0+a/2.0),
109 k9=c*
d*k8-a*
d*k8-c2*k8+2*a*c*k8-4*b2*k8-a2*k8-c*
d+a*
d-c2+2*a*c-4*b2-a2;
110 E(0,0, 0,1) = E(0,0, 1,0)
111 = b*k6*k9/
pow(
d,3)+4*b*k6*k9/sqr(d2)-k6*(-4*b*c2*k7*k8+8*a*b*c*k7*k8+4*b*c*k7*k8-16*
pow(b,3)*k7*k8-4*a2*b*k7*k8-4*a*b*k7*k8+4*b*c*k8-4*a*b*k8-8*b*k8-4*b*c*k7+4*a*b*k7-8*b)/d2/2.0;
115 k7=
exp(-
d/2.0+c/2.0+a/2.0),
119 k11=c*
d*k10-a*
d*k10-c2*k10+2*a*c*k10-4*b2*k10-a2*k10-c*
d+a*
d-c2+2*a*c-4*b2-a2;
121 = -k5*(1.0/2.0-k8*k9/4.0)*k7*k11/2.0+k8*k7*k11/sqr(d2)/2.0-k5*k7*(
d*k10-c2*k8*k9*k10/2.0+a*c*k8*k9*k10+c*k8*k9*k10/2.0-2*b2*k8*k9*k10-a2*k8*k9*k10/2.0-a*k8*k9*k10/2.0+c*k8*k10/2.0-a*k8*k10/2.0-2*c*k10+2*a*k10-
d-c*k8*k9/2.0+a*k8*k9/2.0-2*c+2*a)/2.0;
130 k6=
exp(-
d/2.0+k4+k3),
133 E(0,1, 0,0) = E(1,0, 0,0)
134 = b*k8*(1.0/2.0-k1*k8/4.0)*k6*k7-b*k1*k6*k7/
pow(
d,3)/2.0+b*k1*
exp(
d/2.0+k4+k3)/d2/2.0;
140 k7=
exp(-
d/2.0+k5+k4),
142 E(0,1, 0,1) = E(1,0, 0,1) = E(0,1, 1,0) = E(1,0, 1,0)
143 = k7*k8/
d-2*b2*k3*k7*k8-4*b2*k7*k8/
pow(
d,3)+4*b2*k3*
exp(
d/2.0+k5+k4);
150 k6=
exp(-
d/2.0+k4+k3),
153 E(0,1, 1,1) = E(1,0, 1,1)
154 = b*k8*(1.0/2.0-k1*k8/4.0)*k6*k7-b*k1*k6*k7/
pow(
d,3)/2.0+b*k1*
exp(
d/2.0+k4+k3)/d2/2.0;
163 k9=
exp(-
d/2.0+c/2.0+a/2.0),
169 k15=c*
d*k14-a*
d*k14+c2*k14-2*a*c*k14+4*b2*k14+a2*k14-c*
d+a*
d+c2+k4+k3+a2;
170 E(1,1,0,0) = k7*(1.0/2.0-k12*k13/4.0)*k9*k15/2.0-k12*k9*k15/sqr(d2)/2.0+k7*k9*(-
d*k14+k12*c2*k13*k14/2.0-a*k12*c*k13*k14+k12*c*k13*k14/2.0+2*b2*k12*k13*k14+a2*k12*k13*k14/2.0-a*k12*k13*k14/2.0+k12*c*k14/2.0-2*c*k14-a*k12*k14/2.0+2*a*k14+
d-k12*c*k13/2.0+a*k12*k13/2.0+k11+k10)/2.0;
175 k8=
exp(-
d/2.0+c/2.0+a/2.0),
178 k11=c*
d*k10-a*
d*k10+c2*k10-2*a*c*k10+4*b2*k10+a2*k10-c*
d+a*
d+c2+k4+k3+a2;
179 E(1,1,0,1) = E(1,1, 1,0)
180 = -b*k8*k11/
pow(
d,3)-4*b*k8*k11/sqr(d2)+k8*(4*b*c2*k9*k10-8*a*b*c*k9*k10+4*b*c*k9*k10+16*
pow(b,3)*k9*k10+4*a2*b*k9*k10-4*a*b*k9*k10+4*b*c*k10-4*a*b*k10+8*b*k10-4*b*c*k9+4*a*b*k9+8*b)/d2/2.0;
186 k9=
exp(-
d/2.0+c/2.0+a/2.0),
192 k15=c*
d*k14-a*
d*k14+c2*k14-2*a*c*k14+4*b2*k14+a2*k14-c*
d+a*
d+c2+k4+k3+a2;
193 E(1,1,1,1) = k7*(1.0/2.0-k12*k13/4.0)*k9*k15/2.0-k12*k9*k15/sqr(d2)/2.0+k7*k9*(
d*k14+c2*k12*k13*k14/2.0-a*c*k12*k13*k14+c*k12*k13*k14/2.0+2*b2*k12*k13*k14+a2*k12*k13*k14/2.0-a*k12*k13*k14/2.0+c*k12*k14/2.0-a*k12*k14/2.0+2*c*k14-2*a*k14-
d-c*k12*k13/2.0+a*k12*k13/2.0+k11+k10)/2.0;