Changeset 93af5b in git


Ignore:
Timestamp:
Sep 27, 1999, 4:33:28 PM (25 years ago)
Author:
Olaf Bachmann <obachman@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
360948186b228cfd2f4f810105615449e16ece57
Parents:
59dff80d507cfb0f41b20d3321cf98898ad960e0
Message:
wal merge


git-svn-id: file:///usr/local/Singular/svn/trunk@3676 2c84dea3-7e68-4137-9b89-c4e89433aadc
Location:
Singular
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Singular/kbPolyProcs.cc

    r59dff8 r93af5b  
    1111#include "modulop.h"
    1212#include "spolys0.h"
    13 
    14 /***************************************************************
    15  *
    16  * Reduces p1 with p2
    17  * Assumes p1 != NULL, p2 != NULL, Lm(p1) divides Lm(p2)
    18  *         pLength(p2) == l2
     13#include "polys-comp.h"
     14
     15#define HAVE_COMP_MACROS
     16
     17/***************************************************************
     18 *
     19 * Reduces PR with PW
     20 * Assumes PR != NULL, PW != NULL, Lm(PR) divides Lm(PW)
    1921 *
    2022 ***************************************************************/
    21 void kbReducePoly(poly *p1, int *l1,
    22                   poly p2, int l2,
    23                   poly spNoether,
    24                   kbPolyProcs_pt pprocs,
    25                   memHeap heap)
     23void kbReducePoly(LObject* PR,
     24                  TObject* PW,
     25                  poly spNoether)
    2626{
    27   assume(p2 != NULL &&
    28          pDivisibleBy(p2,  *p1));
    29 #ifdef HAVE_LENGTH
    30   assume(pLength(p2) == (int) l2);
    31   assume(pLength(p1) == (int) l1);
    32 #endif 
    33 
    34   poly a2 = pNext(p2), lm = *p1;
    35   *p1 = pNext(*p1);
    36   *l1 = *l1 -1;
     27  assume(kTest_L(PR));
     28  assume(kTest_T(PW));
     29
     30  poly p1 = PR->p;
     31  poly p2 = PW->p;
     32  assume(p2 != NULL && p1 != NULL && pDivisibleBy(p2,  p1));
     33
     34  poly a2 = pNext(p2), lm = p1;
     35  p1 = pNext(p1);
     36  PR->p = p1;
    3737  BOOLEAN reset_vec=FALSE;
    3838 
    3939  if (a2==NULL)
    4040  {
    41     kb_pDelete1(lm, heap);
     41    pDelete1(&lm);
    4242    return;
    4343  }
     
    4848    int ct = spCheckCoeff(&an, &bn);
    4949    pSetCoeff(lm, bn);
    50     if ((ct == 0) || (ct == 2)) kb_n_Mult_p_General(an, *p1);
     50    if ((ct == 0) || (ct == 2)) kb_n_Mult_p(an, PR->p);
    5151    nDelete(&an);
    5252  }
    53 
    5453 
    5554  if (pGetComp(p2) != pGetComp(lm))
     
    6160  pMonSubFast(lm, p2);
    6261  assume(pGetComp(lm) == 0);
    63 
    64   kb_p_Minus_m_Mult_q_General(p1, l1, lm, a2, l2-1, spNoether);
    65  
    66   kb_pDelete1(lm, heap);
     62  lm->next = NULL;
     63  pTest(lm);
     64  int l1, l2;
     65  kb_p_Minus_m_Mult_q(&(PR->p), &l1,
     66                      lm,
     67                      a2, l2, spNoether);
     68 
     69  pDelete1(&lm);
    6770  if (reset_vec) spModuleToPoly(p2);
    6871}
     
    7477 *
    7578 ***************************************************************/
    76 void kbCreateSpoly(poly *sp, int *lsp,
    77                    poly p1, int l1,
    78                    poly p2, int l2,
    79                    poly spNoether,
    80                    kbPolyProcs_pt pprocs,
    81                    memHeap heap)
     79void kbCreateSpoly(LObject* Pair,
     80                   poly spNoether)
    8281{
    83 #ifdef HAVE_LENGTH
    84   assume(p1 != NULL && (l1 <= 0 || pLength(p1) == l1));
    85   assume(p2 != NULL && (l2 <= 0 || pLength(p2) == l2));
    86 #endif
    87 #ifdef KB_USE_HEAPS
    88   assume(heap != NULL);
    89 #else
    90   assume(heap == NULL);
    91 #endif 
    92  
     82  assume(kTest_L(Pair));
     83  poly p1 = Pair->p1;
     84  poly p2 = Pair->p2;
     85
     86  assume(p1 != NULL);
     87  assume(p2 != NULL);
     88
    9389  poly a1 = pNext(p1), a2 = pNext(p2);
    9490  number lc1 = pGetCoeff(p1), lc2 = pGetCoeff(p2);
     
    9692  int co=0, ct = spCheckCoeff(&lc1, &lc2);
    9793  Exponent_t x;
     94  int l1;
    9895
    9996  if (pGetComp(p1)!=pGetComp(p2))
     
    135132
    136133  // get m2 * a2
    137   a2 = kb_p_Mult_m_General(a2, m2);
    138 #ifdef HAVE_LENGTH
    139   if (l1 <= 0) l1 = pLength(a1); else l1--;
    140   if (l2 <= 0) l2 = pLength(a2); else l2--;
    141 #endif
     134  Pair->p = kb_p_Mult_m(a2, m2);
     135
     136  int l2;
    142137  // and, finally, the spoly
    143   kb_p_Minus_m_Mult_q_General(&a2, &l2, m1, a1, l1);
     138  kb_p_Minus_m_Mult_q(&(Pair->p), &l2, m1, a1, l1);
    144139 
    145140  // Clean-up time
     
    158153    }
    159154  }
    160   *sp = a2;
    161   *lsp = l2;
    162   pTest(*sp);
    163155}
    164156
     
    224216
    225217  Top:     // compare a1 and a2 w.r.t. monomial ordering
    226 //  register long d;
    227   long d;
     218  register long d;
    228219#ifdef HAVE_COMP_MACROS
    229   _pMonComp(a1, a2, d, goto NotEqual, goto Equal);
     220  _pMonComp(a1, a2, d, goto NotEqual , goto Equal);
    230221#else
    231222  if ((d = pComp0(a1, a2))) goto NotEqual; else goto Equal;
     
    294285
    295286  Finish:
    296 #ifdef HAVE_LENGTH 
     287#ifdef HAVE_LENGTH
    297288  assume(pLength(pNext(&rp)) == (int) l);
    298289#endif
     
    365356                                  poly q, int lq,
    366357                                  poly spNoether,
    367                                   kb_p_Mult_m_Proc kb_p_Mult_m,
    368358                                  memHeap heap)
    369359{
     
    376366  assume(pLength(q) == lq);
    377367  assume(pLength(*pp) == *lpp);
    378 #endif
    379   assume(pGetComp(m) == 0);
    380368  pTest(*pp);
    381369  pTest(q);
     370#endif
     371  assume(pGetComp(m) == 0);
    382372  // we are done if q == NULL
    383373  if (q == NULL || m == NULL) return;
     
    474464   {
    475465     pSetCoeff0(m, tneg);
    476      pNext(a) = kb_p_Mult_m_General(q, m, spNoether, heap);
     466     pNext(a) = kb_p_Mult_m(q, m, spNoether, heap);
    477467     pSetCoeff0(m, tm);
    478468   }
     
    484474   *lpp = lp;
    485475   pNext(m) = NULL;
    486 
    487 #ifdef HAVE_LENGTH   
     476#ifdef HAVE_LENGTH
    488477   assume(pLength(*pp) == *lpp);
    489 #endif
    490478   pTest(*pp);
     479#endif
    491480}
    492481
     
    531520
    532521  // set characterisic
    533   if (rField_is_Zp(r)) ch = chMODP;
     522  if (r->ch > 1) ch = chMODP;
    534523 
    535524  // set Ordering Type
  • Singular/kbPolyProcs.h

    r59dff8 r93af5b  
    44*  Computer Algebra System SINGULAR     *
    55****************************************/
    6 /* $Id: kbPolyProcs.h,v 1.2 1999-05-26 16:20:16 obachman Exp $ */
     6/* $Id: kbPolyProcs.h,v 1.3 1999-09-27 14:33:26 obachman Exp $ */
    77#include "mod2.h"
    88#include "mmheap.h"
    99#include "ring.h"
     10#include "kutil.h"
    1011
    1112
     
    3738                                         poly q, int lq,
    3839                                         poly spNoether,
    39                                          kb_p_Mult_m_Proc kb_p_Mult_m,
    4040                                         memHeap heap = NULL);
    4141extern void kb_p_Minus_m_Mult_q_General(poly *p, int *lp,
     
    4343                                        poly q, int lq,
    4444                                        poly spNoether,
    45                                         kb_p_Mult_m_Proc kb_p_Mult_m,
    4645                                        memHeap heap = NULL);
    4746
     
    6564                           BOOLEAN homog = FALSE);
    6665
     66
     67#define kb_n_Mult_p kb_n_Mult_p_General
     68#define kb_p_Add_q  kb_p_Add_q_General
     69#define kb_p_Minus_m_Mult_q  kb_p_Minus_m_Mult_q_General
     70#define kb_p_Mult_m kb_p_Mult_m_General
     71
     72///////////////////////////////////////////////////////////////////////
     73///
     74/// General Procedures for poly arithemetic which always work
     75///
     76void kb_n_Mult_p_General(number n, poly p);
     77void kb_p_Add_q_General(poly *p, int *lp,
     78                        poly *q, int *lq,
     79                        memHeap heap = NULL);
     80poly  kb_p_Mult_m_General(poly p,
     81                          poly m,
     82                          poly spNoether = NULL,
     83                          memHeap heap = NULL);
     84void kb_p_Minus_m_Mult_q_General (poly *pp, int *lpp,
     85                                  poly m,
     86                                  poly q, int lq,
     87                                  poly spNoether = NULL,
     88                                  memHeap heap = NULL);
     89
     90
     91void kbCreateSpoly(LObject* P,
     92                   poly spNoether = NULL);
     93
     94
     95void kbReducePoly(LObject* RP, // Poly to be reduced
     96                  TObject* WP, // Poly with which is reduced
     97                  poly spNoether = NULL);
     98
     99
    67100#endif /* KBPOLYPROCS_H */
Note: See TracChangeset for help on using the changeset viewer.