@@ -13,7 +13,7 @@ export polyval, polyint, polyder, roots, polyfit
13
13
export Pade, padeval
14
14
15
15
import Base: length, endof, getindex, setindex!, copy, zero, one, convert, norm, gcd
16
- import Base: show, print, * , / , // , - , + , == , divrem, div, rem, eltype, .* , .- , .+
16
+ import Base: show, print, * , / , // , - , + , == , divrem, div, rem, eltype
17
17
import Base: promote_rule, truncate, chop, call, conj, transpose, dot, hash
18
18
import Base: isequal
19
19
@@ -156,7 +156,7 @@ variable(var::SymbolLike=:x) = variable(Float64, var)
156
156
"""
157
157
function truncate {T} (p:: Poly{Complex{T}} ; reltol = eps (T), abstol = eps (T))
158
158
a = coeffs (p)
159
- amax = maxabs ( a)
159
+ amax = maximum (abs, a)
160
160
thresh = amax * reltol + abstol
161
161
anew = map (ai -> complex (abs (real (ai)) <= thresh ? zero (T) : real (ai),
162
162
abs (imag (ai)) <= thresh ? zero (T) : imag (ai)),
166
166
167
167
function truncate {T} (p:: Poly{T} ; reltol = eps (T), abstol = eps (T))
168
168
a = coeffs (p)
169
- amax = maxabs ( a)
169
+ amax = maximum (abs, a)
170
170
anew = map (ai -> abs (ai) <= amax* reltol+ abstol ? zero (T) : ai, a)
171
171
return Poly (anew, p. var)
172
172
end
@@ -244,16 +244,10 @@ one{T}(::Type{Poly{T}}) = Poly([one(T)])
244
244
dot {T<:Number,S} (p:: Poly{S} , c:: T ) = p * c
245
245
dot {T<:Number,S} (c:: T , p:: Poly{S} ) = c * p
246
246
dot (p1:: Poly , p2:: Poly ) = p1 * p2
247
- .* {T<: Number ,S}(c:: T , p:: Poly{S} ) = Poly (c * p. a, p. var)
248
- .* {T<: Number ,S}(p:: Poly{S} , c:: T ) = Poly (p. a * c, p. var)
249
247
/ (p:: Poly , c:: Number ) = Poly (p. a / c, p. var)
250
248
- (p:: Poly ) = Poly (- p. a, p. var)
251
249
- {T<: Number }(p:: Poly , c:: T ) = + (p, - c)
252
- .- {T<: Number }(p:: Poly , c:: T ) = + (p, - c)
253
- .- {T<: Number }(c:: T , p:: Poly ) = + (p, - c)
254
250
+ {T<: Number }(c:: T , p:: Poly ) = + (p, c)
255
- .+ {T<: Number }(c:: T , p:: Poly ) = + (p, c)
256
- .+ {T<: Number }(p:: Poly , c:: T ) = + (p, c)
257
251
function + {T<: Number }(p:: Poly , c:: T )
258
252
if length (p) < 1
259
253
return Poly ([c,], p. var)
@@ -304,6 +298,16 @@ function *{T,S}(p1::Poly{T}, p2::Poly{S})
304
298
Poly (a,p1. var)
305
299
end
306
300
301
+ # # older . operators
302
+ if VERSION < v " 0.6.0-dev"
303
+ @compat Base.:.+ {T<: Number }(c:: T , p:: Poly ) = + (p, c)
304
+ @compat Base.:.+ {T<: Number }(p:: Poly , c:: T ) = + (p, c)
305
+ @compat Base.:.- {T<: Number }(p:: Poly , c:: T ) = + (p, - c)
306
+ @compat Base.:.- {T<: Number }(c:: T , p:: Poly ) = + (p, - c)
307
+ @compat Base.:.* {T<: Number ,S}(c:: T , p:: Poly{S} ) = Poly (c * p. a, p. var)
308
+ @compat Base.:.* {T<: Number ,S}(p:: Poly{S} , c:: T ) = Poly (p. a * c, p. var)
309
+ end
310
+
307
311
function divrem {T, S} (num:: Poly{T} , den:: Poly{S} )
308
312
if num. var != den. var
309
313
error (" Polynomials must have same variable" )
@@ -403,7 +407,7 @@ polyint{T}(p::Poly{T}) = polyint(p, 0)
403
407
404
408
# if we have coefficients that have `NaN` representation
405
409
function polyint {T<:Union{Real,Complex},S<:Number} (p:: Poly{T} , k:: S )
406
- any (isnan ( p. a)) && return Poly (promote_type (T,S)[NaN ])
410
+ any (map (isnan, p. a)) && return Poly (promote_type (T,S)[NaN ])
407
411
_polyint (p, k)
408
412
end
409
413
415
419
416
420
# if we have both coefficients and initial condition that can take `NaN`
417
421
function polyint {T<:Union{Real,Complex},S<:Union{Real,Complex}} (p:: Poly{T} , k:: S )
418
- (any (isnan ( p. a)) || isnan (k)) && return Poly (promote_type (T,S)[NaN ])
422
+ (any (map (isnan, p. a)) || isnan (k)) && return Poly (promote_type (T,S)[NaN ])
419
423
_polyint (p, k)
420
424
end
421
425
@@ -449,7 +453,7 @@ function polyder{T<:Union{Real,Complex}}(p::Poly{T}, order::Int=1)
449
453
n = length (p)
450
454
order < 0 && error (" Order of derivative must be non-negative" )
451
455
order == 0 && return p
452
- any (isnan ( p. a)) && return Poly (T[NaN ], p. var)
456
+ any (map (isnan, p. a)) && return Poly (T[NaN ], p. var)
453
457
n <= order && return Poly (T[], p. var)
454
458
_polyder (p, order)
455
459
end
@@ -537,7 +541,7 @@ gcd(poly([1,1,2]), poly([1,2,3])) # returns (x-1)*(x-2)
537
541
```
538
542
"""
539
543
function gcd {T, S} (a:: Poly{T} , b:: Poly{S} )
540
- if all (abs ( b. a).<= 2 * eps (S))
544
+ if all (map (abs, b. a).<= 2 * eps (S))
541
545
return a
542
546
else
543
547
s, r = divrem (a, b)
0 commit comments