Hi all, I have the following code fragment:
# Symbols p,q,r = symbols('p q r') # Input N by M by 3 Numpy array of floats pts = np.array((N, M, 3)) # Output array of floats djac = np.zeros((N, M)) # Points (floats) pqrpts = np.array((M, 3)) # List of M polynomials as an fn of p,q,r mpol = [get_poly(midx, p, q, r) for midx in xrange(M)] # Want to compute for nidx in xrange(N): # mvec is a vector as pts[nidx,midx] is a vector mvec = sum(mpol[midx]*pts[nidx,midx] for midx in xrange(M)) dexp = Matrix(mvec).jacobian([p, q, r]).det() for midx in xrange(M): p,q,r = pqrpts[midx] djac[nidx,midx] = float(dexp.subs(dict(p=p,q=q,r=r))) where N ~ 10^5, M ~ 27. I wish to use autowrap so that I can instead write: # Init code ... for nidx in xrange(N): djac[nidx,:] = wraped_fn(pqrpts, pts[nidx]) While I am comfortable with using autowraps for simple scalar(s)-in and scalar-out type expressions this is a bit more complicated. Clearly it will be necessary to move the mvec and dexp definitions outside the main for loop using a M*3 array of dummy symbols (to be substituted for pts[nidx]). Similarly, mvec and dexp will no longer be single expressions but will have to become vector/list expressions of length M. In addition we are now returning a numpy array/Python list. Can someone sketch out the steps for accomplishing these things with autowrap? Regards, Freddie.
signature.asc
Description: OpenPGP digital signature