- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear group,
the attached code, compiled with ifort, produces:
$ ifort test.f90
test.f90(12): (col. 3) remark: LOOP WAS VECTORIZED.
test.f90(13): (col. 3) remark: LOOP WAS VECTORIZED.
$ ./a.out
0.998238754750969 -1.277365851769966E-003 -4.179797816566392E-002
0.998238754750969 -1.279619575668178E-003 -4.191068882689722E-002
Notice that e3%x and e1%x are different. gfortran and g95 give the
same results for the two variables:
$ gfortran test.f90
$ ./a.out
0.998238754750969 -1.279619575668178E-003 -4.191068882689722E-002
0.998238754750969 -1.279619575668178E-003 -4.191068882689722E-002
which I think is the correct behavior. Is this a bug in ifort?
(My compiler:
$ ifort --version
ifort (IFORT) 10.1 20070913
Copyright (C) 1985-2007 Intel Corporation. All rights reserved.
)
Thank you, best regards
Marco Restelli
program test
implicit none
integer, parameter :: wp = selected_real_kind(12,307)
type cartesian_coordinates
real(wp) :: x(3)
end type cartesian_coordinates
type(cartesian_coordinates) :: e1, e2, e3
e1%x = (/ 1.0_wp , 0.0_wp , 0.0_wp /)
e2%x = (/ 4.196719253215153E-2_wp , &
3.049095015559707E-2_wp , &
0.998653621987913_wp /)
e3%x = e1%x - cc_dot_product(e1,e2)*e2%x
e1%x = e1%x - cc_dot_product(e1,e2)*e2%x
write(*,*) e1
write(*,*) e3
contains
elemental function cc_dot_product(x1,x2) result(p_prod)
type(cartesian_coordinates), intent(in) :: x1, x2
real(wp) :: p_prod
p_prod = dot_product (x1%x,x2%x)
end function cc_dot_product
end program test
Link Copied

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page