# [MATRIX-SIG] Python/Fortran interface

**Kevin Rodgers
**
krodgers@tdyryan.com

*Mon, 18 Aug 1997 08:36:13 -0700*

At 07:39 AM 8/18/97 -0700, motteler@laura.llnl.gov wrote:
>*FORTRAN arrays are stored in column-major order whereas
*>*(contiguous) NumPy arrays are stored in row-major order.
*>*Thus to communicate a NumPy array to FORTRAN, make it
*>*contiguous and take its transpose.
*>*
*This may seem a minor nit, but "row-major" and "column-major" seem to imply
two-dimensional arrays only; it would be more correct to say, "Fortran
stores arrays contiguously with the leftmost index varying fastest and the
rightmost index varying slowest; C is just the opposite." This generalizes
to arrays of more than two dimensions, which is one of the real advantages
of NumPy over Matlab or Xmath (yes, I know that Matlab 5 has "true"
multidimensional arrays, and Xmath (of which I am a devoted user) has some
specialized arrays of more than two dimensions). So plllleeeeezzzzzeeeee
let's not restrict ourselves to two-d, linear algebra stuff here!
On the more general subject of extending/embedding/interfacing NumPy with
whatever, does anybody have a reasonably straightforward and concise
explanation of how NumPy arrays are stored (i.e., an annotated structure
definition)? I've looked through the source, plus a fairly substantial
library that has NumPy interfaces (PyOpenGL), and I've been able to piece
it together somewhat, but it still has a bit of the
fumbling-in-the-pea-soup feeling to it. Thanks in advance . . .
----------------------------------------------------------------------
Kevin Rodgers Teledyne Ryan Aeronautical krodgers@tdyryan.com
"This one goes up to eleven." -- Nigel Tufnel
----------------------------------------------------------------------
_______________
MATRIX-SIG - SIG on Matrix Math for Python
send messages to: matrix-sig@python.org
administrivia to: matrix-sig-request@python.org
_______________