
Calling Sequence


AreCoprime(a, b, z, eps, out)
IsSingular(a, z, eps, out)


Parameters


a, b



univariate numeric polynomials

z



name; indeterminate for a and b

eps



nonnegative numeric; error bound

out



(optional) equation of the form output = obj where obj is 'BC' or a list containing one or more instances of this name; select result objects to compute





Description


•

The AreCoprime(a, b, z, eps) command checks whether univariate numeric polynomials a, b in z remain coprime after perturbations of order eps. This is done by computing reliable lower and upper bounds on the distance between the pair (a, b) and the set of the univariate complex polynomial pairs in z with degrees that do not exceed those of a and b, and that have at least one common root. (See SNAP[DistanceToCommonDivisors].)


The lower bound LB is obtained using the SNAP[DistanceToCommonDivisors] function. The upper bound UP is the minimum between the 1norm of a and the 1norm of b.


If eps > UP, false is returned;


if eps < LB, true is returned;


if LB <= eps <= UP, FAIL is returned because it is impossible to provide a reliable answer.

•

The IsSingular(a, z, eps) command checks whether the univariate numeric polynomial a in z has common roots up to perturbations of order eps. It essentially calls AreCoprime(a, b, z) with b = diff(a, z).

•

The output option (out) determines the content of the returned expression sequence.


As specified by the out option, Maple returns an expression sequence containing one or more BC, which is the list [v, u] of the numeric polynomials in z that satisfy av+bu=1 and $\mathrm{degree}\left(u\,z\right)<\mathrm{degree}\left(a\,z\right)$ and $\mathrm{degree}\left(v\,z\right)<\mathrm{degree}\left(b\,z\right)$ (bezout coefficients for coprime polynomials a and b). This list is empty if the routine returns false or FAIL.



Examples


>

$\mathrm{with}\left(\mathrm{SNAP}\right)\:$

>

$a\u22540.1{z}^{2}+1.5z0.2$

${a}{\u2254}{0.1}{}{{z}}^{{2}}{+}{1.5}{}{z}{}{0.2}$
 (1) 
>

$b\u22540.2{z}^{3}+0.15$

${b}{\u2254}{0.2}{}{{z}}^{{3}}{+}{0.15}$
 (2) 
>

$\mathrm{AreCoprime}\left(a\,b\,z\,0.5\right)$

>

$\mathrm{AreCoprime}\left(a\,b\,z\,0.1\right)$

>

$c\u2254\mathrm{AreCoprime}\left(a\,b\,z\,0.1\,\mathrm{output}='\mathrm{BC}'\right)$

${c}{\u2254}{\mathrm{true}}{,}\left[{}{0.871004100817766}{}{{z}}^{{2}}{}{0.112232907263963}{}{z}{}{0.0585145926760834}{\,}{0.435502050408883}{}{z}{+}{6.58864720976522}\right]$
 (5) 
>

$\mathrm{fnormal}\left(\mathrm{expand}\left(ac\left[2\right]\left[1\right]+bc\left[2\right]\left[2\right]\right)\right)$



References



Beckermann, B., and Labahn, G. "A fast and numerically stable Euclideanlike algorithm for detecting relatively prime numerical polynomials." Journal of Symbolic Computation. Vol. 26, (1998): 691714.


Beckermann, B. and Labahn, G. "When are two numerical polynomials relatively prime?" Journal of Symbolic Computation. Vol. 26, (1998): 677689.



