37 lines
717 B
Fortran
37 lines
717 B
Fortran
! { dg-do compile }
|
|
! Testcase from PR 25396: User defined operators returning arrays.
|
|
module geometry
|
|
|
|
implicit none
|
|
|
|
interface operator(.cross.)
|
|
module procedure cross
|
|
end interface
|
|
|
|
contains
|
|
|
|
! Cross product between two 3d vectors.
|
|
pure function cross(a, b)
|
|
real, dimension(3), intent(in) :: a,b
|
|
real, dimension(3) :: cross
|
|
|
|
cross = (/ a(2) * b(3) - a(3) * b(2), &
|
|
a(3) * b(1) - a(1) * b(3), &
|
|
a(1) * b(2) - a(2) * b(1) /)
|
|
end function cross
|
|
|
|
end module geometry
|
|
|
|
program opshape
|
|
use geometry
|
|
|
|
implicit none
|
|
|
|
real :: t(3,3), a
|
|
|
|
a = dot_product (t(:,1), t(:,2) .cross. t(:,3))
|
|
|
|
end program opshape
|
|
|
|
! { dg-final { cleanup-modules "geometry" } }
|