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

Annotation of OpenXM/src/k097/debug/asir0.k, Revision 1.2

1.1       maekawa     1:
                      2:
                      3: /* SSWork/yacc/debug/asir0.k,  1997, 3/5 cf. debug/asir1.ccc */
                      4: if (K00_verbose) {
1.2     ! takayama    5:  Println("debug/asir0.k    you need ox_asir module. ");
        !             6: }
        !             7:
        !             8: def loadOXasir() {
        !             9: Load_sm1(["oxasir.sm1",AddString([GetEnv("OpenXM_HOME"),
        !            10:           "/lib/sm1/oxasir.sm1"])],
        !            11:          "oxasir.sm1.loaded");
1.1       maekawa    12: }
                     13:
                     14: /* x = Poly("x");
                     15:    f = (x+2)^10;
                     16: Println(f); */
                     17:
                     18: def Factor(f)  {
1.2     ! takayama   19:   loadOXasir();
        !            20:   sm1(f, " f fctr /FunctionValue set");
1.1       maekawa    21: }
1.2     ! takayama   22: HelpAdd(["Factor",["Factor a given polynomial."]]);
1.1       maekawa    23:
                     24: def Cancel(f)  {
1.2     ! takayama   25:   local tmp,den,num,r;
        !            26:   loadOXasir();
1.1       maekawa    27:   if (IsRational(f)) {
                     28:    den = Cancel(Denominator(f));
                     29:    num = Cancel(Numerator(f));
                     30:    if (IsInteger(den) && IsInteger(num)) {
                     31:      return(CancelNumber(num/den));
                     32:    }
                     33:    if (IsInteger(den)) {
                     34:      tmp = sm1("[(divByN) ",num, den," ] gbext ");
                     35:      if (tmp[1] == Poly("0")) {
                     36:        return(Cancel(tmp[0]));
                     37:      }else{
                     38:        return(f);
                     39:      }
                     40:    }
                     41:   }
                     42:   if (IsInteger(f)) return(f);
                     43:   if (IsPolynomial(f)) {
                     44:     if (f == Poly("0")) return(0);
                     45:     if (Characteristic(Ringp(f)) != 0) return(f);
                     46:     if (IsConstant(f)) return(DC(f,"integer"));
                     47:     return(f);
                     48:   }
1.2     ! takayama   49:   sm1("[[num den]] reduceByAsir /r set ");
        !            50:   if (IsInteger(r[1])) {
        !            51:     if (r[1] == 1) return(r[0]);
        !            52:   }
        !            53:   return(r[0]/r[1]);
1.1       maekawa    54: }
1.2     ! takayama   55: HelpAdd(["Cancel",["Cancel the greatest common multiple of the denominators and the numerator. "]]);
1.1       maekawa    56:
                     57:
                     58:
1.2     ! takayama   59: /* BUG: It has not yet been rewritten. */
1.1       maekawa    60: def Primadec(f,g)  {
                     61:   sm1(f,g," primadec /FunctionValue set");
                     62:   sm1(" clean-workfiles ");
                     63: }
                     64: HelpAdd(["Primadec",[" Not Yet. <<need asir, start k0 with -f option.>>"]]);
                     65:
                     66:
                     67:

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