Changeset a74143 in git for libpolys


Ignore:
Timestamp:
Jan 6, 2012, 9:47:51 PM (12 years ago)
Author:
Oleksandr Motsak <motsak@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
31f1850ad6697d9acd155b53fa63f9e1a648ed9c
Parents:
4b38e3cc9992129dd4ef044c1d2cc7e55f93b134
git-author:
Oleksandr Motsak <motsak@mathematik.uni-kl.de>2012-01-06 21:47:51+01:00
git-committer:
Oleksandr Motsak <motsak@mathematik.uni-kl.de>2012-01-06 21:59:37+01:00
Message:
inverse computation over Zp

CHG: simplified extGCD in nvInvMod (due to Burcin)

TODO: there should better be only one such function: nvInvMod vs InvMod
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libpolys/coeffs/modulop.cc

    r4b38e3 ra74143  
    153153
    154154#ifdef HAVE_DIV_MOD
     155
    155156#ifdef USE_NTL_XGCD
     157
    156158//ifdef HAVE_NTL // in ntl.a
    157159//extern void XGCD(long& d, long& s, long& t, long a, long b);
     
    160162NTL_CLIENT
    161163#endif
     164
    162165#endif
    163166
     
    748751
    749752
    750 long nvInvMod(long a, const coeffs R)
    751 {
     753inline long nvInvMod(long a, const coeffs R)
     754{
     755#ifdef HAVE_DIV_MOD
     756  return InvMod(a, R);
     757#else
     758/// TODO: use "long InvMod(long a, const coeffs R)"?!
     759 
    752760   long  s;
    753761
    754    long  u, v, u0, v0, u1, v1, u2, v2, q, r;
    755 
    756    u1=1; v1=0;
    757    u2=0; v2=1;
    758    u = a; v = R->ch;
     762   long  u, u0, u1, u2, q, r; // v0, v1, v2,
     763
     764   u1=1; // v1=0;
     765   u2=0; // v2=1;
     766   u = a;
     767
     768   long v = R->ch;
    759769
    760770   while (v != 0)
     
    765775      v = r;
    766776      u0 = u2;
    767       v0 = v2;
    768       u2 =  u1 - q*u2;
    769       v2 = v1- q*v2;
     777//      v0 = v2;
     778      u2 = u1 - q*u2;
     779//      v2 = v1 - q*v2;
    770780      u1 = u0;
    771       v1 = v0;
     781//      v1 = v0;
    772782   }
    773783
     
    777787      return s + R->ch;
    778788   else
    779       return s;
     789     return s;
     790#endif
    780791}
    781792
Note: See TracChangeset for help on using the changeset viewer.