@@ -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
7880end
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
98101end
99102
0 commit comments