This file is indexed.

/usr/share/axiom-20170501/src/algebra/EXPUPXS.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
)abbrev domain EXPUPXS ExponentialOfUnivariatePuiseuxSeries
++ Author: Clifton J. Williamson
++ Date Created: 4 August 1992
++ Date Last Updated: 27 August 1992
++ References:
++ Description:
++ ExponentialOfUnivariatePuiseuxSeries is a domain used to represent
++ essential singularities of functions.  An object in this domain is a
++ function of the form \spad{exp(f(x))}, where \spad{f(x)} is a Puiseux
++ series with no terms of non-negative degree.  Objects are ordered
++ according to order of singularity, with functions which tend more
++ rapidly to zero or infinity considered to be larger.  Thus, if
++ \spad{order(f(x)) < order(g(x))}, the first non-zero term of
++ \spad{f(x)} has lower degree than the first non-zero term of \spad{g(x)},
++ then \spad{exp(f(x)) > exp(g(x))}.  If \spad{order(f(x)) = order(g(x))},
++ then the ordering is essentially random.  This domain is used
++ in computing limits involving functions with essential singularities.

ExponentialOfUnivariatePuiseuxSeries(FE,var,cen) : SIG == CODE where
  FE  : Join(Field,OrderedSet)
  var : Symbol
  cen : FE

  UPXS ==> UnivariatePuiseuxSeries(FE,var,cen)

  SIG ==> Join(UnivariatePuiseuxSeriesCategory(FE),OrderedAbelianMonoid) with

    exponential : UPXS -> %
      ++ exponential(f(x)) returns \spad{exp(f(x))}.
      ++ Note: the function does NOT check that \spad{f(x)} has no
      ++ non-negative terms.

    exponent : % -> UPXS
      ++ exponent(exp(f(x))) returns \spad{f(x)}

    exponentialOrder : % -> Fraction Integer
      ++ exponentialOrder(exp(c * x **(-n) + ...)) returns \spad{-n}.
      ++ exponentialOrder(0) returns \spad{0}.

  CODE ==> UPXS add

    Rep := UPXS

    exponential f == complete f

    exponent f == f pretend UPXS

    exponentialOrder f == order(exponent f,0)

    zero? f == empty? entries complete terms f

    f = g ==
    -- we redefine equality because we know that we are dealing with
    -- a FINITE series, so there is no danger in computing all terms
      (entries complete terms f) = (entries complete terms g)

    f < g ==
      zero? f => not zero? g
      zero? g => false
      (ordf := exponentialOrder f) > (ordg := exponentialOrder g) => true
      ordf < ordg => false
      (fCoef := coefficient(f,ordf)) = (gCoef := coefficient(g,ordg)) =>
        reductum(f) < reductum(g)
      fCoef < gCoef  -- this is "random" if FE is EXPR INT

    coerce(f:%):OutputForm ==
      ("%e" :: OutputForm) ** ((coerce$Rep)(complete f)@OutputForm)