Changeset d0731c9 in git for kernel


Ignore:
Timestamp:
Aug 18, 2022, 2:16:53 PM (20 months ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
658a2a6ece0eabe6c77c1b26617f3cfb4b48b269
Parents:
e2f3add89e519e0e28202da04bf023e70cebb0d9
Message:
fix: stdZ for euclidean rings: allow QuotRem
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/GBEngine/kstd2.cc

    re2f3ad rd0731c9  
    147147    unsigned long not_sev     = ~L->sev;
    148148    const unsigned long sevT0 = strat->sevT[0];
    149     number orest;
     149    number orest,rest,mult;
    150150    if (L->p!=NULL)
    151151    {
     
    160160        if (p_LmShortDivisibleBy(T0p, sevT0, p, not_sev, r))
    161161        {
    162           if(n_DivBy(orest, pGetCoeff(T0p), r->cf))
     162          if(n_DivBy(pGetCoeff(p), pGetCoeff(T0p), r->cf))
    163163          {
    164164            return 0;
    165165          }
     166          if (n_QuotRem!=ndQuotRem) /*euclidean ring*/
     167          {
     168            mult= n_QuotRem(pGetCoeff(p), pGetCoeff(T0p), &rest, r->cf);
     169            if (!n_IsZero(mult, r->cf) && n_Greater(n_EucNorm(orest, r->cf), n_EucNorm(rest, r->cf), r->cf))
     170            {
     171              n_Delete(&mult,r->cf);
     172              n_Delete(&rest,r->cf);
     173              return 0;
     174            }
     175            n_Delete(&mult,r->cf);
     176            n_Delete(&rest,r->cf);
     177          }
    166178        }
    167179#else
     
    171183          {
    172184            return 0;
     185          }
     186          if (n_QuotRem!=ndQuotRem) /*euclidean ring*/
     187          {
     188            mult= n_QuotRem(pGetCoeff(p), pGetCoeff(T0p), &rest, r->cf);
     189            if (!n_IsZero(mult, r->cf) && n_Greater(n_EucNorm(orest, r->cf), n_EucNorm(rest, r->cf), r->cf))
     190            {
     191              n_Delete(&mult,r->cf);
     192              n_Delete(&rest,r->cf);
     193              return 0;
     194            }
     195            n_Delete(&mult,r->cf);
     196            n_Delete(&rest,r->cf);
    173197          }
    174198        }
     
    189213            return 0;
    190214          }
     215          if (n_QuotRem!=ndQuotRem) /*euclidean ring*/
     216          {
     217            mult= n_QuotRem(pGetCoeff(p), pGetCoeff(T0p), &rest, r->cf);
     218            if (!n_IsZero(mult, r->cf) && n_Greater(n_EucNorm(orest, r->cf), n_EucNorm(rest, r->cf), r->cf))
     219            {
     220              n_Delete(&mult,r->cf);
     221              n_Delete(&rest,r->cf);
     222              return 0;
     223            }
     224            n_Delete(&mult,r->cf);
     225            n_Delete(&rest,r->cf);
     226          }
    191227        }
    192228#else
     
    196232          {
    197233            return 0;
     234          }
     235          if (n_QuotRem!=ndQuotRem) /*euclidean ring*/
     236          {
     237            mult= n_QuotRem(pGetCoeff(p), pGetCoeff(T0p), &rest, r->cf);
     238            if (!n_IsZero(mult, r->cf) && n_Greater(n_EucNorm(orest, r->cf), n_EucNorm(rest, r->cf), r->cf))
     239            {
     240              n_Delete(&mult,r->cf);
     241              n_Delete(&rest,r->cf);
     242              return 0;
     243            }
     244            n_Delete(&mult,r->cf);
     245            n_Delete(&rest,r->cf);
    198246          }
    199247        }
Note: See TracChangeset for help on using the changeset viewer.