@@ -12,6 +12,13 @@ function ngcd(p::P, q::Q,
1212 args... ;
1313 kwargs... ) where {T,X,P<: StandardBasisPolynomial{T,X} ,
1414 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+
1522 if (degree (q) > degree (p))
1623 u,w,v,Θ,κ = ngcd (q,p,args... ; kwargs... )
1724 return (u= u,v= v,w= w, Θ= Θ, κ= κ)
@@ -21,14 +28,12 @@ function ngcd(p::P, q::Q,
2128 return ngcd (q, b, args... ; λ= 100 , kwargs... )
2229 end
2330
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
2932 p ≈ q && return (u= p,v= one (p), w= one (p), θ= NaN , κ= NaN )
3033 Polynomials. assert_same_variable (p,q)
3134
35+
36+
3237 R = promote_type (float (T))
3338 𝑷 = Polynomials. constructorof (P){R,X}
3439
0 commit comments