source: git/kernel/pp_Mult_mm__T.cc @ 585bbcb

spielwiese
Last change on this file since 585bbcb was 585bbcb, checked in by Oliver Wienand <wienand@…>, 18 years ago
Makefile.in: --> rmodulo2m.[h/cc] in HEADERS / CXXSOURCES eingetragen kspoly.cc: --> ksReducePoly beachtet Nullteiler --> ksRingReducePoly (neu) --> ksCreateSpoly beachtet Nullteiler kstd1.cc: --> use strat->red = redRing2toM if currRing->cring == 1 kstd2.cc: --> kRingFindDivisibleByInT (neu) --> kRingFindDivisibleByInS (neu) --> redRing2toM (neu) kutil.cc: --> kRingFindDivisibleByInS (neu) --> redTailBba beachtet Nullteiler und andere Strategien (zum Teil) kutil.h: --> int redRing2toM (LObject* h,kStrategy strat); (neu) --> Dekl. von kRingFind* und ksRingReducePoly numbers.cc: --> Unterstützung für Z/2^m pDebug.cc: --> p_DebugLmDivisibleByNoComp beachtet coeff für Ringe pInline1.h: --> *LmRing* Teilbarkeit mit Beachtung des Koeff p_Minus_mm_Mult_qq__T.cc: --> Term*Term = 0 möglich polys.cc: --> nGetUnit (neu) --> pNorm beachtet Nullteiler polys.h: --> nGetUnit (neu) polys1.cc: --> pCleardenom: in case of ring, just do a pNorm --> pContent: in case of ring do nothing pp_Mult_mm__T.cc: --> Term*Term = 0 möglich bei KoeffRing ring.cc: --> rSetOption: setze intStrategy ring.h: --> rField_is_Ring_2toM (neu) --> alle anderen Fkt. angepasst ringgb.cc, ringgb.h: test container in Zshg. mit extra.cc structs.h: --> ring->cring property (neu) cring = 0 bei Körpern, cring = 1 bei Z/2^m git-svn-id: file:///usr/local/Singular/svn/trunk@8813 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 1.5 KB
Line 
1/****************************************
2*  Computer Algebra System SINGULAR     *
3****************************************/
4/***************************************************************
5 *  File:    pp_Mult_mm__Template.cc
6 *  Purpose: template for p_Mult_n
7 *  Author:  obachman (Olaf Bachmann)
8 *  Created: 8/00
9 *  Version: $Id: pp_Mult_mm__T.cc,v 1.2 2005-11-27 15:28:46 wienand Exp $
10 *******************************************************************/
11
12/***************************************************************
13 *
14 *   Returns:  p*m
15 *   Const:    p, m
16 *
17 ***************************************************************/
18LINKAGE poly pp_Mult_mm(poly p, const poly m, const ring ri, poly &last)
19{
20  p_Test(p, ri);
21  p_LmTest(m, ri);
22  if (p == NULL)
23  {
24    last = NULL;
25    return NULL;
26  }
27  spolyrec rp;
28  poly q = &rp, r;
29  number ln = pGetCoeff(m);
30  omBin bin = ri->PolyBin;
31  DECLARE_LENGTH(const unsigned long length = ri->ExpL_Size);
32  const unsigned long* m_e = m->exp;
33  pAssume(!n_IsZero(ln,ri));
34  pAssume1(p_GetComp(m, ri) == 0 || p_MaxComp(p, ri) == 0);
35  number tmp;
36
37  do
38  {
39    tmp = n_Mult(ln, pGetCoeff(p), ri);
40#ifdef HAVE_RING2TOM
41    if (ri->cring==0 || (ri->cring ==1 && (long) tmp != 0)){
42#endif
43      p_AllocBin( pNext(q), bin, ri);
44      q = pNext(q);
45      pSetCoeff0(q, tmp);
46      p_MemSum(q->exp, p->exp, m_e, length);
47      p_MemAddAdjust(q, ri);
48#ifdef HAVE_RING2TOM
49    }
50#endif
51    p = pNext(p);
52  }
53  while (p != NULL);
54  last = q;
55  pNext(q) = NULL;
56
57  p_Test(pNext(&rp), ri);
58  return pNext(&rp);
59}
60
61
Note: See TracBrowser for help on using the repository browser.