[BACK]Return to object.kk CVS log [TXT][DIR] Up to [local] / OpenXM / src / k097

Annotation of OpenXM/src/k097/object.kk, Revision 1.1.1.1

1.1       maekawa     1: /* object.kk , 1997, 4/11. */
                      2: Protect("showln",0);
                      3:
                      4: class Object extends PrimitiveObject {
                      5:   def new0() {
                      6:     return(Object);
                      7:   }
                      8:   def showln() {
                      9:     Println(this);
                     10:   }
                     11:   def getClass() {
                     12:     sm1(" this 0 get /FunctionValue set ");
                     13:   }
                     14: }
                     15:
                     16: sm1(" /ectag { dup isClass not { pop -1 } { lc } ifelse } def ");
                     17: def k00ecTag(a) { sm1(a," ectag /FunctionValue set "); }
                     18: def IsObject(a) {
                     19:   if (!IsArray(a)) return(false);
                     20:   if (Length(a) < 1) return(false);
                     21:   if (k00ecTag(a[0]) == k00ecTag(Object[0])) return(true);
                     22:   else return(false);
                     23: }
                     24: HelpAdd(["IsObject",["IsObject(a) return true if a is an Object."]]);
                     25:
                     26:
                     27:
                     28: /* class Gmp. Number theoretic functions.
                     29:    1997, 4/17
                     30: */
                     31: class Gmp extends Object {
                     32:   def BitAnd(a,b) {
                     33:     sm1("[(and) ",a," ",b," ] mpzext /FunctionValue set ");
                     34:   }
                     35:   def BitOr(a,b) {
                     36:     sm1("[(ior) ",a," ",b," ] mpzext /FunctionValue set ");
                     37:   }
                     38:   def ModuloPower(base,ex,mmod) {
                     39:     sm1("[(powm) ",base," ",ex," ",mmod," ] mpzext /FunctionValue set ");
                     40:   }
                     41:   def ProbabilisticPrimeP(p,reps) {
                     42:     sm1("[(probab_prime_p) ",p," ",reps," ] mpzext /FunctionValue set ");
                     43:   }
                     44:   def Sqrt(a) {
                     45:     sm1("[(sqrt) ",a, " ] mpzext /FunctionValue set ");
                     46:   }
                     47:   def Gcd(a,b) {
                     48:     sm1("[(gcd) ",a," ",b," ] mpzext /FunctionValue set ");
                     49:   }
                     50:   def Div(a,b) {
                     51:     sm1("[(tdiv_qr) ",a," ",b," ] mpzext /FunctionValue set ");
                     52:   }
                     53:   def Mod(a,b) {
                     54:     sm1("[(tdiv_qr) ",a," ",b," ] mpzext 1 get /FunctionValue set ");
                     55:   }
                     56: }
                     57:
                     58: HelpAdd(["Gmp.",
                     59:  ["Gmp is a class which supports the following methods:",
                     60:   "BitAnd, BitOr, ModuloPower, ProbabilisticPrimeP, Sqrt,",
                     61:   "Gcd, Div, Mod.",
                     62:   "Ex.  r = Gmp.Gcd(5,8); ",
                     63:   "These methods call functions of Gnu-MP package.",
                     64:   "The Copyright notice is in kan96xx/gmp.",
                     65:   "Note that there is no method to create an instance."]]);
                     66:

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