On Wed, May 14, 2008 at 5:04 PM, Ralf Hemmecke wrote:
> To me the problem is bad design.
>
> halfExtendedSubResultantGcd1 and
> halfExtendedSubResultantGcd2 could well have returned the
> same type Record(gcd: P, coef: P). By the name of the function
> it would have been clear how to interpret the coef entry.
>
> In fact, I would rather have liked that both functions simply return
> a multivalue or a Cross(P, P), but unfortunately, that does not
> work in panAxiom.

What is a "multivalue"? Is it a type in Aldor?

In Axiom it is possible for functions to return objects of type
'Product(P,P)' or 'DirectProduct(2,P)' but a general n-ary Cross type
is not available in SPAD or the Axiom library.

>
> If you look closely, then
>
> g := if mdeg p < mdeg ts_v
>        then gcd halfExtendedSubResultantGcd2(ts_v,p)$P
>        else gcd halfExtendedSubResultantGcd1(p,ts_v)$P
>
> would then have been a shorter version of the "if" including the
> following "g:=gcd(n,d)". But I guess that does not yet work in SPAD.
>

In Axiom a function has type

   f:Mapping(A,B,C, ... )

usually written in the more convenient syntax

  f:(B,C, ... ) -> A

but this notation does not imply that the input domain to the function
is considered to be of type

  Cross(B,C, ... )

Instead we say that the function has multiple inputs.

(There is a long discussion of this on the axiom-wiki.)

So in Axiom one must write a slightly more awkward expression:

  g := if mdeg p < mdeg ts_v
        then (x+->gcd(x.gcd,x.coef2))(halfExtendedSubResultantGcd2(ts_v,p)$P)
        else (x+->gcd(x.gcd,x.coef1))(halfExtendedSubResultantGcd1(p,ts_v)$P)

where the anonymous function untangles the record as inputs. It is not
necessary that 'halfExtendedSubResultantGcd1' and
'halfExtendedSubResultantGcd2' return the same type.

Regards,
Bill Page.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft 
Defy all challenges. Microsoft(R) Visual Studio 2008. 
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
open-axiom-devel mailing list
open-axiom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open-axiom-devel

Reply via email to