Changeset ed7cb5 in git


Ignore:
Timestamp:
Aug 24, 2001, 3:41:35 PM (22 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
Children:
47c8f1203dc6663433e108e9e01f128d3ca726e3
Parents:
f299facd1825ad4aaf3bc53207a5cfcb6892f886
Message:
*hannes: int(z/n) return trunc(z/n) instead of 0 for z/n not in Z


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

Legend:

Unmodified
Added
Removed
  • Singular/longrat.cc

    rf299fac red7cb5  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: longrat.cc,v 1.38 2001-03-22 19:11:06 Singular Exp $ */
     4/* $Id: longrat.cc,v 1.39 2001-08-24 13:41:35 Singular Exp $ */
    55/*
    66* ABSTRACT: computation with long rational numbers (Hubert Grassmann)
     
    102102
    103103/***************************************************************
    104  * 
     104 *
    105105 * Routines which are never inlined by p_Numbers.h
    106106 *
     
    109109
    110110omBin rnumber_bin = omGetSpecBin(sizeof(rnumber));
     111
     112number nlOne=nlInit(1);
    111113
    112114static int nlPrimeM;
     
    487489  if (SR_HDL(i) &SR_INT) return SR_TO_INT(i);
    488490  nlGmpSimple(&i->z);
    489   if ((i->s!=3)||(mpz_size1(&i->z)>MP_SMALL)) return 0;
    490   int ul=(int)mpz_get_si(&i->z);
    491   if (mpz_cmp_si(&i->z,(long)ul)!=0) return 0;
     491  if (i->s==3)
     492  {
     493    if(mpz_size1(&i->z)>MP_SMALL) return 0;
     494    int ul=(int)mpz_get_si(&i->z);
     495    if (mpz_cmp_si(&i->z,(long)ul)!=0) return 0;
     496    return ul;
     497  }
     498  lint tmp;
     499  int ul;
     500  mpz_init(&tmp);
     501  MPZ_DIV(&tmp,&i->z,&i->n);
     502  if(mpz_size1(&tmp)>MP_SMALL) ul=0;
     503  else
     504  {
     505    ul=(int)mpz_get_si(&tmp);
     506    if (mpz_cmp_si(&tmp,(long)ul)!=0) ul=0;
     507  }
     508  mpz_clear(&tmp);
    492509  return ul;
    493510}
     
    516533    }
    517534    n=(number)omAllocBin(rnumber_bin);
    518 #if defined(LDEBUG) 
     535#if defined(LDEBUG)
    519536    n->debug=123456;
    520537#endif
     
    539556  }
    540557  n=(number)omAllocBin(rnumber_bin);
    541 #if defined(LDEBUG) 
     558#if defined(LDEBUG)
    542559  n->debug=123456;
    543560#endif
     
    624641  }
    625642  u=(number)omAllocBin(rnumber_bin);
    626 #if defined(LDEBUG) 
     643#if defined(LDEBUG)
    627644  u->debug=123456;
    628645#endif
     
    720737  }
    721738  u=(number)omAllocBin(rnumber_bin);
    722 #if defined(LDEBUG) 
     739#if defined(LDEBUG)
    723740  u->debug=123456;
    724741#endif
     
    838855  }
    839856  u=(number)omAllocBin(rnumber_bin);
    840 #if defined(LDEBUG) 
     857#if defined(LDEBUG)
    841858  u->debug=123456;
    842859#endif
     
    887904  u=(number)omAllocBin(rnumber_bin);
    888905  u->s=0;
    889 #if defined(LDEBUG) 
     906#if defined(LDEBUG)
    890907  u->debug=123456;
    891908#endif
     
    10391056    }
    10401057    *u=(number)omAllocBin(rnumber_bin);
    1041 #if defined(LDEBUG) 
     1058#if defined(LDEBUG)
    10421059    (*u)->debug=123456;
    10431060#endif
     
    11761193  }
    11771194  result=(number)omAllocBin(rnumber_bin);
    1178 #if defined(LDEBUG) 
     1195#if defined(LDEBUG)
    11791196  result->debug=123456;
    11801197#endif
     
    12681285        {
    12691286          mpz_clear(&x->z);
    1270 #if defined(LDEBUG) 
     1287#if defined(LDEBUG)
    12711288          x->debug=654324;
    12721289#endif
     
    13121329  }
    13131330  result=(number)omAllocBin(rnumber_bin);
    1314 #if defined(LDEBUG) 
     1331#if defined(LDEBUG)
    13151332  result->debug=123456;
    13161333#endif
     
    13881405        number u=(number)omAllocBin(rnumber_bin);
    13891406        u->s=3;
    1390 #if defined(LDEBUG) 
     1407#if defined(LDEBUG)
    13911408        u->debug=123456;
    13921409#endif
     
    14111428
    14121429/***************************************************************
    1413  * 
     1430 *
    14141431 * routines which are needed by Inline(d) routines
    14151432 *
     
    14831500#endif
    14841501  number b=(number)omAllocBin(rnumber_bin);
    1485 #if defined(LDEBUG) 
     1502#if defined(LDEBUG)
    14861503  b->debug=123456;
    14871504#endif
     
    15431560{
    15441561  number u=(number)omAllocBin(rnumber_bin);
    1545 #if defined(LDEBUG) 
     1562#if defined(LDEBUG)
    15461563  u->debug=123456;
    15471564#endif
     
    17551772{
    17561773  number u=(number)omAllocBin(rnumber_bin);
    1757 #if defined(LDEBUG) 
     1774#if defined(LDEBUG)
    17581775  u->debug=123456;
    17591776#endif
     
    20342051{
    20352052  number u=(number)omAllocBin(rnumber_bin);
    2036 #if defined(LDEBUG) 
     2053#if defined(LDEBUG)
    20372054  u->debug=123456;
    20382055#endif
     
    20542071}
    20552072
    2056 // a or b are not immediate 
     2073// a or b are not immediate
    20572074number _nlMult_aNoImm_OR_bNoImm(number a, number b)
    20582075{
    20592076  assume(! (SR_HDL(a) & SR_HDL(b) & SR_INT));
    20602077  number u=(number)omAllocBin(rnumber_bin);
    2061 #if defined(LDEBUG) 
     2078#if defined(LDEBUG)
    20622079  u->debug=123456;
    20632080#endif
     
    21762193{
    21772194  number z=(number)omAllocBin(rnumber_bin);
    2178 #if defined(LDEBUG) 
     2195#if defined(LDEBUG)
    21792196  z->debug=123456;
    21802197#endif
    21812198  mpz_init_set_si(&z->z,(long)i);
    21822199  z->s = 3;
     2200  return z;
     2201}
     2202
     2203/*2
     2204* z := i/j
     2205*/
     2206number nlInit2 (int i, int j)
     2207{
     2208  number z=(number)omAllocBin(rnumber_bin);
     2209#if defined(LDEBUG)
     2210  z->debug=123456;
     2211#endif
     2212  mpz_init_set_si(&z->z,(long)i);
     2213  mpz_init_set_si(&z->n,(long)j);
     2214  z->s = 0;
     2215  nlNormalize(z);
    21832216  return z;
    21842217}
     
    22012234
    22022235/***************************************************************
    2203  * 
     2236 *
    22042237 * Routines which might be inlined by p_Numbers.h
    22052238 *
     
    22582291*/
    22592292LINLINE number nlCopy(number a)
    2260 {
    2261   if ((SR_HDL(a) & SR_INT)||(a==NULL))
    2262   {
    2263     return a;
    2264   }
    2265   return _nlCopy_NoImm(a);
    2266 }
    2267 
    2268 LINLINE number nl_Copy(number a, ring r)
    22692293{
    22702294  if ((SR_HDL(a) & SR_INT)||(a==NULL))
Note: See TracChangeset for help on using the changeset viewer.