Re: F2CL under LWW a few warnings
Raymond Toy <[email protected]> Wed, 11 Aug 2004 11:43:48 -0400
| Newsgroups | gmane.lisp.clocc.general |
|---|---|
| Message-ID | <[email protected]> |
Marco Antoniotti wrote:
> More on F2CL
>
> I am trying to convert the odepack-lsode library from netlib.
>
> The library comes in two flavors: single and double precision.
>
> The double precision library consists of three files.
>
> opkda1.f
> opkda2.f
> opkdmain.f
>
> The first two get converted with a few warnings, but the thirds
> generates a coercion error.
>
> Here is a report.
>
> Cheers
> Marco
>
>
> CL-USER 8 > (f2cl:f2cl "opkdmain.f" :verbose t)
> ;; "opkdmain.f" -> #P"opkdmain.lisp"
> preprocessing begins ...
> SUBROUTINE DLSODE (F, NEQ, Y, T, TOUT, ITOL, RTOL, ATOL, ITASK,
> 1 ISTATE, IOPT, RWORK, LRW, IWORK, LIW, JAC, MF)
> EXTERNAL F, JAC
> INTEGER NEQ, ITOL, ITASK, ISTATE, IOPT, LRW, IWORK, LIW, MF
> DOUBLE PRECISION Y, T, TOUT, RTOL, ATOL, RWORK
> DIMENSION NEQ(*), Y(*), RTOL(*), ATOL(*), RWORK(LRW), IWORK(LIW)
> EXTERNAL DPREPJ, DSOLSY
> DOUBLE PRECISION DUMACH, DVNORM
> INTEGER INIT, MXSTEP, MXHNIL, NHNIL, NSLAST, NYH, IOWNS,
>
> ....
>
> (call dintdy (tout \, 0 \, rwork (lyh) \, nyh \, y \, iflag))
> Warning: Generating call to unknown function (DINTDY). Check generated
> call!(if (iflag >< 0) go to 627)
> (go to 627)
> (t = tout)
> (go to 420)
> (tcrit = rwork (1))
> (if ((tn - tcrit) * h > 0.0) go to 624)
> (go to 624)
> (hmx = abs (tn) + abs (h))
> (ihit = abs (tn - tcrit) <= 100.0 * uround * hmx)
That last line is the problem. It's a known bug in f2cl that I've never
been able to fix. It parses the Fortran expression
x .le.y*z
as
(x .le. y)*z
which is obviously wrong.
Fortunately, there's a workaround. Change it to x .le. (y*z).
I'll look again at fixing this, but I'm not hopeful. I don't understand
that part of f2cl very well.
Ray
-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285