My Project
Loading...
Searching...
No Matches
libpolys
polys
nc
ncSAFormula.h
Go to the documentation of this file.
1
#ifndef GRING_SA_MULT_FORMULA_H
2
#define GRING_SA_MULT_FORMULA_H
3
/*****************************************
4
* Computer Algebra System SINGULAR *
5
*****************************************/
6
#ifdef HAVE_PLURAL
7
8
// //////////////////////////////////////////////////////////////////////// //
9
10
#include "
polys/monomials/ring.h
"
11
#include "
polys/nc/nc.h
"
12
13
bool
ncInitSpecialPowersMultiplication
(
ring
r);
14
15
enum
Enum_ncSAType
16
{
17
_ncSA_notImplemented
= -1,
18
_ncSA_1xy0x0y0
= 0x00,
// commutative
19
_ncSA_Mxy0x0y0
= 0x01,
// anti-commutative
20
_ncSA_Qxy0x0y0
= 0x02,
// quasi-commutative
21
_ncSA_1xyAx0y0
= 0x10,
// shift 1
22
_ncSA_1xy0xBy0
= 0x20,
// shift 2
23
_ncSA_1xy0x0yG
= 0x30,
// Weyl
24
_ncSA_1xy0x0yT2
= 0x100
// homogenized Weyl algebra?
25
};
26
27
class
CFormulaPowerMultiplier
28
{
29
private
:
30
Enum_ncSAType
*
m_SAPairTypes
;
// upper triangular submatrix of pairs 1 <= i < j <= N of a N x N matrix.
31
32
const
int
m_NVars
;
33
const
ring
m_BaseRing
;
34
35
36
37
public
:
38
inline
int
NVars
()
const
{
return
m_NVars
; }
39
inline
ring
GetBasering
()
const
{
return
m_BaseRing
; }
40
41
CFormulaPowerMultiplier
(
ring
r);
42
virtual
~CFormulaPowerMultiplier
();
43
44
inline
Enum_ncSAType
GetPair
(
int
i
,
int
j
)
const
45
{
46
assume
(
m_SAPairTypes
!=
NULL
);
47
assume
(
i
> 0 );
48
assume
(
i
<
j
);
49
assume
(
j
<=
NVars
() );
50
51
return
m_SAPairTypes
[( (
NVars
() * ((
i
)-1) - ((
i
) * ((
i
)-1))/2 + (
j
)-1) - (
i
) )];
52
}
53
54
inline
Enum_ncSAType
&
GetPair
(
int
i
,
int
j
)
55
{
56
assume
(
m_SAPairTypes
!=
NULL
);
57
assume
(
i
> 0 );
58
assume
(
i
<
j
);
59
assume
(
j
<=
NVars
() );
60
61
return
m_SAPairTypes
[( (
NVars
() * ((
i
)-1) - ((
i
) * ((
i
)-1))/2 + (
j
)-1) - (
i
) )];
62
}
63
64
// Lowest level routines!
65
static
Enum_ncSAType
AnalyzePair
(
const
ring
r,
int
i
,
int
j
);
66
static
poly
Multiply
(
Enum_ncSAType
type,
const
int
i
,
const
int
j
,
const
int
n,
const
int
m
,
const
ring
r);
67
68
static
poly
ncSA_1xy0x0y0
(
const
int
i
,
const
int
j
,
const
int
n,
const
int
m
,
const
ring
r);
69
static
poly
ncSA_Mxy0x0y0
(
const
int
i
,
const
int
j
,
const
int
n,
const
int
m
,
const
ring
r);
70
71
static
poly
ncSA_Qxy0x0y0
(
const
int
i
,
const
int
j
,
const
int
n,
const
int
m
,
const
number
m_q,
const
ring
r);
72
73
static
poly
ncSA_1xy0x0yG
(
const
int
i
,
const
int
j
,
const
int
n,
const
int
m
,
const
number
m_g,
const
ring
r);
74
static
poly
ncSA_1xy0x0yT2
(
const
int
i
,
const
int
j
,
const
int
n,
const
int
m
,
const
int
k
,
const
ring
r);
75
76
static
poly
ncSA_1xyAx0y0
(
const
int
i
,
const
int
j
,
const
int
n,
const
int
m
,
const
number
m_shiftCoef,
const
ring
r);
77
static
poly
ncSA_1xy0xBy0
(
const
int
i
,
const
int
j
,
const
int
n,
const
int
m
,
const
number
m_shiftCoef,
const
ring
r);
78
79
80
81
// Higher level abstraction for keeping track of all the pair types!
82
poly
Multiply
(
int
i
,
int
j
,
const
int
n,
const
int
m
);
83
84
private
:
// no copy constructors!
85
CFormulaPowerMultiplier
();
86
CFormulaPowerMultiplier
(
const
CFormulaPowerMultiplier
&);
87
CFormulaPowerMultiplier
&
operator=
(
const
CFormulaPowerMultiplier
&);
88
89
90
};
91
92
93
static
inline
CFormulaPowerMultiplier
*
GetFormulaPowerMultiplier
(
const
ring
r)
94
{
95
return
r->GetNC()->GetFormulaPowerMultiplier();
96
}
97
98
99
100
101
#endif
// HAVE_PLURAL :(
102
#endif
//
m
int m
Definition
cfEzgcd.cc:128
i
int i
Definition
cfEzgcd.cc:132
k
int k
Definition
cfEzgcd.cc:99
CFormulaPowerMultiplier
Definition
ncSAFormula.h:28
CFormulaPowerMultiplier::NVars
int NVars() const
Definition
ncSAFormula.h:38
CFormulaPowerMultiplier::ncSA_1xy0x0yT2
static poly ncSA_1xy0x0yT2(const int i, const int j, const int n, const int m, const int k, const ring r)
Definition
ncSAFormula.cc:735
CFormulaPowerMultiplier::m_BaseRing
const ring m_BaseRing
Definition
ncSAFormula.h:33
CFormulaPowerMultiplier::~CFormulaPowerMultiplier
virtual ~CFormulaPowerMultiplier()
Definition
ncSAFormula.cc:233
CFormulaPowerMultiplier::m_NVars
const int m_NVars
Definition
ncSAFormula.h:32
CFormulaPowerMultiplier::ncSA_1xyAx0y0
static poly ncSA_1xyAx0y0(const int i, const int j, const int n, const int m, const number m_shiftCoef, const ring r)
Definition
ncSAFormula.cc:740
CFormulaPowerMultiplier::AnalyzePair
static Enum_ncSAType AnalyzePair(const ring r, int i, int j)
Definition
ncSAFormula.cc:702
CFormulaPowerMultiplier::GetBasering
ring GetBasering() const
Definition
ncSAFormula.h:39
CFormulaPowerMultiplier::ncSA_1xy0xBy0
static poly ncSA_1xy0xBy0(const int i, const int j, const int n, const int m, const number m_shiftCoef, const ring r)
Definition
ncSAFormula.cc:745
CFormulaPowerMultiplier::ncSA_Qxy0x0y0
static poly ncSA_Qxy0x0y0(const int i, const int j, const int n, const int m, const number m_q, const ring r)
Definition
ncSAFormula.cc:725
CFormulaPowerMultiplier::ncSA_1xy0x0yG
static poly ncSA_1xy0x0yG(const int i, const int j, const int n, const int m, const number m_g, const ring r)
Definition
ncSAFormula.cc:730
CFormulaPowerMultiplier::m_SAPairTypes
Enum_ncSAType * m_SAPairTypes
Definition
ncSAFormula.h:30
CFormulaPowerMultiplier::ncSA_1xy0x0y0
static poly ncSA_1xy0x0y0(const int i, const int j, const int n, const int m, const ring r)
Definition
ncSAFormula.cc:715
CFormulaPowerMultiplier::operator=
CFormulaPowerMultiplier & operator=(const CFormulaPowerMultiplier &)
CFormulaPowerMultiplier::CFormulaPowerMultiplier
CFormulaPowerMultiplier()
CFormulaPowerMultiplier::GetPair
Enum_ncSAType & GetPair(int i, int j)
Definition
ncSAFormula.h:54
CFormulaPowerMultiplier::ncSA_Mxy0x0y0
static poly ncSA_Mxy0x0y0(const int i, const int j, const int n, const int m, const ring r)
Definition
ncSAFormula.cc:720
CFormulaPowerMultiplier::GetPair
Enum_ncSAType GetPair(int i, int j) const
Definition
ncSAFormula.h:44
CFormulaPowerMultiplier::CFormulaPowerMultiplier
CFormulaPowerMultiplier(const CFormulaPowerMultiplier &)
CFormulaPowerMultiplier::Multiply
static poly Multiply(Enum_ncSAType type, const int i, const int j, const int n, const int m, const ring r)
Definition
ncSAFormula.cc:696
List
Definition
ftmpl_list.h:52
j
int j
Definition
facHensel.cc:110
nc.h
assume
#define assume(x)
Definition
mod2.h:389
GetFormulaPowerMultiplier
static CFormulaPowerMultiplier * GetFormulaPowerMultiplier(const ring r)
Definition
ncSAFormula.h:93
ncInitSpecialPowersMultiplication
bool ncInitSpecialPowersMultiplication(ring r)
Definition
ncSAFormula.cc:50
Enum_ncSAType
Enum_ncSAType
Definition
ncSAFormula.h:16
_ncSA_1xy0x0yT2
@ _ncSA_1xy0x0yT2
Definition
ncSAFormula.h:24
_ncSA_Mxy0x0y0
@ _ncSA_Mxy0x0y0
Definition
ncSAFormula.h:19
_ncSA_1xyAx0y0
@ _ncSA_1xyAx0y0
Definition
ncSAFormula.h:21
_ncSA_1xy0x0yG
@ _ncSA_1xy0x0yG
Definition
ncSAFormula.h:23
_ncSA_Qxy0x0y0
@ _ncSA_Qxy0x0y0
Definition
ncSAFormula.h:20
_ncSA_notImplemented
@ _ncSA_notImplemented
Definition
ncSAFormula.h:17
_ncSA_1xy0x0y0
@ _ncSA_1xy0x0y0
Definition
ncSAFormula.h:18
_ncSA_1xy0xBy0
@ _ncSA_1xy0xBy0
Definition
ncSAFormula.h:22
NULL
#define NULL
Definition
omList.c:12
ring.h
Generated on Sun Sep 8 2024 12:32:53 for My Project by
doxygen 1.9.8
for
Singular