This file is indexed.

/usr/share/axiom-20170501/src/algebra/REAL0Q.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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
)abbrev package REAL0Q RealZeroPackageQ
++ Author: Andy Neff, Barry Trager
++ Date Last Updated: 7 April 1991
++ Description:
++ This package provides functions for finding the real zeros of univariate 
++ polynomials over the rational numbers to arbitrary user-specified 
++ precision. The results are returned as a list of isolating intervals, 
++ expressed as records with "left" and "right" rational number components.
 
RealZeroPackageQ(Pol) : SIG == CODE where
  RN  ==> Fraction Integer
  Pol : UnivariatePolynomialCategory RN

  I   ==> Integer
  SUP ==> SparseUnivariatePolynomial
  Interval ==> Record(left : RN, right : RN)
  isoList ==> List(Interval)
  ApproxInfo ==> Record(approx : RN, exFlag : Boolean)

  SIG ==> with

    -- next two functions find isolating intervals

    realZeros : (Pol) -> isoList
      ++ realZeros(pol) returns a list of isolating intervals for
      ++ all the real zeros of the univariate polynomial pol.

    realZeros : (Pol, Interval) -> isoList
      ++ realZeros(pol, range) returns a list of isolating intervals
      ++ for all the real zeros of the univariate polynomial pol which
      ++ lie in the interval expressed by the record range.

    -- next two functions return intervals smaller then tolerence

    realZeros : (Pol, RN) -> isoList
      ++ realZeros(pol, eps) returns a list of intervals of length less
      ++ than the rational number eps for all the real roots of the
      ++ polynomial pol.

    realZeros : (Pol, Interval, RN) -> isoList
      ++ realZeros(pol, int, eps) returns a list of intervals of length
      ++ less than the rational number eps for all the real roots of the
      ++ polynomial pol which lie in the interval expressed by the
      ++ record int.

    refine : (Pol, Interval, RN) -> Interval
      ++ refine(pol, int, eps) refines the interval int containing
      ++ exactly one root of the univariate polynomial pol to size less
      ++ than the rational number eps.

    refine : (Pol, Interval, Interval) -> Union(Interval,"failed")
      ++ refine(pol, int, range) takes a univariate polynomial pol and
      ++ and isolating interval int which must contain exactly one real
      ++ root of pol, and returns an isolating interval which
      ++ is contained within range, or "failed" if no such isolating interval exists.

  CODE ==> add

      import RealZeroPackage SparseUnivariatePolynomial Integer
 
      convert2PolInt: Pol -> SparseUnivariatePolynomial Integer
 
      convert2PolInt(f : Pol) ==
         pden:I :=lcm([denom c for c in coefficients f])
         map(numer,pden * f)_
          $UnivariatePolynomialCategoryFunctions2(RN,Pol,I,SUP I)
 
      realZeros(f : Pol) == realZeros(convert2PolInt f)

      realZeros(f : Pol, rn : RN) == realZeros(convert2PolInt f, rn)

      realZeros(f : Pol, bounds : Interval) ==
               realZeros(convert2PolInt f, bounds)

      realZeros(f : Pol, bounds : Interval, rn : RN) ==
               realZeros(convert2PolInt f, bounds, rn)

      refine(f : Pol, int : Interval, eps : RN) ==
               refine(convert2PolInt f, int, eps)

      refine(f : Pol, int : Interval, bounds : Interval) ==
               refine(convert2PolInt f, int, bounds)