On a smaller example I can see that it is indeed is because floats are not 
double floats.

It's seem to be the statement

implicit double precision (a-h,o-z)

in Fortran code that throws things upside down. I'm not so familiar with 
the Fortran standard and especially with gfortran extensions, but I would 
think if anything, this statement would force the arguments to be double 
float (real*8) precision. Also, I put "-fdefault-real-8" option to the 
compiler...

But thanks for the tip, perhaps I would just comment this statement out in 
Fortran.


On Wednesday, November 9, 2016 at 3:49:55 PM UTC+2, Ángel de Vicente wrote:
>
> Hi, 
>
> Alexey Cherkaev <alexey....@gmail.com <javascript:>> writes: 
> > To cut long story short, I have a problem of passing floating-point 
> numbers from 
> > Julia to Fortran subroutine. Documentation suggests, that each parameter 
> to 
> > Fortran's program needs "Ref{T}" wrapper as they are passed by reference 
> (I've 
> > seen that older code also uses Ptr{T} with "&" at variable names). It 
> works fine 
> > for integers (I even can see the difference if "FInt" alias is changed 
> between 
> > "Int32" and "Int64" and if "-fdefault-integer-8" in compiling option is 
> present 
> > or omitted). But I don't see a single floating point value passed 
> correctly 
> > (including floating-point arrays). I've also tried, as an extreme 
> measure, to 
> > pass a floating point parameter as a vector (of size 1) and have a 
> corresponding 
> > type in ccall to be "Ptr{Float64}" 
>
> Perhaps in Fortran you have 32bits floats? I just tried with this, and I 
> have no problem passing floats to Fortran: 
>
> ,---- 
> | testdp(ar) = ccall((:__tests_MOD_testdp, "./testmodgfort"),Float64, 
> (Ptr{Float64},), &ar) 
> | println("Result of function call to Fortran ", testdp(5.0)) 
> `---- 
>
> ,---- 
> | DOUBLE PRECISION FUNCTION testdp (a) 
> |   DOUBLE PRECISION :: a 
> |   testdp = 5.0*a 
> | END FUNCTION testdp 
> `---- 
>
> ,---- 
> | julia> include("julia-fortran.jl") 
> | Result of function call to Fortran 25.0 
> `---- 
>
> -- 
> Ángel de Vicente 
> http://www.iac.es/galeria/angelv/           
>

Reply via email to