Skip to content

Commit 0bee2bc

Browse files
committed
minor adjustment to register macro
1 parent 0546d62 commit 0bee2bc

File tree

2 files changed

+28
-25
lines changed

2 files changed

+28
-25
lines changed

src/abstract.jl

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -39,17 +39,18 @@ macro register(name)
3939
quote
4040
Base.convert(::Type{P}, p::P) where {P<:$poly} = p
4141
Base.convert(P::Type{<:$poly}, p::$poly{T}) where {T} = P(coeffs(p), p.var)
42+
Base.promote(p::P, q::Q) where {T, P <:$poly{T}, Q <: $poly{T}} = p,q
4243
Base.promote_rule(::Type{<:$poly{T}}, ::Type{<:$poly{S}}) where {T,S} =
4344
$poly{promote_type(T, S)}
4445
Base.promote_rule(::Type{<:$poly{T}}, ::Type{S}) where {T,S<:Number} =
4546
$poly{promote_type(T, S)}
4647
$poly(coeffs::AbstractVector{T}, var::SymbolLike = :x) where {T} =
4748
$poly{T}(coeffs, Symbol(var))
48-
$poly{T}(x::AbstractVector{S}, var = :x) where {T,S<:Number} =
49-
$poly(T.(x), var)
50-
$poly{T}(n::S, var = :x) where {T, S<:Number} =
51-
$poly(T[n], var)
52-
$poly(n::Number, var = :x) = $poly([n], var)
49+
$poly{T}(x::AbstractVector{S}, var::SymbolLike = :x) where {T,S<:Number} =
50+
$poly(T.(x), Symbol(var))
51+
$poly{T}(n::S, var::SymbolLike = :x) where {T, S<:Number} =
52+
$poly(T[n], Symbol(var))
53+
$poly(n::Number, var::SymbolLike = :x) = $poly([n], Symbol(var))
5354
$poly{T}(var::SymbolLike=:x) where {T} = variable($poly{T}, Symbol(var))
5455
$poly(var::SymbolLike=:x) = variable($poly, Symbol(var))
5556
end
@@ -61,19 +62,20 @@ macro register1(name)
6162
poly = esc(name)
6263
quote
6364
Base.convert(::Type{P}, p::P) where {P<:$poly} = p
64-
Base.promote_rule(::Type{$poly{α,T}}, ::Type{$poly{α,S}}) where {α,T,S} =
65+
Base.promote(p::P, q::Q) where {α,T, P <:$poly{α,T}, Q <: $poly{α,T}} = p,q
66+
Base.promote_rule(::Type{<:$poly{α,T}}, ::Type{<:$poly{α,S}}) where {α,T,S} =
6567
$poly{α,promote_type(T, S)}
66-
Base.promote_rule(::Type{$poly{α,T}}, ::Type{S}) where {α,T,S<:Number} =
68+
Base.promote_rule(::Type{<:$poly{α,T}}, ::Type{S}) where {α,T,S<:Number} =
6769
$poly{α,promote_type(T,S)}
68-
function $poly{α,T}(x::AbstractVector{S}, var::Polynomials.SymbolLike = :x) where {α,T,S}
70+
function $poly{α,T}(x::AbstractVector{S}, var::SymbolLike = :x) where {α,T,S}
6971
$poly{α,T}(T.(x), Symbol(var))
7072
end
71-
$poly{α}(coeffs::AbstractVector{T}, var::Polynomials.SymbolLike=:x) where {α,T} =
73+
$poly{α}(coeffs::AbstractVector{T}, var::SymbolLike=:x) where {α,T} =
7274
$poly{α,T}(coeffs, Symbol(var))
73-
$poly{α,T}(n::Number, var::Polynomials.SymbolLike = :x) where {α,T} = n*one($poly{α,T}, Symbol(var))
74-
$poly{α}(n::Number, var::Polynomials.SymbolLike = :x) where {α} = n*one($poly{α}, Symbol(var))
75-
$poly{α,T}(var::Polynomials.SymbolLike=:x) where {α, T} = variable($poly{α,T}, Symbol(var))
76-
$poly{α}(var::Polynomials.SymbolLike=:x) where {α} = variable($poly{α}, Symbol(var))
75+
$poly{α,T}(n::Number, var::SymbolLike = :x) where {α,T} = n*one($poly{α,T}, Symbol(var))
76+
$poly{α}(n::Number, var::SymbolLike = :x) where {α} = n*one($poly{α}, Symbol(var))
77+
$poly{α,T}(var::SymbolLike=:x) where {α, T} = variable($poly{α,T}, Symbol(var))
78+
$poly{α}(var::SymbolLike=:x) where {α} = variable($poly{α}, Symbol(var))
7779
end
7880
end
7981

@@ -83,17 +85,18 @@ macro register2(name)
8385
poly = esc(name)
8486
quote
8587
Base.convert(::Type{P}, p::P) where {P<:$poly} = p
86-
Base.promote_rule(::Type{$poly{α,β,T}}, ::Type{$poly{α,β,S}}) where {α,β,T,S} =
88+
Base.promote(p::P, q::Q) where {α,β,T, P <:$poly{α,β,T}, Q <: $poly{α,β,T}} = p,q
89+
Base.promote_rule(::Type{<:$poly{α,β,T}}, ::Type{<:$poly{α,β,S}}) where {α,β,T,S} =
8790
$poly{α,β,promote_type(T, S)}
88-
Base.promote_rule(::Type{$poly{α,β,T}}, ::Type{S}) where {α,β,T,S<:Number} =
91+
Base.promote_rule(::Type{<:$poly{α,β,T}}, ::Type{S}) where {α,β,T,S<:Number} =
8992
$poly{α,β,promote_type(T, S)}
90-
$poly{α,β}(coeffs::AbstractVector{T}, var::Polynomials.SymbolLike = :x) where {α,β,T} =
93+
$poly{α,β}(coeffs::AbstractVector{T}, var::SymbolLike = :x) where {α,β,T} =
9194
$poly{α,β,T}(coeffs, Symbol(var))
92-
$poly{α,β,T}(x::AbstractVector{S}, var = :x) where {α,β,T,S<:Number} = $poly{α,β,T}(T.(x), var)
93-
$poly{α,β,T}(n::Number, var = :x) where {α,β,T} = n*one($poly{α,β,T}, var)
94-
$poly{α,β}(n::Number, var = :x) where {α,β} = n*one($poly{α,β}, var)
95-
$poly{α,β,T}(var=:x) where {α,β, T} = variable($poly{α,β,T}, var)
96-
$poly{α,β}(var=:x) where {α,β} = variable($poly{α,β}, var)
95+
$poly{α,β,T}(x::AbstractVector{S}, var::SymbolLike = :x) where {α,β,T,S<:Number} = $poly{α,β,T}(T.(x), var)
96+
$poly{α,β,T}(n::Number, var::SymbolLike = :x) where {α,β,T} = n*one($poly{α,β,T}, Symbol(var))
97+
$poly{α,β}(n::Number, va::SymbolLiker = :x) where {α,β} = n*one($poly{α,β}, Symbol(var))
98+
$poly{α,β,T}(var::SymbolLike=:x) where {α,β, T} = variable($poly{α,β,T}, Symbol(var))
99+
$poly{α,β}(var::SymbolLike=:x) where {α,β} = variable($poly{α,β}, Symbol(var))
97100
end
98101
end
99102

src/polynomials/ImmutablePolynomial.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,10 +124,10 @@ end
124124
# overrides from common.jl due to coeffs possibly being padded, coeffs being non mutable, ...
125125

126126
## promote N,M case; may not change p,q if T==S
127-
function Base.promote(p::ImmutablePolynomial{T,N}, q::ImmutablePolynomial{S,M}) where {N,T,M,S}
128-
R = promote_type(T,S)
129-
ImmutablePolynomial{R}(p.coeffs, p.var), ImmutablePolynomial{R}(q.coeffs, q.var)
130-
end
127+
#function Base.promote(p::ImmutablePolynomial{T,N}, q::ImmutablePolynomial{S,M}) where {N,T,M,S}
128+
# R = promote_type(T,S)
129+
# ImmutablePolynomial{R}(p.coeffs, p.var), ImmutablePolynomial{R}(q.coeffs, q.var)
130+
#end
131131

132132
Base.collect(p::P) where {P <: ImmutablePolynomial} = [pᵢ for pᵢ p]
133133

0 commit comments

Comments
 (0)