Skip to content

Commit 95229de

Browse files
committed
Only define broadcasting operators for Julia versions predating
automatic rewriting to `broadcast`
1 parent 324308b commit 95229de

File tree

1 file changed

+51
-49
lines changed

1 file changed

+51
-49
lines changed

src/arraymath.jl

Lines changed: 51 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -4,55 +4,57 @@ import Base: .+, .-, .*, ./, .//, .\, .%, .^, .<<, .>>, .==, .<, .>, .<=, .>=, !
44
Base.promote_op{Op,A<:StaticArray,T<:Number}(op::Op, ::Type{A}, ::Type{T}) = similar_type(A, promote_op(op, eltype(A), T))
55
Base.promote_op{Op,T<:Number,A<:StaticArray}(op::Op, ::Type{T}, ::Type{A}) = similar_type(A, promote_op(op, T, eltype(A)))
66

7-
@inline .-(a1::StaticArray) = broadcast(-, a1)
8-
9-
@inline .+(a1::StaticArray, a2::StaticArray) = broadcast(+, a1, a2)
10-
@inline .-(a1::StaticArray, a2::StaticArray) = broadcast(-, a1, a2)
11-
@inline .*(a1::StaticArray, a2::StaticArray) = broadcast(*, a1, a2)
12-
@inline ./(a1::StaticArray, a2::StaticArray) = broadcast(/, a1, a2)
13-
@inline .//(a1::StaticArray, a2::StaticArray) = broadcast(//, a1, a2)
14-
@inline .\(a1::StaticArray, a2::StaticArray) = broadcast(\, a1, a2)
15-
@inline .%(a1::StaticArray, a2::StaticArray) = broadcast(%, a1, a2)
16-
@inline .^(a1::StaticArray, a2::StaticArray) = broadcast(^, a1, a2)
17-
@inline .<<(a1::StaticArray, a2::StaticArray) = broadcast(<<, a1, a2)
18-
@inline .>>(a1::StaticArray, a2::StaticArray) = broadcast(<<, a1, a2)
19-
@inline .==(a1::StaticArray, a2::StaticArray) = broadcast(==, a1, a2)
20-
@inline .<(a1::StaticArray, a2::StaticArray) = broadcast(<, a1, a2)
21-
@inline .>(a1::StaticArray, a2::StaticArray) = broadcast(>, a1, a2)
22-
@inline .<=(a1::StaticArray, a2::StaticArray) = broadcast(<=, a1, a2)
23-
@inline .>=(a1::StaticArray, a2::StaticArray) = broadcast(>=, a1, a2)
24-
25-
@inline .+(a1::StaticArray, a2::Number) = broadcast(+, a1, a2)
26-
@inline .-(a1::StaticArray, a2::Number) = broadcast(-, a1, a2)
27-
@inline .*(a1::StaticArray, a2::Number) = broadcast(*, a1, a2)
28-
@inline ./(a1::StaticArray, a2::Number) = broadcast(/, a1, a2)
29-
@inline .//(a1::StaticArray, a2::Number) = broadcast(//, a1, a2)
30-
@inline .\(a1::StaticArray, a2::Number) = broadcast(\, a1, a2)
31-
@inline .%(a1::StaticArray, a2::Number) = broadcast(%, a1, a2)
32-
@inline .^(a1::StaticArray, a2::Number) = broadcast(^, a1, a2)
33-
@inline .<<(a1::StaticArray, a2::Number) = broadcast(<<, a1, a2)
34-
@inline .>>(a1::StaticArray, a2::Number) = broadcast(<<, a1, a2)
35-
@inline .==(a1::StaticArray, a2) = broadcast(==, a1, a2)
36-
@inline .<(a1::StaticArray, a2) = broadcast(<, a1, a2)
37-
@inline .>(a1::StaticArray, a2) = broadcast(>, a1, a2)
38-
@inline .<=(a1::StaticArray, a2) = broadcast(<=, a1, a2)
39-
@inline .>=(a1::StaticArray, a2) = broadcast(>=, a1, a2)
40-
41-
@inline .+(a1::Number, a2::StaticArray) = broadcast(+, a1, a2)
42-
@inline .-(a1::Number, a2::StaticArray) = broadcast(-, a1, a2)
43-
@inline .*(a1::Number, a2::StaticArray) = broadcast(*, a1, a2)
44-
@inline ./(a1::Number, a2::StaticArray) = broadcast(/, a1, a2)
45-
@inline .//(a1::Number, a2::StaticArray) = broadcast(//, a1, a2)
46-
@inline .\(a1::Number, a2::StaticArray) = broadcast(\, a1, a2)
47-
@inline .%(a1::Number, a2::StaticArray) = broadcast(%, a1, a2)
48-
@inline .^(a1::Number, a2::StaticArray) = broadcast(^, a1, a2)
49-
@inline .<<(a1::Number, a2::StaticArray) = broadcast(<<, a1, a2)
50-
@inline .>>(a1::Number, a2::StaticArray) = broadcast(<<, a1, a2)
51-
@inline .==(a1, a2::StaticArray) = broadcast(==, a1, a2)
52-
@inline .<(a1, a2::StaticArray) = broadcast(<, a1, a2)
53-
@inline .>(a1, a2::StaticArray) = broadcast(>, a1, a2)
54-
@inline .<=(a1, a2::StaticArray) = broadcast(<=, a1, a2)
55-
@inline .>=(a1, a2::StaticArray) = broadcast(>=, a1, a2)
7+
@static if VERSION < v"0.6.0-dev.1632"
8+
@inline .-(a1::StaticArray) = broadcast(-, a1)
9+
10+
@inline .+(a1::StaticArray, a2::StaticArray) = broadcast(+, a1, a2)
11+
@inline .-(a1::StaticArray, a2::StaticArray) = broadcast(-, a1, a2)
12+
@inline .*(a1::StaticArray, a2::StaticArray) = broadcast(*, a1, a2)
13+
@inline ./(a1::StaticArray, a2::StaticArray) = broadcast(/, a1, a2)
14+
@inline .//(a1::StaticArray, a2::StaticArray) = broadcast(//, a1, a2)
15+
@inline .\(a1::StaticArray, a2::StaticArray) = broadcast(\, a1, a2)
16+
@inline .%(a1::StaticArray, a2::StaticArray) = broadcast(%, a1, a2)
17+
@inline .^(a1::StaticArray, a2::StaticArray) = broadcast(^, a1, a2)
18+
@inline .<<(a1::StaticArray, a2::StaticArray) = broadcast(<<, a1, a2)
19+
@inline .>>(a1::StaticArray, a2::StaticArray) = broadcast(<<, a1, a2)
20+
@inline .==(a1::StaticArray, a2::StaticArray) = broadcast(==, a1, a2)
21+
@inline .<(a1::StaticArray, a2::StaticArray) = broadcast(<, a1, a2)
22+
@inline .>(a1::StaticArray, a2::StaticArray) = broadcast(>, a1, a2)
23+
@inline .<=(a1::StaticArray, a2::StaticArray) = broadcast(<=, a1, a2)
24+
@inline .>=(a1::StaticArray, a2::StaticArray) = broadcast(>=, a1, a2)
25+
26+
@inline .+(a1::StaticArray, a2::Number) = broadcast(+, a1, a2)
27+
@inline .-(a1::StaticArray, a2::Number) = broadcast(-, a1, a2)
28+
@inline .*(a1::StaticArray, a2::Number) = broadcast(*, a1, a2)
29+
@inline ./(a1::StaticArray, a2::Number) = broadcast(/, a1, a2)
30+
@inline .//(a1::StaticArray, a2::Number) = broadcast(//, a1, a2)
31+
@inline .\(a1::StaticArray, a2::Number) = broadcast(\, a1, a2)
32+
@inline .%(a1::StaticArray, a2::Number) = broadcast(%, a1, a2)
33+
@inline .^(a1::StaticArray, a2::Number) = broadcast(^, a1, a2)
34+
@inline .<<(a1::StaticArray, a2::Number) = broadcast(<<, a1, a2)
35+
@inline .>>(a1::StaticArray, a2::Number) = broadcast(<<, a1, a2)
36+
@inline .==(a1::StaticArray, a2) = broadcast(==, a1, a2)
37+
@inline .<(a1::StaticArray, a2) = broadcast(<, a1, a2)
38+
@inline .>(a1::StaticArray, a2) = broadcast(>, a1, a2)
39+
@inline .<=(a1::StaticArray, a2) = broadcast(<=, a1, a2)
40+
@inline .>=(a1::StaticArray, a2) = broadcast(>=, a1, a2)
41+
42+
@inline .+(a1::Number, a2::StaticArray) = broadcast(+, a1, a2)
43+
@inline .-(a1::Number, a2::StaticArray) = broadcast(-, a1, a2)
44+
@inline .*(a1::Number, a2::StaticArray) = broadcast(*, a1, a2)
45+
@inline ./(a1::Number, a2::StaticArray) = broadcast(/, a1, a2)
46+
@inline .//(a1::Number, a2::StaticArray) = broadcast(//, a1, a2)
47+
@inline .\(a1::Number, a2::StaticArray) = broadcast(\, a1, a2)
48+
@inline .%(a1::Number, a2::StaticArray) = broadcast(%, a1, a2)
49+
@inline .^(a1::Number, a2::StaticArray) = broadcast(^, a1, a2)
50+
@inline .<<(a1::Number, a2::StaticArray) = broadcast(<<, a1, a2)
51+
@inline .>>(a1::Number, a2::StaticArray) = broadcast(<<, a1, a2)
52+
@inline .==(a1, a2::StaticArray) = broadcast(==, a1, a2)
53+
@inline .<(a1, a2::StaticArray) = broadcast(<, a1, a2)
54+
@inline .>(a1, a2::StaticArray) = broadcast(>, a1, a2)
55+
@inline .<=(a1, a2::StaticArray) = broadcast(<=, a1, a2)
56+
@inline .>=(a1, a2::StaticArray) = broadcast(>=, a1, a2)
57+
end
5658

5759
# The remaining auto-vectorized boolean operators
5860
@inline !(a::StaticArray{Bool}) = broadcast(!, a)

0 commit comments

Comments
 (0)