Changeset b429c16 in git


Ignore:
Timestamp:
Dec 6, 2006, 5:59:49 PM (17 years ago)
Author:
Oliver Wienand <wienand@…>
Branches:
(u'spielwiese', '91fdef05f09f54b8d58d92a472e9c4a43aa4656f')
Children:
bd860d3f60d5d79e7b9c070896415f1cf8e9e66a
Parents:
c80090fcc5ae3a1dc7fbae1ee5ff9decaf6e9dec
Message:
Division durch Nullteiler erlaubt


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

Legend:

Unmodified
Added
Removed
  • kernel/rmodulo2m.cc

    rc80090 rb429c16  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: rmodulo2m.cc,v 1.4 2006-03-20 20:33:57 wienand Exp $ */
     4/* $Id: rmodulo2m.cc,v 1.5 2006-12-06 16:59:49 wienand Exp $ */
    55/*
    66* ABSTRACT: numbers modulo 2^m
     
    5858/*
    5959 * Give the largest non unit k, such that a = x * k, b = y * k has
    60  * a solution. 
     60 * a solution.
    6161 */
    6262number nr2mGcd (number a,number b,ring r)
     
    246246  else if ((long)b%2==0)
    247247  {
    248     WerrorS("div by zero divisor");
    249     return (number)0;
    250   }
    251   else
    252   {
    253     return (number) nr2mMult(a, nr2mInversM(b));
    254   }
     248    if ((long)b != 0)
     249    {
     250      while ((long) b%2 == 0 && (long) a%2 == 0)
     251      {
     252        a = (number) ((long) a / 2);
     253        b = (number) ((long) b / 2);
     254      }
     255    }
     256    if ((long) b%2 == 0)
     257    {
     258      WerrorS("div by zero divisor");
     259      return (number)0;
     260    }
     261  }
     262  return (number) nr2mMult(a, nr2mInversM(b));
    255263}
    256264
Note: See TracChangeset for help on using the changeset viewer.