Re: [Rd] Calling FORTRAN function from R issue?

From: Berwin A Turlach <Berwin.Turlach_at_gmail.com>
Date: Tue, 06 Mar 2012 19:56:08 +0800

G'day Berend,

On Tue, 6 Mar 2012 11:19:07 +0100
Berend Hasselman <bhh_at_xs4all.nl> wrote:

> On 06-03-2012, at 01:21, Dominick Samperi wrote:
[...]
> > zx[0].r = 1.0; zx[0].i = 0.0;
> > zx[1].r = 2.0; zx[0].i = 0.0;
> > zx[2].r = 3.0; zx[0].i = 0.0;

Just noticing that it is always zx[0].i, same with the imaginary part of zy. But this is probably not of importance. :)

> I tried calling zdotc through an intermediate Fortran routine hoping
> it would solve your problem.
[...]
> Above C routine changed to
[...]
> The fortran subroutine is
>
> <code>
> subroutine callzdotc(retval,n, zx, incx, zy, incy)
> integer n, incx, incy
> double complex retval, zx(*), zy(*)
> external double complex zdotc
>
> retval = zdotc(n, zx, incx, zy, incy)
>
> return
> end
> </code>
>
> Made a shared object with
>
> R CMD SHLIB --output=dozdot.so callzdotc.f czdot.c
>
> and ran
>
> dyn.load("dozdot.so")
> .C("testzdotc")
>
> with the result 0.0, 0.0

Same here.

Once I change the line

        external double complex zdotc

in your fortran subroutine to

        double complex zdotc

everything works fine and I get as result 14.0, 0.0.

It is long time ago that I was taught (and studied) the FORTRAN 77 standard. But flipping through some books from that time I thing I have some inkling on what is going on. The "external" statement is not needed here (seems to be used in the sense that C is using the "external" statement).

Cheers,

        Berwin



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Tue 06 Mar 2012 - 12:00:09 GMT

This quarter's messages: by month, or sorted: [ by date ] [ by thread ] [ by subject ] [ by author ]

All messages

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Tue 06 Mar 2012 - 13:50:24 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive