Waldek,
I have a few more patches that I would like to get into FriCAS before
the next release but really none of them are "critical". Here's one
for XPOLY. It adds a couple of missing functions. I first mentioned
this patch here:
http://lists.gnu.org/archive/html/axiom-math/2006-03/msg00003.html
Index: src/algebra/xpoly.spad.pamphlet
===================================================================
--- src/algebra/xpoly.spad.pamphlet (revision 684)
+++ src/algebra/xpoly.spad.pamphlet (working copy)
@@ -116,6 +116,27 @@
(r := lquo (u,l)) case "failed" => "failed"
reverse_! (r::%)
+ -- Inserted by Bill Page, based on 'divide' from 'FreeMonoid'
+ (lar:% div a:%) ==
+ (a = 1) => [lar, 1]
+ Na : Integer := #(la := listOfMonoms(a)$Rep)
+ Nlar : Integer := #(llar := listOfMonoms(lar)$Rep)
+ l:List(REC) := empty()
+ while Na <= Nlar repeat
+ if llar.first.gen = la.first.gen and
+ llar.first.exp >= la.first.exp then
+ -- Can match a portion of this lar factor.
+ -- Now match tail.
+ (q:=lquo(makeMulti rest llar,makeMulti rest la))case $ =>
+ if llar.first.exp > la.first.exp then
+ l := concat_!(l, [la.first.gen,
+ (llar.first.exp - la.first.exp)::NNI])
+ return [makeMulti l, q::%]
+ l := concat_!(l, first llar)
+ llar := rest llar
+ Nlar := Nlar - 1
+ "failed"
+
length x == reduce("+" ,[f.exp for f in listOfMonoms x], 0)
varList x ==
@@ -517,6 +538,8 @@
-- definitions
+ monom(w, r) == [[w,r]]
+ coerce(x:WORD):% == monom(x,1$R)
mindegTerm p == last(p)$Rep
if R has CommutativeRing then
---
I will try to send a few more like this ASAP.
Regards,
Bill Page.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"FriCAS - computer algebra system" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/fricas-devel?hl=en
-~----------~----~----~----~------~----~------~--~---
Index: src/algebra/xpoly.spad.pamphlet
===================================================================
--- src/algebra/xpoly.spad.pamphlet (revision 684)
+++ src/algebra/xpoly.spad.pamphlet (working copy)
@@ -116,6 +116,27 @@
(r := lquo (u,l)) case "failed" => "failed"
reverse_! (r::%)
+ -- Inserted by Bill Page, based on 'divide' from 'FreeMonoid'
+ (lar:% div a:%) ==
+ (a = 1) => [lar, 1]
+ Na : Integer := #(la := listOfMonoms(a)$Rep)
+ Nlar : Integer := #(llar := listOfMonoms(lar)$Rep)
+ l:List(REC) := empty()
+ while Na <= Nlar repeat
+ if llar.first.gen = la.first.gen and
+ llar.first.exp >= la.first.exp then
+ -- Can match a portion of this lar factor.
+ -- Now match tail.
+ (q:=lquo(makeMulti rest llar,makeMulti rest la))case $ =>
+ if llar.first.exp > la.first.exp then
+ l := concat_!(l, [la.first.gen,
+ (llar.first.exp - la.first.exp)::NNI])
+ return [makeMulti l, q::%]
+ l := concat_!(l, first llar)
+ llar := rest llar
+ Nlar := Nlar - 1
+ "failed"
+
length x == reduce("+" ,[f.exp for f in listOfMonoms x], 0)
varList x ==
@@ -517,6 +538,8 @@
-- definitions
+ monom(w, r) == [[w,r]]
+ coerce(x:WORD):% == monom(x,1$R)
mindegTerm p == last(p)$Rep
if R has CommutativeRing then