axiom-developer
[Top][All Lists]

## [Axiom-developer] [#103 solve(z=z, z) ] Patch should be for exquo, not p

 From: anonymous Subject: [Axiom-developer] [#103 solve(z=z, z) ] Patch should be for exquo, not primitivePart Date: Thu, 17 Feb 2005 12:21:06 -0600

??changed:
-This should return '[ ]' as in (1)
<pre>[Anonymous user:]</pre><br>
This should return [ ] as in (1)

??changed:
-From kratt6 Thu Feb 17 07:35:54 -0600 2005
-From: kratt6
-Date: Thu, 17 Feb 2005 07:35:54 -0600
<pre>[Martin Rubey (kratt6) Thu Feb 17 07:35:54 -0600 2005

??changed:

??changed:
-From kratt6 Thu Feb 17 07:49:05 -0600 2005
-From: kratt6
-Date: Thu, 17 Feb 2005 07:49:05 -0600
<pre>[Martin Rubey (kratt6) Thu Feb 17 07:49:05 -0600 2005

??changed:

??changed:
-From unknown Thu Feb 17 10:44:08 -0600 2005
-From:
<pre>[William Sit, Thu Feb 17 10:44:08 -0600 2005]

??changed:
-Subject:
</pre>

??changed:
-From unknown Thu Feb 17 10:54:28 -0600 2005
-From:
-Date: Thu, 17 Feb 2005 10:54:28 -0600
<pre>[unknown Thu Feb 17 10:54:28 -0600 2005

??changed:
-
-

<hr><br>
<pre>[William Sit]</pre>

Martin, thanks for pointing out the source. However, I think the error is not
in 'primitivePart', but in 'exquo'. There are two cases:

\begin{axiom}
p:=0::POLY INT
exquo(p,content p)
exquo(p, content(p,v))
\end{axiom}

Description: 'exquo(a,b)' either returns an element 'c' such that 'c*b=a' or
'"failed"' if no such element can be found. The '"failed"' case is intended for
the situation when 'b' does not divide 'a' exactly.
So 'exquo(p,content p)' which is 'exquo(0,0)' returns '0' is ok, but
'exquo(p,content(p,v))' returns "failed" is wrong. Ironically, it is because
the second exquo tested 'b' (whether it is zero) and returned '"failed"' that
caused the problem. In catdef.spad, 'EuclideanDomain', 'exquo' is implemented
as:

<pre>
x exquo y ==
zero? y => "failed"
...
</pre>

This should be:

<pre>
x exquo y ==
+       zero? x => 0
-       zero? y => "failed"
...
</pre>

Compare this with implementation for the first 'exquo' in polycat.spad: 'FAMR'

<pre>
x exquo y ==
zero? x => 0
...
</pre>

--