@@ -77,8 +77,8 @@ Base.promote_rule{T<:Real,RI<:RInteger}(::Type{Complex{T}}, ::Type{RI}) =
77
77
promote_type (Complex{T}, itype (RI))
78
78
Base. promote_rule {T<:Integer,RI<:RInteger} (:: Type{Rational{T}} , :: Type{RI} ) =
79
79
promote_type (Rational{T}, itype (RI))
80
- Base. promote_rule {s, RI<:RInteger} (:: Type{Irrational{s} } , :: Type{RI} ) =
81
- promote_type (Irrational{S} , itype (RI))
80
+ @compat Base. promote_rule {RI<:RInteger} (:: Type{<: Irrational} , :: Type{RI} ) =
81
+ promote_type (Float64 , itype (RI))
82
82
83
83
(:: Type{Signed} )(x:: RSigned ) = reinterpret (itype (x), x)
84
84
(:: Type{Unsigned} )(x:: RUnsigned ) = reinterpret (itype (x), x)
@@ -90,8 +90,9 @@ Base.promote_rule{s,RI<:RInteger}(::Type{Irrational{s}}, ::Type{RI}) =
90
90
(:: Type{RInteger} )(x:: Unsigned ) = RUnsigned (x)
91
91
92
92
# Basic conversions
93
- @inline Base. convert {T<:RSigned} (:: Type{T} , x:: T ) = x
94
- @inline Base. convert {T<:RUnsigned} (:: Type{T} , x:: T ) = x
93
+ # @inline Base.convert{T<:RSigned}(::Type{T}, x::T) = x
94
+ # @inline Base.convert{T<:RUnsigned}(::Type{T}, x::T) = x
95
+ @inline Base. convert {T<:RInteger} (:: Type{T} , x:: T ) = x
95
96
@inline Base. convert {T<:RInteger} (:: Type{T} , x:: RInteger ) =
96
97
RInteger (convert (itype (T), Integer (x)))
97
98
@inline Base. convert {T<:RInteger} (:: Type{T} , x:: Integer ) = RInteger (convert (itype (T), x))
@@ -120,6 +121,7 @@ Base.convert{T<:RInteger}(::Type{T}, x::Float16) = RInteger(convert(itype(T), x)
120
121
Base. convert (:: Type{Bool} , x:: RInteger ) = convert (Bool, Integer (x))
121
122
122
123
# rem conversions
124
+ @inline Base. rem {T<:RInteger} (x:: T , :: Type{T} ) = T
123
125
@inline Base. rem {T<:RInteger} (x:: Integer , :: Type{T} ) = RInteger (rem (x, itype (T)))
124
126
# ambs
125
127
@inline Base. rem {T<:RInteger} (x:: BigInt , :: Type{T} ) = error (" no rounding BigInt available" )
@@ -133,6 +135,7 @@ Base.flipsign(x::RSigned, y::RSigned) = RInteger(flipsign(Integer(x), Integer(y)
133
135
Base. count_ones (x:: RInteger ) = count_ones (Integer (x))
134
136
Base. leading_zeros (x:: RInteger ) = leading_zeros (Integer (x))
135
137
Base. trailing_zeros (x:: RInteger ) = trailing_zeros (Integer (x))
138
+ Base. ndigits0z (x:: RInteger ) = Base. ndigits0z (Integer (x))
136
139
137
140
# A few operations preserve the type
138
141
- (x:: RInteger ) = RInteger (- Integer (x))
0 commit comments