This file is indexed.

/usr/include/singular/singular/polys/ext_fields/algext.h is in libsingular4-dev-common 1:4.1.0-p3+ds-2build1.

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
#ifndef ALGEXT_H
#define ALGEXT_H
/****************************************
*  Computer Algebra System SINGULAR     *
****************************************/
/*
* ABSTRACT: numbers in an algebraic extension field K[a] / < f(a) >
*           Assuming that we have a coeffs object cf, then these numbers
*           are polynomials in the polynomial ring K[a] represented by
*           cf->extRing.
*           IMPORTANT ASSUMPTIONS:
*           1.) So far we assume that cf->extRing is a valid polynomial
*               ring in exactly one variable, i.e., K[a], where K is allowed
*               to be any field (representable in SINGULAR and which may
*               itself be some extension field, thus allowing for extension
*               towers).
*           2.) Moreover, this implementation assumes that
*               cf->extRing->qideal is not NULL but an ideal with at
*               least one non-zero generator which may be accessed by
*               cf->extRing->qideal->m[0] and which represents the minimal
*               polynomial f(a) of the extension variable 'a' in K[a].
*           3.) As soon as an std method for polynomial rings becomes
*               availabe, all reduction steps modulo f(a) should be replaced
*               by a call to std. Moreover, in this situation one can finally
*               move from K[a] / < f(a) > to
*                  K[a_1, ..., a_s] / I, with I some zero-dimensional ideal
*                                        in K[a_1, ..., a_s] given by a lex
*                                        Gröbner basis.
*               The code in algext.h and algext.cc is then capable of
*               computing in K[a_1, ..., a_s] / I.
*/

#include <coeffs/coeffs.h>

// Forward declarations
struct ip_sring; typedef struct ip_sring * ring;
struct sip_sideal; typedef struct sip_sideal * ideal;

/// struct for passing initialization parameters to naInitChar
typedef struct { ring r; /*ideal i;*/ } AlgExtInfo; // `r.qideal` is supposed to be `i`

/// Get a mapping function from src into the domain of this type (n_algExt)
nMapFunc naSetMap(const coeffs src, const coeffs dst);

/// Initialize the coeffs object
BOOLEAN  naInitChar(coeffs cf, void* infoStruct);
BOOLEAN n2pInitChar(coeffs cf, void * infoStruct);

/// if m == var(i)/1 => return i,
int naIsParam(number, const coeffs);

struct  spolyrec;
typedef struct spolyrec    polyrec;
typedef polyrec *          poly;

/// assumes that p and q are univariate polynomials in r,
///   mentioning the same variable;
///   assumes a global monomial ordering in r;
///   assumes that not both p and q are NULL;
///   returns the gcd of p and q;
///   moreover, afterwards pFactor and qFactor contain appropriate
///   factors such that gcd(p, q) = p * pFactor + q * qFactor;
///   leaves p and q unmodified
poly      p_ExtGcd(poly p, poly &pFactor, poly q, poly &qFactor, ring r);

char* naCoeffString(const coeffs r); // will be reused in tranext.cc...
char* naCoeffName(const coeffs r);
#endif
/* ALGEXT_H */