[SciPy-user] C/Fortran callbacks [was "integrate.odeint"]
Robert Kern
rkern at ucsd.edu
Sun Oct 17 11:26:01 EDT 2004
Travis Oliphant wrote:
> We have been interested in something like this for a while. I would
> like to see the user be able to write c and/or fortran code to compute
> the function to be integrated.
How about this for a sketch:
C or Fortran function bodies can be defined as a Python string a la weave.
C: We use the weave framework to make an extension module with the
function body embedded into a properly defined function.
Fortran: The Fortran code will be put into a separate Fortran file as
a subroutine. A C extension module is written out which will reference
the subroutine.
The extension module will create a CObject which contains a direct
function pointer to the function.
f2py could be modified (I hope) to accept one of these CObjects as an
valid input for a callback.
An additional nicety would be for f2py to (either optionally or
additionally) provide these CObjects for any subroutine wrapped by f2py.
That way, one could write a single Fortran file (with helpful "cf2py"
comments) with all of one's callbacks instead of semi-inline weave
code*. In fact, if this modification is made to f2py, then both the C
and Fortran can use it as the back end for generating the extension
module which holds the user-defined callback.
Pearu, do you have any feelings about the feasibility of this sketch?
* Not to disparage weave, but I've found that although I'm too young to
have been "raised" in a Fortran culture, f2py makes writing new FORTRAN
(77 even!) code my preferred method for making fast, array-oriented
computational routines.
--
Robert Kern
rkern at ucsd.edu
"In the fields of hell where the grass grows high
Are the graves of dreams allowed to die."
-- Richard Harter
More information about the SciPy-User
mailing list