commentary
authorClaus Gittinger <cg@exept.de>
Tue, 05 Nov 1996 14:32:56 +0100
changeset 1884 abd423adeb94
parent 1883 d3fbf4b36be7
child 1885 219c3437ad01
commentary
SmallInt.st
SmallInteger.st
--- a/SmallInt.st	Tue Nov 05 14:32:24 1996 +0100
+++ b/SmallInt.st	Tue Nov 05 14:32:56 1996 +0100
@@ -428,7 +428,8 @@
 
 // aNumber
     "return the integer part of the quotient of the receivers value
-     and the arguments value.
+     and the arguments value. The result is truncated toward negative infinity
+     and negative, if the operands signs differ.
      Be careful with negative results: 9 // 4 = 2, 
      while -9 // 4 = -3. 
      See #quo: which returns -2 in the latter."
@@ -437,34 +438,34 @@
     INT val, rslt;
 
     if (__isSmallInteger(aNumber)) {
-	val = __intVal(aNumber);
-	if (val != 0) {
-	    rslt = __intVal(self) / val;
-	    if (rslt < 0) {
-		if (__intVal(self) % val)
-		    rslt--;
-	    }
-	    RETURN ( __MKSMALLINT(rslt) );
-	}
+        val = __intVal(aNumber);
+        if (val != 0) {
+            rslt = __intVal(self) / val;
+            if (rslt < 0) {
+                if (__intVal(self) % val)
+                    rslt--;
+            }
+            RETURN ( __MKSMALLINT(rslt) );
+        }
     } else {
-	if (__isFraction(aNumber)) {
-	    OBJ t;
-	    INT num, den;
+        if (__isFraction(aNumber)) {
+            OBJ t;
+            INT num, den;
 
-	    t = __FractionInstPtr(aNumber)->f_numerator;
-	    if (__isSmallInteger(t)) {
-		num = __intVal(t);
-		t = __FractionInstPtr(aNumber)->f_denominator;
-		if (__isSmallInteger(t)) {
-		    den = __intVal(t);
-		    RETURN ( __MKSMALLINT(__intVal(self) * den / num ));
-		}
-	    }
-	}
+            t = __FractionInstPtr(aNumber)->f_numerator;
+            if (__isSmallInteger(t)) {
+                num = __intVal(t);
+                t = __FractionInstPtr(aNumber)->f_denominator;
+                if (__isSmallInteger(t)) {
+                    den = __intVal(t);
+                    RETURN ( __MKSMALLINT(__intVal(self) * den / num ));
+                }
+            }
+        }
     }
 %}.
     (aNumber = 0) ifTrue:[
-	^ DivisionByZeroSignal raise.
+        ^ DivisionByZeroSignal raise.
     ].
     ^ self retry:#// coercing:aNumber
 
@@ -551,7 +552,8 @@
 
 quo:aNumber
     "return the integer part of the quotient of the receivers value
-     and the arguments value. 
+     and the arguments value. The result is truncated towards zero
+     and negative, if the operands signs differ.. 
      For positive results, this is the same as #//,
      for negative results, the remainder is ignored.
      I.e.: '9 // 4 = 2' and '-9 // 4 = -3'
@@ -561,29 +563,29 @@
     INT val;
 
     if (__isSmallInteger(aNumber)) {
-	val = __intVal(aNumber);
-	if (val != 0) {
-	    RETURN ( __MKSMALLINT(__intVal(self) / val) );
-	}
+        val = __intVal(aNumber);
+        if (val != 0) {
+            RETURN ( __MKSMALLINT(__intVal(self) / val) );
+        }
     } else {
-	if (__isFraction(aNumber)) {
-	    OBJ t;
-	    INT num, den;
+        if (__isFraction(aNumber)) {
+            OBJ t;
+            INT num, den;
 
-	    t = __FractionInstPtr(aNumber)->f_numerator;
-	    if (__isSmallInteger(t)) {
-		num = __intVal(t);
-		t = __FractionInstPtr(aNumber)->f_denominator;
-		if (__isSmallInteger(t)) {
-		    den = __intVal(t);
-		    RETURN ( __MKSMALLINT(__intVal(self) * den / num ));
-		}
-	    }
-	}
+            t = __FractionInstPtr(aNumber)->f_numerator;
+            if (__isSmallInteger(t)) {
+                num = __intVal(t);
+                t = __FractionInstPtr(aNumber)->f_denominator;
+                if (__isSmallInteger(t)) {
+                    den = __intVal(t);
+                    RETURN ( __MKSMALLINT(__intVal(self) * den / num ));
+                }
+            }
+        }
     }
 %}.
     (aNumber = 0) ifTrue:[
-	^ DivisionByZeroSignal raise.
+        ^ DivisionByZeroSignal raise.
     ].
     ^ self retry:#quo: coercing:aNumber
 
@@ -2110,5 +2112,5 @@
 !SmallInteger class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Attic/SmallInt.st,v 1.59 1996-10-29 21:29:24 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Attic/SmallInt.st,v 1.60 1996-11-05 13:32:56 cg Exp $'
 ! !
--- a/SmallInteger.st	Tue Nov 05 14:32:24 1996 +0100
+++ b/SmallInteger.st	Tue Nov 05 14:32:56 1996 +0100
@@ -428,7 +428,8 @@
 
 // aNumber
     "return the integer part of the quotient of the receivers value
-     and the arguments value.
+     and the arguments value. The result is truncated toward negative infinity
+     and negative, if the operands signs differ.
      Be careful with negative results: 9 // 4 = 2, 
      while -9 // 4 = -3. 
      See #quo: which returns -2 in the latter."
@@ -437,34 +438,34 @@
     INT val, rslt;
 
     if (__isSmallInteger(aNumber)) {
-	val = __intVal(aNumber);
-	if (val != 0) {
-	    rslt = __intVal(self) / val;
-	    if (rslt < 0) {
-		if (__intVal(self) % val)
-		    rslt--;
-	    }
-	    RETURN ( __MKSMALLINT(rslt) );
-	}
+        val = __intVal(aNumber);
+        if (val != 0) {
+            rslt = __intVal(self) / val;
+            if (rslt < 0) {
+                if (__intVal(self) % val)
+                    rslt--;
+            }
+            RETURN ( __MKSMALLINT(rslt) );
+        }
     } else {
-	if (__isFraction(aNumber)) {
-	    OBJ t;
-	    INT num, den;
+        if (__isFraction(aNumber)) {
+            OBJ t;
+            INT num, den;
 
-	    t = __FractionInstPtr(aNumber)->f_numerator;
-	    if (__isSmallInteger(t)) {
-		num = __intVal(t);
-		t = __FractionInstPtr(aNumber)->f_denominator;
-		if (__isSmallInteger(t)) {
-		    den = __intVal(t);
-		    RETURN ( __MKSMALLINT(__intVal(self) * den / num ));
-		}
-	    }
-	}
+            t = __FractionInstPtr(aNumber)->f_numerator;
+            if (__isSmallInteger(t)) {
+                num = __intVal(t);
+                t = __FractionInstPtr(aNumber)->f_denominator;
+                if (__isSmallInteger(t)) {
+                    den = __intVal(t);
+                    RETURN ( __MKSMALLINT(__intVal(self) * den / num ));
+                }
+            }
+        }
     }
 %}.
     (aNumber = 0) ifTrue:[
-	^ DivisionByZeroSignal raise.
+        ^ DivisionByZeroSignal raise.
     ].
     ^ self retry:#// coercing:aNumber
 
@@ -551,7 +552,8 @@
 
 quo:aNumber
     "return the integer part of the quotient of the receivers value
-     and the arguments value. 
+     and the arguments value. The result is truncated towards zero
+     and negative, if the operands signs differ.. 
      For positive results, this is the same as #//,
      for negative results, the remainder is ignored.
      I.e.: '9 // 4 = 2' and '-9 // 4 = -3'
@@ -561,29 +563,29 @@
     INT val;
 
     if (__isSmallInteger(aNumber)) {
-	val = __intVal(aNumber);
-	if (val != 0) {
-	    RETURN ( __MKSMALLINT(__intVal(self) / val) );
-	}
+        val = __intVal(aNumber);
+        if (val != 0) {
+            RETURN ( __MKSMALLINT(__intVal(self) / val) );
+        }
     } else {
-	if (__isFraction(aNumber)) {
-	    OBJ t;
-	    INT num, den;
+        if (__isFraction(aNumber)) {
+            OBJ t;
+            INT num, den;
 
-	    t = __FractionInstPtr(aNumber)->f_numerator;
-	    if (__isSmallInteger(t)) {
-		num = __intVal(t);
-		t = __FractionInstPtr(aNumber)->f_denominator;
-		if (__isSmallInteger(t)) {
-		    den = __intVal(t);
-		    RETURN ( __MKSMALLINT(__intVal(self) * den / num ));
-		}
-	    }
-	}
+            t = __FractionInstPtr(aNumber)->f_numerator;
+            if (__isSmallInteger(t)) {
+                num = __intVal(t);
+                t = __FractionInstPtr(aNumber)->f_denominator;
+                if (__isSmallInteger(t)) {
+                    den = __intVal(t);
+                    RETURN ( __MKSMALLINT(__intVal(self) * den / num ));
+                }
+            }
+        }
     }
 %}.
     (aNumber = 0) ifTrue:[
-	^ DivisionByZeroSignal raise.
+        ^ DivisionByZeroSignal raise.
     ].
     ^ self retry:#quo: coercing:aNumber
 
@@ -2110,5 +2112,5 @@
 !SmallInteger class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/SmallInteger.st,v 1.59 1996-10-29 21:29:24 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/SmallInteger.st,v 1.60 1996-11-05 13:32:56 cg Exp $'
 ! !