We were talking about Fortran. I do not know about Fortran90. Lapack is definitely Fortran77 and is compiled as such. In any case I would recommend linking against cblas and clapack, the C bindings that are also available for the most useful libraries -- atlas, Intel's, IBM's. There is no ambiguity there. Juanjo On Mon, Jun 7, 2010 at 8:38 PM, Martin Simmons <martin@lispworks.com> wrote:
On Mon, 7 Jun 2010 11:12:47 -0600, Mark Hoemmen said:
>> On Sat, 5 Jun 2010 16:12:58 +0200, Juan Jose Garcia-Ripoll said:
CHARACTERs in Fortran are just pointers of type char*, just like in C, and just like any other fortran array. There is no terminating null and
fortran functions get the length either from some argument or because
On Mon, Jun 7, 2010 at 10:56, Martin Simmons <martin@lispworks.com> wrote: the they
assume a given size (for instance in Lapack it is a one-character string what the function expects)
Are you sure about? I think the lengths are passed as implicit arguments at the end of the argumwnt list.
Not on any Fortran compilers I've seen, at least when dealing with LAPACK. Replacing CHARACTER*(*) with "char* const" when calling LAPACK routines that take CHARACTER*(*) arguments works perfectly fine with all the Fortran compilers I've encountered (e.g., gfortran, Intel Fortran compiler, IBM's xlf).
Maybe LAPACK is compiled with options that make this work (or nothing looks at the length arguments), but when I compile the code below with gfortran it clearly passes the string lengths 4 and 3 as extra arguments.
INTEGER FUNCTION ILAENV( NAME , NN ) CHARACTER*( * ) NAME, NN ILAENV = ICHAR( NAME( 1: 1 ) ) RETURN END
INTEGER FUNCTION ZZZ( ) ZZZ = ILAENV("fooo", "bar") RETURN END
movl $3, %ecx movl $4, %edx movl $.LC0, %esi movl $.LC1, %edi call ilaenv_
-- Martin Simmons LispWorks Ltd http://www.lispworks.com/
_______________________________________________ cffi-devel mailing list cffi-devel@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/cffi-devel
-- Instituto de Física Fundamental, CSIC c/ Serrano, 113b, Madrid 28006 (Spain) http://tream.dreamhosters.com