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.<br>

<br>Juanjo<br><br><div class="gmail_quote">On Mon, Jun 7, 2010 at 8:38 PM, Martin Simmons <span dir="ltr"><<a href="mailto:martin@lispworks.com">martin@lispworks.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

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