- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The following is a reproducer for the problem:
module intel_bug
implicit none
contains
subroutine to_complex(arr, Out_1, Out_2)
integer(8), intent(in) :: arr(0:)
complex(4), intent(out) :: Out_1
complex(4), intent(out) :: Out_2
complex(4), allocatable :: a(:)
allocate(a(0:size(arr, kind=8) - 1_8))
a = cmplx(arr, 0, kind=4) ! <----------- Problematic line v1
!a = cmplx(arr, 0.0, kind=4) ! <----------- Problematic line v2
!a = cmplx(arr, kind=4) ! <----------- Problematic line fix
Out_1 = a(0_8)
Out_2 = a(1_8)
end subroutine to_complex
end module intel_bug
program my_prog
use intel_bug
integer(8), allocatable :: arr(:)
complex(4) :: test1
complex(4) :: test2
allocate(arr(0:9))
do i=0,9
arr(i) = i
end do
call to_complex(arr, test1, test2)
print *, test1, test2
end program my_prog
The output of the code is:
# v1
(0.0000000E+00,0.0000000E+00) (0.0000000E+00,0.0000000E+00)
# v2
(0.0000000E+00,0.0000000E+00) (0.0000000E+00,0.0000000E+00)
# v3
(0.0000000E+00,0.0000000E+00) (1.000000,0.0000000E+00)
The standard says:
CMPLX (X [, Y, KIND])
Y (optional) shall be of type integer or real, or a boz-literal-constant. If X is of type
complex, Y shall not be present, nor shall Y be associated with an optional
dummy argument.
If Y is absent and X is not complex, it is as if Y were present with the value
zero
This post may be related: https://community.intel.com/t5/Intel-Fortran-Compiler/ifort-and-ifx-internal-compiler-error/m-p/1620305
Compiler version information:
ifx (IFX) 2024.2.1 20240711
Copyright (C) 1985-2024 Intel Corporation. All rights reserved.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
We did see the earlier issue. and we fixed it an it's in the upcoming v2025.0 ifx compiler. Output matches NAG and Gfortran for cmplx and follows the standard.
$ ifx -what -V cmplx_v1.f90 && ./a.out
Intel(R) Fortran Compiler for applications running on Intel(R) 64, Version 2025.0.0 Build 20240930
Copyright (C) 1985-2024 Intel Corporation. All rights reserved.
Intel(R) Fortran 25.0-1205
GNU ld version 2.41-34.fc40
(0.0000000E+00,0.0000000E+00) (1.000000,0.0000000E+00)
$ ifx -what -V cmplx_v2.f90 && ./a.out
Intel(R) Fortran Compiler for applications running on Intel(R) 64, Version 2025.0.0 Build 20240930
Copyright (C) 1985-2024 Intel Corporation. All rights reserved.
Intel(R) Fortran 25.0-1205
GNU ld version 2.41-34.fc40
(0.0000000E+00,0.0000000E+00) (1.000000,0.0000000E+00)
$ ifx -what -V cmplx_v3.f90 && ./a.out
Intel(R) Fortran Compiler for applications running on Intel(R) 64, Version 2025.0.0 Build 20240930
Copyright (C) 1985-2024 Intel Corporation. All rights reserved.
Intel(R) Fortran 25.0-1205
GNU ld version 2.41-34.fc40
(0.0000000E+00,0.0000000E+00) (1.000000,0.0000000E+00)
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
We did see the earlier issue. and we fixed it an it's in the upcoming v2025.0 ifx compiler. Output matches NAG and Gfortran for cmplx and follows the standard.
$ ifx -what -V cmplx_v1.f90 && ./a.out
Intel(R) Fortran Compiler for applications running on Intel(R) 64, Version 2025.0.0 Build 20240930
Copyright (C) 1985-2024 Intel Corporation. All rights reserved.
Intel(R) Fortran 25.0-1205
GNU ld version 2.41-34.fc40
(0.0000000E+00,0.0000000E+00) (1.000000,0.0000000E+00)
$ ifx -what -V cmplx_v2.f90 && ./a.out
Intel(R) Fortran Compiler for applications running on Intel(R) 64, Version 2025.0.0 Build 20240930
Copyright (C) 1985-2024 Intel Corporation. All rights reserved.
Intel(R) Fortran 25.0-1205
GNU ld version 2.41-34.fc40
(0.0000000E+00,0.0000000E+00) (1.000000,0.0000000E+00)
$ ifx -what -V cmplx_v3.f90 && ./a.out
Intel(R) Fortran Compiler for applications running on Intel(R) 64, Version 2025.0.0 Build 20240930
Copyright (C) 1985-2024 Intel Corporation. All rights reserved.
Intel(R) Fortran 25.0-1205
GNU ld version 2.41-34.fc40
(0.0000000E+00,0.0000000E+00) (1.000000,0.0000000E+00)
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page