@@ -1602,26 +1602,26 @@ struct LogRange{T<:Real,X} <: AbstractArray{T,1}
1602
1602
stop:: T
1603
1603
len:: Int
1604
1604
extra:: Tuple{X,X}
1605
- function LogRange {T} (start:: T , stop:: T , length:: Int ) where {T<: Real }
1605
+ function LogRange {T} (start:: T , stop:: T , len:: Int ) where {T<: Real }
1606
+ if T <: Integer
1607
+ # LogRange{Int}(1, 512, 4) produces InexactError: Int64(7.999999999999998)
1608
+ throw (ArgumentError (" LogRange{T} does not support integer types" ))
1609
+ end
1606
1610
# LogRange(0, 1, 100) could be == [0,0,0,0,...,1], that's the limit start -> 0,
1607
1611
# but seems more likely to give silent surprises than returning NaN.
1608
1612
a = iszero (start) ? T (NaN ) : T (start)
1609
1613
b = iszero (stop) ? T (NaN ) : T (stop)
1610
- len = Int (length)
1611
1614
if len < 0
1612
1615
throw (ArgumentError (LazyString (
1613
1616
" LogRange(" , start, " , " , stop, " , " , len, " ): can't have negative length" )))
1614
1617
elseif len == 1 && start != stop
1615
1618
throw (ArgumentError (LazyString (
1616
1619
" LogRange(" , start, " , " , stop, " , " , len, " ): endpoints differ, while length is 1" )))
1617
1620
elseif start < 0 || stop < 0
1621
+ # log would throw, but _log_twice64_unchecked does not
1618
1622
throw (DomainError ((start, stop),
1619
1623
" LogRange(start, stop, length) does not accept negative numbers" ))
1620
1624
end
1621
- if T <: Integer
1622
- # LogRange{Int}(1, 512, 4) produces InexactError: Int64(7.999999999999998)
1623
- throw (ArgumentError (" LogRange{T} does not support integer types" ))
1624
- end
1625
1625
ex = _logrange_extra (a, b, len)
1626
1626
new {T,typeof(ex[1])} (a, b, len, ex)
1627
1627
end
0 commit comments