/usr/share/axiom-20170501/src/algebra/INPSIGN.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 | )abbrev package INPSIGN InnerPolySign
++ Author: Manuel Bronstein
++ Date Created: 23 Aug 1989
++ Date Last Updated: 19 Feb 1990
++ Description:
++ Find the sign of a polynomial around a point or infinity.
InnerPolySign(R, UP) : SIG == CODE where
R : Ring
UP : UnivariatePolynomialCategory R
U ==> Union(Integer, "failed")
SIG ==> with
signAround : (UP, Integer, R -> U) -> U
++ signAround(u,i,f) \undocumented
signAround : (UP, R, Integer, R -> U) -> U
++ signAround(u,r,i,f) \undocumented
signAround : (UP, R, R -> U) -> U
++ signAround(u,r,f) \undocumented
CODE ==> add
signAround(p:UP, x:R, rsign:R -> U) ==
(ur := signAround(p, x, 1, rsign)) case "failed" => "failed"
(ul := signAround(p, x, -1, rsign)) case "failed" => "failed"
(ur::Integer) = (ul::Integer) => ur
"failed"
signAround(p, x, dir, rsign) ==
zero? p => 0
zero?(r := p x) =>
(u := signAround(differentiate p, x, dir, rsign)) case "failed"
=> "failed"
dir * u::Integer
rsign r
signAround(p:UP, dir:Integer, rsign:R -> U) ==
zero? p => 0
(u := rsign leadingCoefficient p) case "failed" => "failed"
(dir > 0) or (even? degree p) => u::Integer
- (u::Integer)
|