@@ -12,6 +12,13 @@ function ngcd(p::P, q::Q,
12
12
args... ;
13
13
kwargs... ) where {T,X,P<: StandardBasisPolynomial{T,X} ,
14
14
S,Y,Q<: StandardBasisPolynomial{S,Y} }
15
+
16
+ # easy cases
17
+ degree (p) < 0 && return (u= q, v= p, w= one (q), θ= NaN , κ= NaN )
18
+ degree (p) == 0 && return (u= one (q), v= p, w= q, θ= NaN , κ= NaN )
19
+ degree (q) < 0 && return (u= one (q), v= p, w= zero (q), θ= NaN , κ= NaN )
20
+ degree (q) == 0 && return (u= one (p), v= p, w= q, Θ= NaN , κ= NaN )
21
+
15
22
if (degree (q) > degree (p))
16
23
u,w,v,Θ,κ = ngcd (q,p,args... ; kwargs... )
17
24
return (u= u,v= v,w= w, Θ= Θ, κ= κ)
@@ -21,14 +28,12 @@ function ngcd(p::P, q::Q,
21
28
return ngcd (q, b, args... ; λ= 100 , kwargs... )
22
29
end
23
30
24
- # easy cases
25
- degree (p) < 0 && return (u= q, v= p, w= one (q), θ= NaN , κ= NaN )
26
- degree (p) == 0 && return (u= one (q), v= p, w= q, θ= NaN , κ= NaN )
27
- degree (q) < 0 && return (u= one (q), v= p, w= zero (q), θ= NaN , κ= NaN )
28
- degree (q) == 0 && return (u= one (p), v= p, w= q, Θ= NaN , κ= NaN )
31
+ # other easy cases
29
32
p ≈ q && return (u= p,v= one (p), w= one (p), θ= NaN , κ= NaN )
30
33
Polynomials. assert_same_variable (p,q)
31
34
35
+
36
+
32
37
R = promote_type (float (T))
33
38
𝑷 = Polynomials. constructorof (P){R,X}
34
39
0 commit comments