blob: e8af3720afdd7aa90bf578fe6f0c9ade6e09f20e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
! { 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" } }
|