/usr/include/singular/singular/polys/nc/ncSAFormula.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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | #ifndef GRING_SA_MULT_FORMULA_H
#define GRING_SA_MULT_FORMULA_H
/*****************************************
* Computer Algebra System SINGULAR *
*****************************************/
#ifdef HAVE_PLURAL
// #include <ncSAFormula.h> // for CFormulaPowerMultiplier and enum Enum_ncSAType
// //////////////////////////////////////////////////////////////////////// //
#include <polys/monomials/ring.h>
#include <polys/nc/nc.h>
bool ncInitSpecialPowersMultiplication(ring r);
enum Enum_ncSAType
{
_ncSA_notImplemented = -1,
_ncSA_1xy0x0y0 = 0x00, // commutative
_ncSA_Mxy0x0y0 = 0x01, // anti-commutative
_ncSA_Qxy0x0y0 = 0x02, // quasi-commutative
_ncSA_1xyAx0y0 = 0x10, // shift 1
_ncSA_1xy0xBy0 = 0x20, // shift 2
_ncSA_1xy0x0yG = 0x30, // Weyl
_ncSA_1xy0x0yT2 = 0x100 // homogenized Weyl algebra?
};
class CFormulaPowerMultiplier
{
private:
Enum_ncSAType* m_SAPairTypes; // upper triangular submatrix of pairs 1 <= i < j <= N of a N x N matrix.
const int m_NVars;
const ring m_BaseRing;
public:
inline int NVars() const { return m_NVars; }
inline ring GetBasering() const { return m_BaseRing; }
CFormulaPowerMultiplier(ring r);
virtual ~CFormulaPowerMultiplier();
inline Enum_ncSAType GetPair(int i, int j) const
{
assume( m_SAPairTypes != NULL );
assume( i > 0 );
assume( i < j );
assume( j <= NVars() );
return m_SAPairTypes[( (NVars() * ((i)-1) - ((i) * ((i)-1))/2 + (j)-1) - (i) )];
}
inline Enum_ncSAType& GetPair(int i, int j)
{
assume( m_SAPairTypes != NULL );
assume( i > 0 );
assume( i < j );
assume( j <= NVars() );
return m_SAPairTypes[( (NVars() * ((i)-1) - ((i) * ((i)-1))/2 + (j)-1) - (i) )];
}
// Lowest level routines!
static Enum_ncSAType AnalyzePair(const ring r, int i, int j);
static poly Multiply( Enum_ncSAType type, const int i, const int j, const int n, const int m, const ring r);
static poly ncSA_1xy0x0y0(const int i, const int j, const int n, const int m, const ring r);
static poly ncSA_Mxy0x0y0(const int i, const int j, const int n, const int m, const ring r);
static poly ncSA_Qxy0x0y0(const int i, const int j, const int n, const int m, const number m_q, const ring r);
static poly ncSA_1xy0x0yG(const int i, const int j, const int n, const int m, const number m_g, const ring r);
static poly ncSA_1xy0x0yT2(const int i, const int j, const int n, const int m, const int k, const ring r);
static poly ncSA_1xyAx0y0(const int i, const int j, const int n, const int m, const number m_shiftCoef, const ring r);
static poly ncSA_1xy0xBy0(const int i, const int j, const int n, const int m, const number m_shiftCoef, const ring r);
// Higher level abstraction for keeping track of all the pair types!
poly Multiply( int i, int j, const int n, const int m);
private: // no copy constuctors!
CFormulaPowerMultiplier();
CFormulaPowerMultiplier(const CFormulaPowerMultiplier&);
CFormulaPowerMultiplier& operator=(const CFormulaPowerMultiplier&);
};
static inline CFormulaPowerMultiplier* GetFormulaPowerMultiplier(const ring r)
{
return r->GetNC()->GetFormulaPowerMultiplier();
}
#endif // HAVE_PLURAL :(
#endif //
|