@@ -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
@@ -65,11 +65,11 @@ immutable Poly{T<:Number}
65
65
function Poly (a:: Vector{T} , var)
66
66
# if a == [] we replace it with a = [0]
67
67
if length (a) == 0
68
- return new (zeros (T,1 ), symbol (var))
68
+ return new (zeros (T,1 ), @compat Symbol (var))
69
69
else
70
70
# determine the last nonzero element and truncate a accordingly
71
71
a_last = max (1 ,findlast (a))
72
- new (a[1 : a_last], symbol (var))
72
+ new (a[1 : a_last], @compat Symbol (var))
73
73
end
74
74
end
75
75
end
@@ -101,8 +101,8 @@ function poly{T}(r::AbstractVector{T}, var=:x)
101
101
return Poly (reverse (c), var)
102
102
end
103
103
poly (A:: Matrix , var= :x ) = poly (eigvals (A), var)
104
- poly (A:: Matrix , var:: AbstractString ) = poly (eigvals (A), symbol (var))
105
- poly (A:: Matrix , var:: Char ) = poly (eig (A)[1 ], symbol (var))
104
+ poly (A:: Matrix , var:: AbstractString ) = poly (eigvals (A), @compat Symbol (var))
105
+ poly (A:: Matrix , var:: Char ) = poly (eig (A)[1 ], @compat Symbol (var))
106
106
107
107
108
108
include (" show.jl" ) # display polynomials.
@@ -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