/usr/share/axiom-20170501/src/algebra/DBLRESP.spad is in axiom-source 20170501-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | )abbrev package DBLRESP DoubleResultantPackage
++ Author: Manuel Bronstein
++ Date Created: 1987
++ Date Last Updated: 12 July 1990
++ Description:
++ This package provides functions for computing the residues
++ of a function on an algebraic curve.
DoubleResultantPackage(F, UP, UPUP, R) : SIG == CODE where
F : Field
UP : UnivariatePolynomialCategory F
UPUP: UnivariatePolynomialCategory Fraction UP
R : FunctionFieldCategory(F, UP, UPUP)
RF ==> Fraction UP
UP2 ==> SparseUnivariatePolynomial UP
UP3 ==> SparseUnivariatePolynomial UP2
SIG ==> with
doubleResultant: (R, UP -> UP) -> UP
++ doubleResultant(f, ') returns p(x) whose roots are
++ rational multiples of the residues of f at all its
++ finite poles. Argument ' is the derivation to use.
CODE ==> add
import CommuteUnivariatePolynomialCategory(F, UP, UP2)
import UnivariatePolynomialCommonDenominator(UP, RF, UPUP)
UP22 : UP -> UP2
UP23 : UPUP -> UP3
remove0: UP -> UP -- removes the power of x dividing p
remove0 p ==
primitivePart((p exquo monomial(1, minimumDegree p))::UP)
UP22 p ==
map(x+->x::UP, p)$UnivariatePolynomialCategoryFunctions2(F,UP,UP,UP2)
UP23 p ==
map(x+->UP22(retract(x)@UP),p)_
$UnivariatePolynomialCategoryFunctions2(RF, UPUP, UP2, UP3)
doubleResultant(h, derivation) ==
cd := splitDenominator lift h
d := (cd.den exquo (g := gcd(cd.den, derivation(cd.den))))::UP
r := swap primitivePart swap resultant(UP23(cd.num)
- ((monomial(1, 1)$UP :: UP2) * UP22(g * derivation d))::UP3,
UP23 definingPolynomial())
remove0 resultant(r, UP22 d)
|