Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
Announcements
FPGA community forums and blogs have moved to the Altera Community. Existing Intel Community members can sign in with their current credentials.
29323 Discussions

The type of the actual argument differs from the type of the dummy argument.

Mike896
Beginner
545 Views

Hi

I just download and run with IVF v11.

Then I got this problem. I saw many user had also this problem.

But I don't see any suggsted way.

The file is in *.f and have declared

IMPLICIT REAL*8(A-H,O-Z)

CALL TRIDAG(AA,BB,CC,RR,UU,JMAX-2)

but the compiler automatically generate module:

MODULE TRIDAG_mod
INTERFACE
SUBROUTINE TRIDAG(A,B,C,R,U,N)
INTEGER(KIND=4) :: N
REAL(KIND=4) :: A(N)
REAL(KIND=4) :: B(N)
REAL(KIND=4) :: C(N)
REAL(KIND=4) :: R(N)
REAL(KIND=4) :: U(N)
END SUBROUTINE TRIDAG
END INTERFACE
END MODULE TRIDAG_mod

and it's real(4).

I don't have problem for IVF v10.

May I ask how to get away with this?

Thank you in advance.

Mike

0 Kudos
3 Replies
Mike896
Beginner
545 Views
Quoting - Mike896

Hi

I just download and run with IVF v11.

Then I got this problem. I saw many user had also this problem.

But I don't see any suggsted way.

The file is in *.f and have declared

IMPLICIT REAL*8(A-H,O-Z)

CALL TRIDAG(AA,BB,CC,RR,UU,JMAX-2)

but the compiler automatically generate module:

MODULE TRIDAG_mod
INTERFACE
SUBROUTINE TRIDAG(A,B,C,R,U,N)
INTEGER(KIND=4) :: N
REAL(KIND=4) :: A(N)
REAL(KIND=4) :: B(N)
REAL(KIND=4) :: C(N)
REAL(KIND=4) :: R(N)
REAL(KIND=4) :: U(N)
END SUBROUTINE TRIDAG
END INTERFACE
END MODULE TRIDAG_mod

and it's real(4).

I don't have problem for IVF v10.

May I ask how to get away with this?

Thank you in advance.

Mike

I set "check the routine interface" to No.

But I am not sure if it may cause some problem.

Why the compiler-generated module is not in real(8)?

Mike

0 Kudos
Steven_L_Intel1
Employee
545 Views

The generated module is based on the actual routine, not the call. This suggests that the function is not properly declared as REAL(8) in the function. You need to fix that.

0 Kudos
TimP
Honored Contributor III
545 Views

The generated module is based on the actual routine, not the call. This suggests that the function is not properly declared as REAL(8) in the function. You need to fix that.

With 32-bit linux x87 code, it was frequently possible to mix various REAL types in function returns, without declaring them. That will not work with the current usual options, and should be diagnosed as an error even if it still happens to work.

0 Kudos
Reply