|
|
last edited 7 years ago by test1 |
1 2 3 | ||
Editor: 127.0.0.1
Time: 2007/11/02 07:50:23 GMT-7 |
||
Note: copied for axiom-developer |
changed: - This package extends UnivariatePolynomialCommonDenominator for arbitrary polynomial categories. In fact, I don't understand why the original package is so restrictive. \begin{spad} )abbrev package PCDEN PolynomialCommonDenominator PolynomialCommonDenominator(R, Q, P, E, VarSet): Exports == Impl where R : IntegralDomain Q : QuotientFieldCategory R E : OrderedAbelianMonoidSup VarSet: OrderedSet P: PolynomialCategory(Q, E,VarSet) Exports ==> with commonDenominator: P -> R ++ commonDenominator(q) returns a common denominator d for ++ the coefficients of q. clearDenominator : P -> P ++ clearDenominator(q) returns p such that \spad{q = p/d} where d is ++ a common denominator for the coefficients of q. splitDenominator : P -> Record(num: P, den: R) ++ splitDenominator(q) returns \spad{[p, d]} such that \spad{q = p/d} and d ++ is a common denominator for the coefficients of q. Impl ==> add import CommonDenominator(R, Q, List Q) commonDenominator p == commonDenominator coefficients p clearDenominator p == d := commonDenominator p map(numer(d * #1)::Q, p) splitDenominator p == d := commonDenominator p [map(numer(d * #1)::Q, p), d] \end{spad} Example use: \begin{axiom} )set mess type off dom:=DMP([x,y], FRAC DMP([z],INT)); p:dom:=x*y^3/(z^2-1) + 3*x*y/(z^3-1) commonDenominator p clearDenominator p splitDenominator p \end{axiom}
This package extends UnivariatePolynomialCommonDenominator? for arbitrary polynomial categories. In fact, I don't understand why the original package is so restrictive.
)abbrev package PCDEN PolynomialCommonDenominator PolynomialCommonDenominator(R,Q, P, E, VarSet): Exports == Impl where R : IntegralDomain Q : QuotientFieldCategory R E : OrderedAbelianMonoidSup VarSet: OrderedSet P: PolynomialCategory(Q, E, VarSet)
Exports ==> with commonDenominator: P -> R ++ commonDenominator(q) returns a common denominator d for ++ the coefficients of q. clearDenominator : P -> P ++ clearDenominator(q) returns p such that \spad{q = p/d} where d is ++ a common denominator for the coefficients of q. splitDenominator : P -> Record(num: P,den: R) ++ splitDenominator(q) returns \spad{[p, d]} such that \spad{q = p/d} and d ++ is a common denominator for the coefficients of q.
Impl ==> add import CommonDenominator(R,Q, List Q)
commonDenominator p == commonDenominator coefficients p
clearDenominator p == d := commonDenominator p map(numer(d * #1)::Q,p)
splitDenominator p == d := commonDenominator p [map(numer(d * #1)::Q,p), d]
Compiling FriCAS source code from file /var/lib/zope2.10/instance/axiom-wiki/var/LatexWiki/3743324978057018076-25px001.spad using old system compiler. PCDEN abbreviates package PolynomialCommonDenominator ------------------------------------------------------------------------ initializing NRLIB PCDEN for PolynomialCommonDenominator compiling into NRLIB PCDEN importing CommonDenominator(R,Q, List Q) compiling exported commonDenominator : P -> R Time: 0.04 SEC.
compiling exported clearDenominator : P -> P Time: 0 SEC.
compiling exported splitDenominator : P -> Record(num: P,den: R) Time: 0 SEC.
(time taken in buildFunctor: 0)
;;; *** |PolynomialCommonDenominator| REDEFINED
;;; *** |PolynomialCommonDenominator| REDEFINED Time: 0 SEC.
Cumulative Statistics for Constructor PolynomialCommonDenominator Time: 0.04 seconds
finalizing NRLIB PCDEN Processing PolynomialCommonDenominator for Browser database: --->-->PolynomialCommonDenominator(constructor): Not documented!!!! --------(commonDenominator (R P))--------- --------(clearDenominator (P P))--------- --------(splitDenominator ((Record (: num P) (: den R)) P))--------- --->-->PolynomialCommonDenominator(): Missing Description ; compiling file "/var/aw/var/LatexWiki/PCDEN.NRLIB/PCDEN.lsp" (written 22 JUL 2013 03:52:16 PM):
; /var/aw/var/LatexWiki/PCDEN.NRLIB/PCDEN.fasl written ; compilation finished in 0:00:00.027 ------------------------------------------------------------------------ PolynomialCommonDenominator is now explicitly exposed in frame initial PolynomialCommonDenominator will be automatically loaded when needed from /var/aw/var/LatexWiki/PCDEN.NRLIB/PCDEN
Example use:
)set mess type off
dom:=DMP([x,y], FRAC DMP([z], INT));
p:dom:=x*y^3/(z^2-1) + 3*x*y/(z^3-1)
![]() | (1) |
commonDenominator p
![]() | (2) |
clearDenominator p
![]() | (3) |
splitDenominator p
![]() | (4) |