@@ -43,18 +43,12 @@ promote_array_type{S<:Integer}(F, ::Type{S}, ::Type{Bool}) = S
43
43
promote_array_type (F, :: Type{Bool} , :: Type{Bool} ) = promote_op (F, Bool, Bool)
44
44
45
45
# Handle operations that return different types
46
- ./ (x:: Number , Y:: AbstractArray ) =
47
- reshape ([ x ./ y for y in Y ], size (Y))
48
- ./ (X:: AbstractArray , y:: Number ) =
49
- reshape ([ x ./ y for x in X ], size (X))
50
- .\ (x:: Number , Y:: AbstractArray ) =
51
- reshape ([ x .\ y for y in Y ], size (Y))
52
- .\ (X:: AbstractArray , y:: Number ) =
53
- reshape ([ x .\ y for x in X ], size (X))
54
- .^ (x:: Number , Y:: AbstractArray ) =
55
- reshape ([ x ^ y for y in Y ], size (Y))
56
- .^ (X:: AbstractArray , y:: Number ) =
57
- reshape ([ x ^ y for x in X ], size (X))
46
+ for f in (:./ , :.\ , :.^ )
47
+ @eval ($ f)(x:: Number , Y:: AbstractArray ) =
48
+ reshape ((promote_eltype_op ($ f, x, Y))[ ($ f)(x, y) for y in Y ], size (Y))
49
+ @eval ($ f)(X:: AbstractArray , y:: Number ) =
50
+ reshape ((promote_eltype_op ($ f, X, y))[ ($ f)(x, y) for x in X ], size (X))
51
+ end
58
52
59
53
for f in (:+ , :- , :div , :mod , :& , :| , :$ )
60
54
@eval begin
0 commit comments