@@ -13,7 +13,7 @@ result_type(::SqMahalanobis{T}, ::AbstractArray, ::AbstractArray) where {T} = T
13
13
14
14
# SqMahalanobis
15
15
16
- function evaluate (dist:: SqMahalanobis{T} , a:: AbstractVector , b:: AbstractVector ) where {T <: AbstractFloat }
16
+ function evaluate (dist:: SqMahalanobis{T} , a:: AbstractVector , b:: AbstractVector ) where {T <: Real }
17
17
if length (a) != length (b)
18
18
throw (DimensionMismatch (" first array has length $(length (a)) which does not match the length of the second, $(length (b)) ." ))
19
19
end
25
25
26
26
sqmahalanobis (a:: AbstractVector , b:: AbstractVector , Q:: AbstractMatrix ) = evaluate (SqMahalanobis (Q), a, b)
27
27
28
- function colwise! (r:: AbstractArray , dist:: SqMahalanobis{T} , a:: AbstractMatrix , b:: AbstractMatrix ) where {T <: AbstractFloat }
28
+ function colwise! (r:: AbstractArray , dist:: SqMahalanobis{T} , a:: AbstractMatrix , b:: AbstractMatrix ) where {T <: Real }
29
29
Q = dist. qmat
30
30
m, n = get_colwise_dims (size (Q, 1 ), r, a, b)
31
31
z = a - b
32
32
dot_percol! (r, Q * z, z)
33
33
end
34
34
35
- function colwise! (r:: AbstractArray , dist:: SqMahalanobis{T} , a:: AbstractVector , b:: AbstractMatrix ) where {T <: AbstractFloat }
35
+ function colwise! (r:: AbstractArray , dist:: SqMahalanobis{T} , a:: AbstractVector , b:: AbstractMatrix ) where {T <: Real }
36
36
Q = dist. qmat
37
37
m, n = get_colwise_dims (size (Q, 1 ), r, a, b)
38
38
z = a .- b
39
39
Qz = Q * z
40
40
dot_percol! (r, Q * z, z)
41
41
end
42
42
43
- function pairwise! (r:: AbstractMatrix , dist:: SqMahalanobis{T} , a:: AbstractMatrix , b:: AbstractMatrix ) where {T <: AbstractFloat }
43
+ function pairwise! (r:: AbstractMatrix , dist:: SqMahalanobis{T} , a:: AbstractMatrix , b:: AbstractMatrix ) where {T <: Real }
44
44
Q = dist. qmat
45
45
m, na, nb = get_pairwise_dims (size (Q, 1 ), r, a, b)
46
46
@@ -50,29 +50,29 @@ function pairwise!(r::AbstractMatrix, dist::SqMahalanobis{T}, a::AbstractMatrix,
50
50
sb2 = dot_percol (b, Qb)
51
51
At_mul_B! (r, a, Qb)
52
52
53
- for j = 1 : nb
54
- @simd for i = 1 : na
55
- @inbounds r[i,j] = sa2[i] + sb2[j] - 2 * r[i,j]
53
+ for j = 1 : nb
54
+ @simd for i = 1 : na
55
+ @inbounds r[i, j] = sa2[i] + sb2[j] - 2 * r[i, j]
56
56
end
57
57
end
58
58
r
59
59
end
60
60
61
- function pairwise! (r:: AbstractMatrix , dist:: SqMahalanobis{T} , a:: AbstractMatrix ) where {T <: AbstractFloat }
61
+ function pairwise! (r:: AbstractMatrix , dist:: SqMahalanobis{T} , a:: AbstractMatrix ) where {T <: Real }
62
62
Q = dist. qmat
63
63
m, n = get_pairwise_dims (size (Q, 1 ), r, a)
64
64
65
65
Qa = Q * a
66
66
sa2 = dot_percol (a, Qa)
67
67
At_mul_B! (r, a, Qa)
68
68
69
- for j = 1 : n
70
- for i = 1 : j - 1
71
- @inbounds r[i,j] = r[j,i]
69
+ for j = 1 : n
70
+ for i = 1 : (j - 1 )
71
+ @inbounds r[i, j] = r[j, i]
72
72
end
73
- r[j,j] = 0
74
- for i = j + 1 : n
75
- @inbounds r[i,j] = sa2[i] + sa2[j] - 2 * r[i,j]
73
+ r[j, j] = 0
74
+ for i = (j + 1 ) : n
75
+ @inbounds r[i, j] = sa2[i] + sa2[j] - 2 * r[i, j]
76
76
end
77
77
end
78
78
r
81
81
82
82
# Mahalanobis
83
83
84
- function evaluate (dist:: Mahalanobis{T} , a:: AbstractVector , b:: AbstractVector ) where {T <: AbstractFloat }
84
+ function evaluate (dist:: Mahalanobis{T} , a:: AbstractVector , b:: AbstractVector ) where {T <: Real }
85
85
sqrt (evaluate (SqMahalanobis (dist. qmat), a, b))
86
86
end
87
87
88
88
mahalanobis (a:: AbstractVector , b:: AbstractVector , Q:: AbstractMatrix ) = evaluate (Mahalanobis (Q), a, b)
89
89
90
- function colwise! (r:: AbstractArray , dist:: Mahalanobis{T} , a:: AbstractMatrix , b:: AbstractMatrix ) where {T <: AbstractFloat }
90
+ function colwise! (r:: AbstractArray , dist:: Mahalanobis{T} , a:: AbstractMatrix , b:: AbstractMatrix ) where {T <: Real }
91
91
sqrt! (colwise! (r, SqMahalanobis (dist. qmat), a, b))
92
92
end
93
93
94
- function colwise! (r:: AbstractArray , dist:: Mahalanobis{T} , a:: AbstractVector , b:: AbstractMatrix ) where {T <: AbstractFloat }
94
+ function colwise! (r:: AbstractArray , dist:: Mahalanobis{T} , a:: AbstractVector , b:: AbstractMatrix ) where {T <: Real }
95
95
sqrt! (colwise! (r, SqMahalanobis (dist. qmat), a, b))
96
96
end
97
97
98
- function pairwise! (r:: AbstractMatrix , dist:: Mahalanobis{T} , a:: AbstractMatrix , b:: AbstractMatrix ) where {T <: AbstractFloat }
98
+ function pairwise! (r:: AbstractMatrix , dist:: Mahalanobis{T} , a:: AbstractMatrix , b:: AbstractMatrix ) where {T <: Real }
99
99
sqrt! (pairwise! (r, SqMahalanobis (dist. qmat), a, b))
100
100
end
101
101
102
- function pairwise! (r:: AbstractMatrix , dist:: Mahalanobis{T} , a:: AbstractMatrix ) where {T <: AbstractFloat }
102
+ function pairwise! (r:: AbstractMatrix , dist:: Mahalanobis{T} , a:: AbstractMatrix ) where {T <: Real }
103
103
sqrt! (pairwise! (r, SqMahalanobis (dist. qmat), a))
104
104
end
0 commit comments