/usr/share/axiom-20170501/src/algebra/REALSOLV.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 52 53 54 55 56 57 58 59 60 61 | )abbrev package REALSOLV RealSolvePackage
++ Description:
++ This package provides numerical solutions of systems of
++ polynomial equations for use in ACPLOT
RealSolvePackage() : SIG == CODE where
I ==> Integer
IE ==> IndexedExponents Symbol
L ==> List
NF ==> Float
P ==> Polynomial
RN ==> Fraction Integer
SE ==> Symbol
RFI ==> Fraction Polynomial Integer
LIFT ==> PolynomialCategoryLifting(IE,SE,RN,P RN, RFI)
SOLV ==> FloatingRealPackage Float
SIG ==> with
solve : (P RN,NF) -> L NF
++ solve(p,eps) finds the real zeroes of a
++ univariate rational polynomial p with precision eps.
++
++X p := 4*x^3 - 3*x^2 + 2*x - 4
++X solve(p::POLY(FRAC(INT)),0.01)$REALSOLV
solve : (P I,NF) -> L NF
++ solve(p,eps) finds the real zeroes of a univariate
++ integer polynomial p with precision eps.
++
++X p := 4*x^3 - 3*x^2 + 2*x - 4
++X solve(p,0.01)$REALSOLV
realSolve : (L P I,L SE,NF) -> L L NF
++ realSolve(lp,lv,eps) = compute the list of the real
++ solutions of the list lp of polynomials with integer
++ coefficients with respect to the variables in lv,
++ with precision eps.
++
++X p1 := x**2*y*z + y*z
++X p2 := x**2*y**2*z + x + z
++X p3 := x**2*y**2*z**2 + z + 1
++X lp := [p1, p2, p3]
++X realSolve(lp,[x,y,z],0.01)
CODE ==> add
prn2rfi: P RN -> RFI
prn2rfi p ==
map(x+->x::RFI, x+->(numer(x)::RFI)/(denom(x)::RFI), p)$LIFT
pi2rfi: P I -> RFI
pi2rfi p == p :: RFI
solve(p:P RN,eps:NF) == realRoots(prn2rfi p, eps)$SOLV
solve(p:P I,eps:NF) == realRoots(p::RFI, eps)$SOLV
realSolve(lp,lv,eps) ==
realRoots(map(pi2rfi, lp)$ListFunctions2(P I,RFI),lv,eps)$SOLV
|