My Project  debian-1:4.1.1-p2+ds-4build4
Macros | Functions
ncSAMult.cc File Reference
#include "misc/auxiliary.h"
#include "nc/nc.h"
#include "nc/sca.h"
#include "misc/options.h"
#include "coeffs/numbers.h"
#include "monomials/ring.h"
#include "monomials/p_polys.h"
#include "nc/ncSAMult.h"

Go to the source code of this file.

Macros

#define MYTEST   0
 
#define OUTPUT   MYTEST
 
#define PLURAL_INTERNAL_DECLARATIONS
 

Functions

BOOLEAN ncInitSpecialPairMultiplication (ring r)
 
CSpecialPairMultiplierAnalyzePair (const ring r, int i, int j)
 

Macro Definition Documentation

◆ MYTEST

#define MYTEST   0

Definition at line 11 of file ncSAMult.cc.

◆ OUTPUT

#define OUTPUT   MYTEST

Definition at line 29 of file ncSAMult.cc.

◆ PLURAL_INTERNAL_DECLARATIONS

#define PLURAL_INTERNAL_DECLARATIONS

Definition at line 34 of file ncSAMult.cc.

Function Documentation

◆ AnalyzePair()

CSpecialPairMultiplier* AnalyzePair ( const ring  r,
int  i,
int  j 
)

Definition at line 777 of file ncSAMult.cc.

778 {
779 #if OUTPUT
780  Print("AnalyzePair(ring, i: %d, j: %d)!", i, j);
781  PrintLn();
782 #endif
783 
785 
786  if( type == _ncSA_notImplemented ) return NULL;
787 
788 
789  // last possibility:
790  return new CExternalSpecialPairMultiplier(r, i, j, type); // For tests!
791 
792 
793  if( type == _ncSA_1xy0x0y0 )
794  return new CCommutativeSpecialPairMultiplier(r, i, j);
795 
796  if( type == _ncSA_Mxy0x0y0 )
797  return new CAntiCommutativeSpecialPairMultiplier(r, i, j);
798 
799  if( type == _ncSA_Qxy0x0y0 )
800  {
801  const number q = p_GetCoeff(GetC(r, i, j), r);
802  return new CQuasiCommutativeSpecialPairMultiplier(r, i, j, q);
803  }
804 
805  const poly d = GetD(r, i, j);
806 
807  assume( d != NULL );
808  assume( pNext(d) == NULL );
809 
810  const number g = p_GetCoeff(d, r);
811 
812  if( type == _ncSA_1xy0x0yG ) // Weyl
813  return new CWeylSpecialPairMultiplier(r, i, j, g);
814 
815  if( type == _ncSA_1xyAx0y0 ) // Shift 1
816  return new CShiftSpecialPairMultiplier(r, i, j, i, g);
817 
818  if( type == _ncSA_1xy0xBy0 ) // Shift 2
819  return new CShiftSpecialPairMultiplier(r, i, j, j, g);
820 
821  if( type == _ncSA_1xy0x0yT2 ) // simple homogenized Weyl algebra
822  return new CHWeylSpecialPairMultiplier(r, i, j, p_IsPurePower(d, r));
823 
824 }
int i
Definition: cfEzgcd.cc:125
g
Definition: cfModGcd.cc:4031
static Enum_ncSAType AnalyzePair(const ring r, int i, int j)
Definition: ncSAFormula.cc:702
#define Print
Definition: emacs.cc:80
int j
Definition: facHensel.cc:105
static poly GetD(const ring r, int i, int j)
Definition: nc.h:386
static poly GetC(const ring r, int i, int j)
Definition: nc.h:375
#define assume(x)
Definition: mod2.h:390
#define pNext(p)
Definition: monomials.h:43
#define p_GetCoeff(p, r)
Definition: monomials.h:57
Enum_ncSAType
Definition: ncSAFormula.h:16
@ _ncSA_1xy0x0yT2
Definition: ncSAFormula.h:24
@ _ncSA_Mxy0x0y0
Definition: ncSAFormula.h:19
@ _ncSA_1xyAx0y0
Definition: ncSAFormula.h:21
@ _ncSA_1xy0x0yG
Definition: ncSAFormula.h:23
@ _ncSA_Qxy0x0y0
Definition: ncSAFormula.h:20
@ _ncSA_notImplemented
Definition: ncSAFormula.h:17
@ _ncSA_1xy0x0y0
Definition: ncSAFormula.h:18
@ _ncSA_1xy0xBy0
Definition: ncSAFormula.h:22
#define NULL
Definition: omList.c:10
int p_IsPurePower(const poly p, const ring r)
return i, if head depends only on var(i)
Definition: p_polys.cc:1218
void PrintLn()
Definition: reporter.cc:310

◆ ncInitSpecialPairMultiplication()

BOOLEAN ncInitSpecialPairMultiplication ( ring  r)

Definition at line 265 of file ncSAMult.cc.

266 {
267 #if OUTPUT
268  PrintS("ncInitSpecialPairMultiplication(ring), ring: \n");
269  rWrite(r, TRUE);
270  PrintLn();
271 #endif
272 
273  if(!rIsPluralRing(r))// ; // :(((
274  return TRUE;
275 
276  if(rIsSCA(r))
277  return TRUE;
278 
279  if( r->GetNC()->GetGlobalMultiplier() != NULL )
280  {
281  WarnS("Already defined!");
282  return TRUE;
283  }
284 
285  r->GetNC()->GetGlobalMultiplier() = new CGlobalMultiplier(r);
286 
287  ggnc_p_ProcsSet(r, r->p_Procs);
288  return FALSE; // ok!
289 }
#define TRUE
Definition: auxiliary.h:98
#define FALSE
Definition: auxiliary.h:94
#define WarnS
Definition: emacs.cc:78
static bool rIsSCA(const ring r)
Definition: nc.h:198
void PrintS(const char *s)
Definition: reporter.cc:284
void rWrite(ring r, BOOLEAN details)
Definition: ring.cc:227
static BOOLEAN rIsPluralRing(const ring r)
we must always have this test!
Definition: ring.h:404