This file is indexed.

/usr/share/axiom-20170501/src/algebra/MCDEN.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
)abbrev package MCDEN MatrixCommonDenominator
++ Author: Manuel Bronstein
++ Date Created: 2 May 1988
++ Date Last Updated: 20 Jul 1990
++ Description: 
++ MatrixCommonDenominator provides functions to
++ compute the common denominator of a matrix of elements of the
++ quotient field of an integral domain.

MatrixCommonDenominator(R, Q) : SIG == CODE where
  R: IntegralDomain
  Q: QuotientFieldCategory R
 
  VR ==> Vector R
  VQ ==> Vector Q
 
  SIG ==> with

    commonDenominator : Matrix Q -> R
      ++ commonDenominator(q) returns a common denominator d for
      ++ the elements of q.

    clearDenominator : Matrix Q -> Matrix R
      ++ clearDenominator(q) returns p such that \spad{q = p/d} where d is
      ++ a common denominator for the elements of q.

    splitDenominator : Matrix Q -> Record(num: Matrix R, den: R)
      ++ splitDenominator(q) returns \spad{[p, d]} such that \spad{q = p/d} and d
      ++ is a common denominator for the elements of q.
 
  CODE ==> add

    import ListFunctions2(Q, R)
    import MatrixCategoryFunctions2(Q,VQ,VQ,Matrix Q,R,VR,VR,Matrix R)
 
    clearDenominator m ==
      d := commonDenominator m
      map(x +-> numer(d*x), m)
 
    splitDenominator m ==
      d := commonDenominator m
      [map(x +-> numer(d*x), m), d]
 
    if R has GcdDomain then

      commonDenominator m == lcm map(denom, parts m)

    else

      commonDenominator m == reduce("*",map(denom, parts m),1)$List(R)