@@ -74,29 +74,32 @@ julia> p.(0:3)
74
74
75
75
function Base.:+ (p1:: Polynomial{T} , p2:: Polynomial{S} ) where {T, S}
76
76
n1, n2 = length (p1), length (p2)
77
- R = promote_type (T,S)
78
77
if n1 > 1 && n2 > 1
79
78
p1. var != p2. var && error (" Polynomials must have same variable" )
79
+ end
80
+ R = promote_type (T,S)
81
+ c = zeros (R, max (n1, n2))
82
+ if n1 > 1 && n2 > 1
80
83
if n1 >= n2
81
- c = R .( copy ( p1. coeffs))
82
- for i = 1 : n2
84
+ c . = p1. coeffs
85
+ for i = eachindex (p2 . coeffs)
83
86
c[i] += p2. coeffs[i]
84
87
end
85
88
else
86
- c = R .( copy ( p2. coeffs))
87
- for i = 1 : n1
89
+ c . = p2. coeffs
90
+ for i = eachindex (p1 . coeffs)
88
91
c[i] += p1. coeffs[i]
89
92
end
90
93
end
91
94
return Polynomial (c, p1. var)
92
95
elseif n1 <= 1
93
- c = R .( copy ( p2. coeffs))
94
- c[1 ] += p1[0 ]
95
- return Polynomial (c, p2. var)
96
+ c . = p2. coeffs
97
+ c[1 ] += p1[0 ]
98
+ return Polynomial (c, p2. var)
96
99
else
97
- c = R .( copy ( p1. coeffs))
98
- c[1 ] += p2[0 ]
99
- return Polynomial (c, p1. var)
100
+ c . = p1. coeffs
101
+ c[1 ] += p2[0 ]
102
+ return Polynomial (c, p1. var)
100
103
end
101
104
end
102
105
@@ -113,9 +116,9 @@ function Base.:*(p1::Polynomial{T}, p2::Polynomial{S}) where {T,S}
113
116
end
114
117
return Polynomial (c, p1. var)
115
118
elseif n <= 0
116
- return Polynomial (copy ( p2. coeffs) * p1[0 ], p2. var)
119
+ return Polynomial (p2. coeffs * p1[0 ], p2. var)
117
120
else
118
- return Polynomial (copy ( p1. coeffs) * p2[0 ], p1. var)
121
+ return Polynomial (p1. coeffs * p2[0 ], p1. var)
119
122
end
120
123
121
124
end
0 commit comments