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/ >