1 | MODULE outerdiff_m |
---|
2 | |
---|
3 | IMPLICIT NONE |
---|
4 | |
---|
5 | INTERFACE outerdiff |
---|
6 | MODULE PROCEDURE outerdiff_r,outerdiff_d,outerdiff_i |
---|
7 | END INTERFACE |
---|
8 | |
---|
9 | private outerdiff_r,outerdiff_d,outerdiff_i |
---|
10 | |
---|
11 | CONTAINS |
---|
12 | |
---|
13 | FUNCTION outerdiff_r(a,b) |
---|
14 | REAL, DIMENSION(:), INTENT(IN) :: a,b |
---|
15 | REAL, DIMENSION(size(a),size(b)) :: outerdiff_r |
---|
16 | outerdiff_r = spread(a,dim=2,ncopies=size(b)) - & |
---|
17 | spread(b,dim=1,ncopies=size(a)) |
---|
18 | END FUNCTION outerdiff_r |
---|
19 | !BL |
---|
20 | FUNCTION outerdiff_d(a,b) |
---|
21 | DOUBLE PRECISION, DIMENSION(:), INTENT(IN) :: a,b |
---|
22 | DOUBLE PRECISION, DIMENSION(size(a),size(b)) :: outerdiff_d |
---|
23 | outerdiff_d = spread(a,dim=2,ncopies=size(b)) - & |
---|
24 | spread(b,dim=1,ncopies=size(a)) |
---|
25 | END FUNCTION outerdiff_d |
---|
26 | !BL |
---|
27 | FUNCTION outerdiff_i(a,b) |
---|
28 | INTEGER, DIMENSION(:), INTENT(IN) :: a,b |
---|
29 | INTEGER, DIMENSION(size(a),size(b)) :: outerdiff_i |
---|
30 | outerdiff_i = spread(a,dim=2,ncopies=size(b)) - & |
---|
31 | spread(b,dim=1,ncopies=size(a)) |
---|
32 | END FUNCTION outerdiff_i |
---|
33 | |
---|
34 | END MODULE outerdiff_m |
---|