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 Mon, Jun 7, 2010 at 10:56, Martin Simmons <martin@lispworks.com> wrote:
> >>>>>> 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 the
> >> fortran functions get the length either from some argument or because 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