@@ -732,17 +732,17 @@ end
732
732
atan (y:: Real , x:: Real ) = atan (promote (float (y),float (x))... )
733
733
atan (y:: T , x:: T ) where {T<: AbstractFloat } = Base. no_op_err (" atan" , T)
734
734
735
- max (x:: T , y:: T ) where {T<: AbstractFloat } = ifelse ((y > x) | (signbit (y) < signbit (x)),
736
- ifelse (isnan (x), x, y), ifelse (isnan (y), y, x))
735
+ _isless (x:: T , y:: T ) where {T<: AbstractFloat } = (x < y) || (signbit (x) > signbit (y))
736
+ min (x:: T , y:: T ) where {T<: AbstractFloat } = isnan (x) || ~ isnan (y) && _isless (x, y) ? x : y
737
+ max (x:: T , y:: T ) where {T<: AbstractFloat } = isnan (x) || ~ isnan (y) && _isless (y, x) ? x : y
738
+ minmax (x:: T , y:: T ) where {T<: AbstractFloat } = min (x, y), max (x, y)
737
739
740
+ FastFloat = Union{Float32, Float64}
741
+ _isless (x:: T , y:: T ) where {T<: FastFloat } = signbit (x - y)
742
+ min (x:: T , y:: T ) where {T<: FastFloat } = ifelse (isnan (x) | ~ isnan (y) & _isless (x, y), x, y)
743
+ max (x:: T , y:: T ) where {T<: FastFloat } = ifelse (isnan (x) | ~ isnan (y) & _isless (y, x), x, y)
738
744
739
- min (x:: T , y:: T ) where {T<: AbstractFloat } = ifelse ((y < x) | (signbit (y) > signbit (x)),
740
- ifelse (isnan (x), x, y), ifelse (isnan (y), y, x))
741
-
742
- minmax (x:: T , y:: T ) where {T<: AbstractFloat } =
743
- ifelse (isnan (x) | isnan (y), ifelse (isnan (x), (x,x), (y,y)),
744
- ifelse ((y > x) | (signbit (x) > signbit (y)), (x,y), (y,x)))
745
-
745
+ _isless (x:: Float16 , y:: Float16 ) = _isless (widen (x), widen (y))
746
746
747
747
"""
748
748
ldexp(x, n)
0 commit comments