@@ -4,38 +4,38 @@ Base.one(x::AbstractPoly) = one(typeof(x))
44Base. zero (x:: AbstractPoly ) = zero (typeof (x))
55
66function Base. show (io:: IO , p:: AbstractPoly{D,T} ) where {D,T<: Real }
7- N= degree (p)
8- for i= N: - 1 : 0
7+ N = degree (p)
8+ for i = N: - 1 : 0
99 if i > 0
10- print (io," $(abs (p[i])) *" )
10+ print (io, " $(abs (p[i])) *" )
1111 print (io, " $D " )
12- i> 1 && print (io," ^$i " )
13- print (io, p[i- 1 ]< 0 ? " - " : " + " )
12+ i > 1 && print (io, " ^$i " )
13+ print (io, p[i- 1 ] < 0 ? " - " : " + " )
1414 else
15- print (io," $(abs (p[i])) " )
15+ print (io, " $(abs (p[i])) " )
1616 end
1717 end
1818end
1919function Base. show (io:: IO , p:: AbstractPoly{D,T} ) where {D,T<: Complex }
20- N= degree (p)
21- for i= N: - 1 : 0
22- if i> 0
23- print (io," ($(p[i]) )*" )
24- print (io," $D " )
25- i> 1 && print (io," ^$i " )
20+ N = degree (p)
21+ for i = N: - 1 : 0
22+ if i > 0
23+ print (io, " ($(p[i]) )*" )
24+ print (io, " $D " )
25+ i > 1 && print (io, " ^$i " )
2626 print (io, " + " )
2727 else
28- print (io," ($(p[i]) )" )
28+ print (io, " ($(p[i]) )" )
2929 end
3030 end
3131end
3232struct Power{D,T} <: AbstractPoly{D,T}
3333 coeff:: T
3434 N:: Int
3535end
36- degree (p:: Power )= p. N
37- Base. getindex (p:: Power{D,T} ,i:: Int ) where {D,T} = (i== p. N ? p. coeff : zero (T))
38- Power {D} (coeff:: T , N:: Int = 0 ) where {D,T} = Power {D,T} (coeff, N)
36+ degree (p:: Power ) = p. N
37+ Base. getindex (p:: Power{D,T} ,i:: Int ) where {D,T} = (i == p. N ? p. coeff : zero (T))
38+ Power {D} (coeff:: T , N:: Int = 0 ) where {D,T} = Power {D,T} (coeff, N)
3939
4040Base. one (:: Type{Power{D,T}} ) where {D,T} = Power {D,T} (one (T), 0 )
4141Base. zero (:: Type{Power{D,T}} ) where {D,T} = Power {D,T} (zero (T), 0 )
@@ -45,18 +45,18 @@ Base.convert(::Type{Power{D,T}}, coeff::Number) where {D,T} = Power{D,T}(coeff,
4545Base. convert (:: Type{Power{D,T}} , p:: Power{D} ) where {D,T} = Power {D,T} (p. coeff, p. N)
4646
4747function Base. show (io:: IO ,p:: Power{D,T} ) where {D,T}
48- if p. coeff== 1
49- elseif p. coeff== - 1
50- print (io," -" )
51- elseif isa (p. coeff,Complex)
52- print (io," ($(p. coeff) )" )
48+ if p. coeff == 1
49+ elseif p. coeff == - 1
50+ print (io, " -" )
51+ elseif isa (p. coeff, Complex)
52+ print (io, " ($(p. coeff) )" )
5353 else
54- print (io," $(p. coeff) " )
54+ print (io, " $(p. coeff) " )
5555 end
56- p. coeff== 1 || p. coeff== - 1 || p. N== 0 || print (io," *" )
57- p. N== 0 && (p. coeff== 1 || p. coeff== - 1 ) && print (io," 1" )
58- p. N> 0 && print (io," $D " )
59- p. N> 1 && print (io," ^$(p. N) " )
56+ p. coeff == 1 || p. coeff == - 1 || p. N == 0 || print (io, " *" )
57+ p. N == 0 && (p. coeff == 1 || p. coeff == - 1 ) && print (io, " 1" )
58+ p. N > 0 && print (io, " $D " )
59+ p. N > 1 && print (io, " ^$(p. N) " )
6060end
6161
6262Base.:* (p1:: Power{D} , p2:: Power{D} ) where {D} = Power {D} (p1. coeff* p2. coeff, degree (p1)+ degree (p2))
@@ -84,37 +84,37 @@ Base.convert(::Type{Poly{D}}, p::Power{D}) where {D} = Poly{D}(vcat(fill(zero(p.
8484Base. convert (:: Type{Poly{D,T}} , p:: Power{D} ) where {D,T} = Poly {D,T} (vcat (fill (zero (T), p. N), convert (T, p. coeff)))
8585Base. convert (:: Type{Poly{D,T}} , p:: Poly{D} ) where {D,T} = Poly {D,T} (convert (Vector{T}, p. coeffs))
8686
87- Base.:+ (p:: Poly{D} , s:: Number ) where {D} = Poly {D} ([p[i]+ (i == 0 ? s : zero (s)) for i= 0 : degree (p)])
87+ Base.:+ (p:: Poly{D} , s:: Number ) where {D} = Poly {D} ([p[i] + (i == 0 ? s : zero (s)) for i = 0 : degree (p)])
8888Base.:+ (s:: Number , p:: Poly ) = + (p,s)
8989function Base.:+ (p1:: Power{D,T1} , p2:: Power{D,T2} ) where {D,T1,T2}
90- T= promote_type (T1,T2)
91- coeffs= zeros (T,max (degree (p1),degree (p2))+ 1 )
92- coeffs[p1. N+ 1 ]= p1. coeff
93- coeffs[p2. N+ 1 ]+= p2. coeff
90+ T = promote_type (T1,T2)
91+ coeffs = zeros (T,max (degree (p1),degree (p2))+ 1 )
92+ coeffs[p1. N+ 1 ] = p1. coeff
93+ coeffs[p2. N+ 1 ] += p2. coeff
9494 return Poly {D,T} (coeffs)
9595end
9696function Base.:+ (p:: Power{D,T1} , s:: T2 ) where {D,T1,T2}
97- T= promote_type (T1,T2)
98- coeffs= zeros (T,degree (p)+ 1 )
97+ T = promote_type (T1,T2)
98+ coeffs = zeros (T,degree (p)+ 1 )
9999 coeffs[p. N+ 1 ] = p. coeff
100100 coeffs[1 ] += s
101101 return Poly {D,T} (coeffs)
102102end
103103Base.:+ (s:: Number , p:: Power ) = + (p,s)
104104
105105function Base.:+ (p1:: Power{D,T1} , p2:: Poly{D,T2} ) where {D,T1,T2}
106- T= promote_type (T1,T2)
107- coeffs= zeros (T,max (degree (p1),degree (p2))+ 1 )
108- coeffs[1 : (degree (p2)+ 1 )]= p2. coeffs
109- coeffs[p1. N+ 1 ]+= p1. coeff
106+ T = promote_type (T1,T2)
107+ coeffs = zeros (T,max (degree (p1),degree (p2))+ 1 )
108+ coeffs[1 : (degree (p2)+ 1 )] = p2. coeffs
109+ coeffs[p1. N+ 1 ] += p1. coeff
110110 return Poly {D,T} (coeffs)
111111end
112112Base.:+ (p1:: Poly{D} ,p2:: Power{D} ) where {D}= + (p2,p1)
113113function Base.:+ (p1:: Poly{D,T1} , p2:: Poly{D,T2} ) where {D,T1,T2}
114- T= promote_type (T1,T2)
115- coeffs= zeros (T, max (degree (p1),degree (p2))+ 1 )
114+ T = promote_type (T1,T2)
115+ coeffs = zeros (T, max (degree (p1),degree (p2))+ 1 )
116116 coeffs[1 : (degree (p1)+ 1 )] = p1. coeffs
117- for j= 0 : degree (p2)
117+ for j = 0 : degree (p2)
118118 coeffs[j+ 1 ] += p2. coeffs[j+ 1 ]
119119 end
120120 return Poly {D,T} (coeffs)
@@ -130,12 +130,12 @@ Base.:*(p1::Poly{D}, p2::Power{D}) where {D} = *(p2,p1)
130130Base.:* (p:: Poly{D} , s:: Number ) where {D} = Poly {D} (s* p. coeffs)
131131Base.:* (s:: Number , p:: Poly ) = * (p,s)
132132function Base.:* (p1:: Poly{D} , p2:: Poly{D} ) where {D}
133- N= degree (p1)+ degree (p2)
134- s= p1[0 ]* p2[0 ]
135- coeffs= zeros (typeof (s), N+ 1 )
136- for i= 0 : degree (p1)
137- for j= 0 : degree (p2)
138- coeffs[i+ j+ 1 ]+= p1[i]* p2[j]
133+ N = degree (p1)+ degree (p2)
134+ s = p1[0 ]* p2[0 ]
135+ coeffs = zeros (typeof (s), N+ 1 )
136+ for i = 0 : degree (p1)
137+ for j = 0 : degree (p2)
138+ coeffs[i+ j+ 1 ] += p1[i]* p2[j]
139139 end
140140 end
141141 return Poly {D} (coeffs)
@@ -148,15 +148,15 @@ Base.promote_rule(::Type{Poly{D,T1}}, ::Type{Power{D,T2}}) where {D,T1<:Number,T
148148Base. promote_rule (:: Type{Poly{D,T1}} , :: Type{T2} ) where {D,T1<: Number ,T2<: Number } = Poly{D,promote_type (T1,T2)}
149149
150150function Base.:(== )(p1:: AbstractPoly{D} , p2:: AbstractPoly{D} ) where {D}
151- for i= max (degree (p1),degree (p2)): - 1 : 0
152- p1[i]== p2[i] || return false
151+ for i = max (degree (p1),degree (p2)): - 1 : 0
152+ p1[i] == p2[i] || return false
153153 end
154154 return true
155155end
156156function Base.:< (p1:: AbstractPoly{D} , p2:: AbstractPoly{D} ) where {D}
157- for i= max (degree (p1),degree (p2)): - 1 : 0
158- p1[i]< p2[i] && return true
159- p1[i]> p2[i] && return false
157+ for i = max (degree (p1),degree (p2)): - 1 : 0
158+ p1[i] < p2[i] && return true
159+ p1[i] > p2[i] && return false
160160 end
161161 return false
162162end
0 commit comments