Changeset 1821d6 in git for kernel/tgb.cc


Ignore:
Timestamp:
May 31, 2005, 3:24:50 PM (19 years ago)
Author:
Michael Brickenstein <bricken@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
e1b6944781656194be38a6eb2169d671cce4b260
Parents:
633c14f4823fb23f2af377f34acabec7a63caa49
Message:
*bricken: coef buckets now really supported, char 0 finer


git-svn-id: file:///usr/local/Singular/svn/trunk@8323 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/tgb.cc

    r633c14 r1821d6  
    55*  Computer Algebra System SINGULAR     *
    66****************************************/
    7 /* $Id: tgb.cc,v 1.29 2005-05-30 11:44:07 bricken Exp $ */
     7/* $Id: tgb.cc,v 1.30 2005-05-31 13:24:50 bricken Exp $ */
    88/*
    99* ABSTRACT: slimgb and F4 implementation
     
    1414#include "tgbgauss.h"
    1515#include "F4.h"
     16#include "longrat.h"
    1617static const int bundle_size=100;
    1718#if 1
     
    6465#ifdef LEN_VAR3
    6566// 3.Variante: Laenge: Platz fuer Leitk * Monomanzahl
     67
     68int QlogSizeClassic(number bigint){
     69  if(nlIsZero(bigint)) return 0;
     70  number absv=nlCopy(bigint);
     71  number two=nlInit(2);
     72  if(!(nlGreaterZero(absv)))
     73    absv=nlNeg(absv);
     74  int ls=0;
     75  number comp=nlInit(1);
     76  BOOLEAN equal=FALSE;
     77  while(!(nlGreater(comp,absv))) {
     78    ls++;
     79    if (nlEqual(comp,absv)){
     80      equal=TRUE;
     81      break;
     82    }
     83    number temp=comp;
     84    comp=nlMult(comp,two);
     85    nlDelete(&temp, currRing);
     86   
     87  }
     88  if(!equal)
     89    ls++;
     90  nlDelete(&two,currRing);
     91  nlDelete(&absv,currRing);
     92  nlDelete(&comp,currRing);
     93  //Print("%d\n",ls);
     94  return ls;
     95}
     96int QlogSize(number bigint){
     97  int size=nlSize(bigint);
     98  if(size<=1) return QlogSizeClassic(bigint);
     99  else return sizeof(mp_limb_t)*size*8;
     100  }
    66101inline int pSLength(poly p,int l)
    67102{
    68   int c=nSize(pGetCoeff(p));
     103  int c;
     104  number coef=pGetCoeff(p);
     105  if (rField_is_Q(currRing)){
     106    c=QlogSize(coef);
     107  }
     108  else
     109    c=nSize(coef);
     110 
    69111  return c*l /*pLength(p)*/;
    70112}
     113//! TODO CoefBuckets berücksichtigen
    71114int kSBucketLength(kBucket* b, poly lm=NULL)
    72115{
    73116  int s=0;
    74117  int c;
     118  number coef;
    75119  if(lm==NULL)
    76     c=nSize(pGetCoeff(kBucketGetLm(b)));
     120    coef=pGetCoeff(kBucketGetLm(b));
     121    //c=nSize(pGetCoeff(kBucketGetLm(b)));
    77122  else
    78     c=nSize(pGetCoeff(lm));
     123    coef=pGetCoeff(lm);
     124    //c=nSize(pGetCoeff(lm));
     125  if (rField_is_Q(currRing)){
     126    c=QlogSize(coef);
     127  }
     128  else
     129    c=nSize(coef);
     130 
    79131  int i;
    80132  for (i=b->buckets_used;i>=0;i--)
     
    83135    s+=b->buckets_length[i] /*pLength(b->buckets[i])*/;
    84136  }
     137  #ifdef HAVE_COEF_BUCKETS
     138  assume(b->buckets[0]==kBucketGetLm(b));
     139  if (b->coef[0]!=NULL){
     140   
     141    if (rField_is_Q(currRing)){
     142      int modifier=QlogSize(pGetCoeff(b->coef[0]));
     143      c+=modifier;
     144  }
     145    else{
     146      int modifier=nSize(pGetCoeff(b->coef[0]));
     147      c*=modifier;}
     148    }
     149  #endif
    85150  return s*c;
    86151}
     
    178243    int s=0;
    179244    if (c->is_char0)
    180       s=kSBucketLength(bucket,this->p);
     245      //s=kSBucketLength(bucket,this->p);
     246      s=kSBucketLength(bucket,NULL);
    181247    else
    182248    {
     
    21132179}
    21142180ideal t_rep_gb(ring r,ideal arg_I, BOOLEAN F4_mode){
     2181 
     2182  //  Print("QlogSize(0) %d, QlogSize(1) %d,QlogSize(-2) %d, QlogSize(5) %d\n", QlogSize(nlInit(0)),QlogSize(nlInit(1)),QlogSize(nlInit(-2)),QlogSize(nlInit(5)));
     2183 
     2184 
     2185 
    21152186  if (TEST_OPT_PROT)
    21162187    if (F4_mode)
Note: See TracChangeset for help on using the changeset viewer.