[Numpy-discussion] [ANN] Pyfort-7.0b2 -- extending Numeric with C routines
Paul F Dubois
paul at pfdubois.com
Sun Mar 24 08:49:05 EST 2002
Pyfort 7.0b2 is now available at sf.net/projects/pyfortran.
Nummies who do not use Fortran may be interested in using Pyfort; with
Michiel de Hoon's "C" option, it is now extremely easy to wrap a simple
kind of C code for processing Numeric's arrays, like this:
double ctry(int n, double* x, double* y)
{
int i;
double d;
d = 0.0;
for (i=0; i < n; ++i) {
d += x[i] * y[i];
}
return d;
}
void cout(int n, double* x, double* y)
{
int i;
for (i = 0; i < n; ++i) {
y[i] = 1.414159 * x[i];
}
}
double c2(int n, int m, double x[n][m]) {
double sum = 0.0;
int i, j;
for (i=0; i < n; i++) {
for (j=0; j < m; j++) {
sum += x[i][j];
}
}
return sum;
}
and then call it from Python like this:
import testc, Numeric
x = Numeric.array([1.,2.,3.])
y = Numeric.array([6.,-1.,-1.])
z = Numeric.arange(6) *1.0
z.shape=(3,2)
print "Should be 1.0:", testc.ctry(x,y)
print "Should be sqrt(2) * [1,2,3]:", testc.cout(x)
print "Should be 15.0:", testc.c2(z)
z.shape=(2,3)
print "Should be 15.0:", testc.c2(z)
----------- notes
Somehow 7.0b1 was missing the C examples. I apparently lost the changes
I had made to the MANIFEST and did not realize my CVS commits had
failed. Bad day at the office, I guess.
I added testc back in, and added a 2-dimensional example. I also
eliminated some warning errors in the generated code, and fixed an error
in that case. My thanks to Michiel de Hoon and J.S. Whitaker.
More information about the NumPy-Discussion
mailing list