spielwiese
Last change
on this file since fcb8022 was
093f30e,
checked in by Oliver Wienand <wienand@…>, 16 years ago
|
kstd1.cc, kstd2.cc:
redRing2toM --> redRing
kutil.*:
extendedspoly unit case
p_Mult_q.cc:
assume domain for bucket mult
pp_Mult_mm__T.cc:
free tmp memory
rmodulo2m.cc
rmodulon.cc
git-svn-id: file:///usr/local/Singular/svn/trunk@10573 2c84dea3-7e68-4137-9b89-c4e89433aadc
|
-
Property mode set to
100644
|
File size:
1.6 KB
|
Rev | Line | |
---|
[35aab3] | 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 |
---|
[093f30e] | 9 | * Version: $Id: pp_Mult_mm__T.cc,v 1.7 2008-02-08 10:11:30 wienand Exp $ |
---|
[35aab3] | 10 | *******************************************************************/ |
---|
| 11 | |
---|
| 12 | /*************************************************************** |
---|
| 13 | * |
---|
| 14 | * Returns: p*m |
---|
| 15 | * Const: p, m |
---|
| 16 | * |
---|
| 17 | ***************************************************************/ |
---|
| 18 | LINKAGE 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 | { |
---|
[009d80] | 24 | last = NULL; |
---|
[35aab3] | 25 | return NULL; |
---|
| 26 | } |
---|
| 27 | spolyrec rp; |
---|
[a76e11] | 28 | #ifdef HAVE_ZERODIVISORS |
---|
| 29 | rp.next = NULL; |
---|
| 30 | #endif |
---|
[35aab3] | 31 | poly q = &rp, r; |
---|
| 32 | number ln = pGetCoeff(m); |
---|
| 33 | omBin bin = ri->PolyBin; |
---|
| 34 | DECLARE_LENGTH(const unsigned long length = ri->ExpL_Size); |
---|
| 35 | const unsigned long* m_e = m->exp; |
---|
| 36 | pAssume(!n_IsZero(ln,ri)); |
---|
| 37 | pAssume1(p_GetComp(m, ri) == 0 || p_MaxComp(p, ri) == 0); |
---|
[585bbcb] | 38 | number tmp; |
---|
[35aab3] | 39 | |
---|
| 40 | do |
---|
| 41 | { |
---|
[585bbcb] | 42 | tmp = n_Mult(ln, pGetCoeff(p), ri); |
---|
[009d80] | 43 | #ifdef HAVE_ZERODIVISORS |
---|
[994445] | 44 | if (! n_IsZero(tmp, ri)) |
---|
[511d4f] | 45 | { |
---|
[585bbcb] | 46 | #endif |
---|
| 47 | p_AllocBin( pNext(q), bin, ri); |
---|
| 48 | q = pNext(q); |
---|
| 49 | pSetCoeff0(q, tmp); |
---|
| 50 | p_MemSum(q->exp, p->exp, m_e, length); |
---|
| 51 | p_MemAddAdjust(q, ri); |
---|
[009d80] | 52 | #ifdef HAVE_ZERODIVISORS |
---|
[585bbcb] | 53 | } |
---|
[093f30e] | 54 | else n_Delete(&tmp, ri); |
---|
[585bbcb] | 55 | #endif |
---|
[35aab3] | 56 | p = pNext(p); |
---|
| 57 | } |
---|
| 58 | while (p != NULL); |
---|
| 59 | last = q; |
---|
| 60 | pNext(q) = NULL; |
---|
| 61 | |
---|
| 62 | p_Test(pNext(&rp), ri); |
---|
| 63 | return pNext(&rp); |
---|
| 64 | } |
---|
| 65 | |
---|
| 66 | |
---|
Note: See
TracBrowser
for help on using the repository browser.