@@ -1153,15 +1153,20 @@ broadcasted(::DefaultArrayStyle{1}, ::typeof(-), r::LinRange, x::Number) = LinRa
1153
1153
broadcasted (:: DefaultArrayStyle{1} , :: typeof (- ), x:: Number , r:: LinRange ) = LinRange (x - r. start, x - r. stop, length (r))
1154
1154
broadcasted (:: DefaultArrayStyle{1} , :: typeof (- ), r1:: AbstractRange , r2:: AbstractRange ) = r1 - r2
1155
1155
1156
+ # at present Base.range_start_step_length(1,0,5) is an error, so for 0 .* (-2:2) we explicitly construct StepRangeLen:
1156
1157
broadcasted (:: DefaultArrayStyle{1} , :: typeof (* ), x:: Number , r:: AbstractRange ) = StepRangeLen (x* first (r), x* step (r), length (r))
1157
- broadcasted (:: DefaultArrayStyle{1} , :: typeof (* ), x:: Number , r:: StepRangeLen{T} ) where {T} = StepRangeLen {typeof(x*T(r.ref))} (x* r. ref, x* r. step, length (r), r. offset)
1158
+ broadcasted (:: DefaultArrayStyle{1} , :: typeof (* ), x:: Number , r:: StepRangeLen{T} ) where {T} =
1159
+ StepRangeLen {typeof(x*T(r.ref))} (x* r. ref, x* r. step, length (r), r. offset)
1158
1160
broadcasted (:: DefaultArrayStyle{1} , :: typeof (* ), x:: Number , r:: LinRange ) = LinRange (x * r. start, x * r. stop, r. len)
1159
- broadcasted (:: DefaultArrayStyle{1} , :: typeof (* ), x:: AbstractFloat , r:: OrdinalRange ) = Base. range_start_step_length (x* first (r), x, length (r))
1161
+ broadcasted (:: DefaultArrayStyle{1} , :: typeof (* ), x:: AbstractFloat , r:: OrdinalRange ) =
1162
+ Base. range_start_step_length (x* first (r), x, length (r)) # 0.2 .* (-2:2) needs TwicePrecision
1160
1163
# separate in case of noncommutative multiplication:
1161
1164
broadcasted (:: DefaultArrayStyle{1} , :: typeof (* ), r:: AbstractRange , x:: Number ) = StepRangeLen (first (r)* x, step (r)* x, length (r))
1162
- broadcasted (:: DefaultArrayStyle{1} , :: typeof (* ), r:: StepRangeLen{T} , x:: Number ) where {T} = StepRangeLen {typeof(T(r.ref)*x)} (r. ref* x, r. step* x, length (r), r. offset)
1165
+ broadcasted (:: DefaultArrayStyle{1} , :: typeof (* ), r:: StepRangeLen{T} , x:: Number ) where {T} =
1166
+ StepRangeLen {typeof(T(r.ref)*x)} (r. ref* x, r. step* x, length (r), r. offset)
1163
1167
broadcasted (:: DefaultArrayStyle{1} , :: typeof (* ), r:: LinRange , x:: Number ) = LinRange (r. start * x, r. stop * x, r. len)
1164
- broadcasted (:: DefaultArrayStyle{1} , :: typeof (* ), r:: OrdinalRange , x:: AbstractFloat ) = Base. range_start_step_length (first (r)* x, x, length (r))
1168
+ broadcasted (:: DefaultArrayStyle{1} , :: typeof (* ), r:: OrdinalRange , x:: AbstractFloat ) =
1169
+ Base. range_start_step_length (first (r)* x, x, length (r))
1165
1170
1166
1171
broadcasted (:: DefaultArrayStyle{1} , :: typeof (/ ), r:: AbstractRange , x:: Number ) = range (first (r)/ x, step= step (r)/ x, length= length (r))
1167
1172
broadcasted (:: DefaultArrayStyle{1} , :: typeof (/ ), r:: StepRangeLen{T} , x:: Number ) where {T} =
0 commit comments