[BACK]Return to pgcd.k CVS log [TXT][DIR] Up to [local] / OpenXM / src / k097 / debug

Annotation of OpenXM/src/k097/debug/pgcd.k, Revision 1.1.1.1

1.1       maekawa     1:
                      2:
                      3: /* polynomial gcd.k */
                      4:
                      5: class Pgcd extends Object {
                      6:  pzero = Poly("0");
                      7:  def gcd0(f,g,xx) {
                      8:    local tmp,r;
                      9:    if (Degree(g,xx) > Degree(f,xx)) {
                     10:       tmp = f; f = g; g = tmp;
                     11:    }
                     12:    while (!IsConstant(g)) {
                     13:      r = Reduction(f,[g]);
                     14:      Println([f,g,r[1]]);
                     15:      r = r[0];
                     16:      f = g;
                     17:      g = r;
                     18:    }
                     19:    if (g == pzero) return(f);
                     20:    else return(g);
                     21:  }
                     22:  def gcd(f,g,xx) {
                     23:    local tmp,r;
                     24:    if (Degree(g,xx) > Degree(f,xx)) {
                     25:       tmp = f; f = g; g = tmp;
                     26:    }
                     27:    while (!IsConstant(g)) {
                     28:      r = pseudoRemainder(f,g,xx);
                     29:      f = g;
                     30:      g = r;
                     31:    }
                     32:    if (g == pzero) return(f);
                     33:    else return(g);
                     34:  }
                     35:  def pseudoRemainder(f,g,xx) {
                     36:    local c,r;
                     37:    c = Init(g);
                     38:    Println([c,xx]);
                     39:    c = Coefficients(c,xx);
                     40:    c = c[1,0];
                     41:    r = Reduction(c^(Degree(f,xx)-Degree(g,xx)+1)*f,[g]);
                     42:    Println([f,g,r[1]]);
                     43:    return(r[0]);
                     44:  }
                     45: }
                     46:
                     47:
                     48:
                     49:
                     50:

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>