forced simplification of sympy expressions before converting to c++

This commit is contained in:
James Hensman 2012-12-21 11:41:42 +00:00
parent dfdd47a0a2
commit 2999c6d2d6

View file

@ -47,8 +47,8 @@ class spkern(kernpart):
self.set_param(param) self.set_param(param)
#Differentiate! #Differentiate!
self._sp_dk_dtheta = [sp.diff(k,theta) for theta in self._sp_theta] self._sp_dk_dtheta = [sp.diff(k,theta).simplify() for theta in self._sp_theta]
self._sp_dk_dx = [sp.diff(k,xi) for xi in self._sp_x] self._sp_dk_dx = [sp.diff(k,xi).simplify() for xi in self._sp_x]
#self._sp_dk_dz = [sp.diff(k,zi) for zi in self._sp_z] #self._sp_dk_dz = [sp.diff(k,zi) for zi in self._sp_z]
#self.compute_psi_stats() #self.compute_psi_stats()
@ -124,7 +124,7 @@ class spkern(kernpart):
int N = target_array->dimensions[0]; int N = target_array->dimensions[0];
int M = target_array->dimensions[1]; int M = target_array->dimensions[1];
int D = X_array->dimensions[1]; int D = X_array->dimensions[1];
#pragma omp parallel for private(j) //#pragma omp parallel for private(j)
for (i=0;i<N;i++){ for (i=0;i<N;i++){
for (j=0;j<M;j++){ for (j=0;j<M;j++){
target[i*M+j] = k(%s); target[i*M+j] = k(%s);
@ -141,7 +141,7 @@ class spkern(kernpart):
int i; int i;
int N = target_array->dimensions[0]; int N = target_array->dimensions[0];
int D = X_array->dimensions[1]; int D = X_array->dimensions[1];
#pragma omp parallel for //#pragma omp parallel for
for (i=0;i<N;i++){ for (i=0;i<N;i++){
target[i] = k(%s); target[i] = k(%s);
} }
@ -157,7 +157,7 @@ class spkern(kernpart):
int N = partial_array->dimensions[0]; int N = partial_array->dimensions[0];
int M = partial_array->dimensions[1]; int M = partial_array->dimensions[1];
int D = X_array->dimensions[1]; int D = X_array->dimensions[1];
#pragma omp parallel for private(j) //#pragma omp parallel for private(j)
for (i=0;i<N;i++){ for (i=0;i<N;i++){
for (j=0;j<M;j++){ for (j=0;j<M;j++){
%s %s
@ -190,10 +190,13 @@ class spkern(kernpart):
int N = partial_array->dimensions[0]; int N = partial_array->dimensions[0];
int M = partial_array->dimensions[1]; int M = partial_array->dimensions[1];
int D = X_array->dimensions[1]; int D = X_array->dimensions[1];
#pragma omp parallel for private(j) //#pragma omp parallel for private(j)
for (i=0;i<N; i++){ for (i=0;i<N; i++){
for (j=0; j<M; j++){ for (j=0; j<M; j++){
%s %s
//if(isnan(target[i*D+2])){printf("%%f\\n",dk_dx2(X[i*D+0], X[i*D+1], X[i*D+2], Z[j*D+0], Z[j*D+1], Z[j*D+2], param[0], param[1], param[2], param[3], param[4], param[5]));}
//if(isnan(target[i*D+2])){printf("%%f,%%f,%%i,%%i\\n", X[i*D+2], Z[j*D+2],i,j);}
} }
} }
%s %s