@@ -12,7 +12,7 @@ export Pade, padeval
12
12
export truncate!
13
13
14
14
import Base: length, endof, getindex, setindex!, copy, zero, one, convert, norm, gcd
15
- import Base: show, print, * , / , // , - , + , == , divrem, div, rem, eltype
15
+ import Base: show, print, * , / , // , - , + , == , divrem, div, rem, eltype, .* , .- , .+
16
16
import Base: promote_rule, truncate, chop
17
17
if VERSION >= v " 0.4"
18
18
import Base. call
@@ -111,6 +111,7 @@ convert{T}(::Type{Poly{T}}, p::Poly) = Poly(convert(Vector{T}, p.a), p.var)
111
111
convert {T, S<:Number} (:: Type{Poly{T}} , x:: S ) = Poly (promote_type (T, S)[x])
112
112
convert {T, S<:Number,n} (:: Type{Poly{T}} , x:: Array{S,n} ) = map (el-> convert (Poly{promote_type (T,S)},el),x)
113
113
promote_rule {T, S} (:: Type{Poly{T}} , :: Type{Poly{S}} ) = Poly{promote_type (T, S)}
114
+ promote_rule {T, S<:Number} (:: Type{Poly{T}} , :: Type{S} ) = Poly{promote_type (T, S)}
114
115
eltype {T} (:: Poly{T} ) = T
115
116
116
117
"""
@@ -212,11 +213,17 @@ one{T}(::Type{Poly{T}}) = Poly([one(T)])
212
213
# # Overload arithmetic operators for polynomial operations between polynomials and scalars
213
214
* {T<: Number ,S}(c:: T , p:: Poly{S} ) = Poly (c * p. a, p. var)
214
215
* {T<: Number ,S}(p:: Poly{S} , c:: T ) = Poly (p. a * c, p. var)
216
+ .* {T<: Number ,S}(c:: T , p:: Poly{S} ) = Poly (c * p. a, p. var)
217
+ .* {T<: Number ,S}(p:: Poly{S} , c:: T ) = Poly (p. a * c, p. var)
215
218
/ (p:: Poly , c:: Number ) = Poly (p. a / c, p. var)
216
219
- (p:: Poly ) = Poly (- p. a, p. var)
217
- - (p:: Poly , c:: Number ) = + (p, - c)
218
- + (c:: Number , p:: Poly ) = + (p, c)
219
- function + (p:: Poly , c:: Number )
220
+ - {T<: Number }(p:: Poly , c:: T ) = + (p, - c)
221
+ .- {T<: Number }(p:: Poly , c:: T ) = + (p, - c)
222
+ .- {T<: Number }(c:: T , p:: Poly ) = + (p, - c)
223
+ + {T<: Number }(c:: T , p:: Poly ) = + (p, c)
224
+ .+ {T<: Number }(c:: T , p:: Poly ) = + (p, c)
225
+ .+ {T<: Number }(p:: Poly , c:: T ) = + (p, c)
226
+ function + {T<: Number }(p:: Poly , c:: T )
220
227
if length (p) < 1
221
228
return Poly ([c,], p. var)
222
229
else
@@ -225,7 +232,7 @@ function +(p::Poly, c::Number)
225
232
return p2;
226
233
end
227
234
end
228
- function - {T}(c:: Number , p:: Poly{T} )
235
+ function - {T<: Number }(c:: T , p:: Poly )
229
236
if length (p) < 1
230
237
return Poly (T[c,], p. var)
231
238
else
0 commit comments