QuadFloat.st
changeset 5005 37632dff5141
parent 5004 52b4d47d9ea4
child 5006 be75f4702e37
--- a/QuadFloat.st	Fri Jun 07 03:18:14 2019 +0200
+++ b/QuadFloat.st	Fri Jun 07 03:25:27 2019 +0200
@@ -2100,6 +2100,29 @@
     "Created: / 07-06-2019 / 02:44:39 / Claus Gittinger"
 ! !
 
+!QuadFloat class methodsFor:'queries'!
+
+numBitsInMantissa
+    "answer the number of bits in the mantissa
+     the hidden bit is not counted here:
+
+     This is an 128bit quadfloat,
+           where 112 bits are available in the mantissa:
+        seeeeeee eeeeeeee mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm mmmmmmmm...
+    "
+
+    ^ 112
+
+    "
+     1.0 class numBitsInMantissa
+     1.0 asShortFloat class numBitsInMantissa
+     1.0 asLongFloat class numBitsInMantissa
+     1.0 asQuadFloat class numBitsInMantissa
+    "
+
+    "Created: / 07-06-2019 / 03:24:20 / Claus Gittinger"
+! !
+
 !QuadFloat methodsFor:'arithmetic'!
 
 * aNumber
@@ -2162,8 +2185,8 @@
     self errorUnsupported
 !
 
-sumFromQuadFloat:aQuadFloat
-    "sent when aQuadFloat does not know how to add the receiver, self"
+equalFromQuadFloat:aQuadFloat
+    "sent when aQuadFloat does not know how to compare agaist the receiver, self"
 
 %{
 #ifdef SUPPORT_QUADFLOAT
@@ -2172,14 +2195,31 @@
 
     myVal = __quadFloatVal(self);
     argVal = __quadFloatVal(aQuadFloat);
-    f128M_add( &myVal, &argVal, &result );
-    __qMKQFLOAT(newFloat, result);
+    return (f128M_eq( &argVal, &result ) ? true : false);
     RETURN ( newFloat );
 #endif // SUPPORT_QUADFLOAT
 %}.
     self errorUnsupported
 !
 
+lessFromQuadFloat:aQuadFloat
+    "sent when aQuadFloat does not know how to compare agaist the receiver, self"
+
+%{
+#ifdef SUPPORT_QUADFLOAT
+    OBJ newFloat;
+    float128_t result, myVal, argVal;
+
+    myVal = __quadFloatVal(self);
+    argVal = __quadFloatVal(aQuadFloat);
+    return (f128M_lt( &argVal, &result ) ? true : false);
+    RETURN ( newFloat );
+#endif // SUPPORT_QUADFLOAT
+%}.
+    self errorUnsupported
+
+!
+
 productFromQuadFloat:aQuadFloat
     "sent when aQuadFloat does not know how to multiply the receiver, self"
 
@@ -2216,8 +2256,8 @@
     self errorUnsupported
 !
 
-equalFromQuadFloat:aQuadFloat
-    "sent when aQuadFloat does not know how to compare agaist the receiver, self"
+sumFromQuadFloat:aQuadFloat
+    "sent when aQuadFloat does not know how to add the receiver, self"
 
 %{
 #ifdef SUPPORT_QUADFLOAT
@@ -2226,29 +2266,12 @@
 
     myVal = __quadFloatVal(self);
     argVal = __quadFloatVal(aQuadFloat);
-    return (f128M_eq( &argVal, &result ) ? true : false);
+    f128M_add( &myVal, &argVal, &result );
+    __qMKQFLOAT(newFloat, result);
     RETURN ( newFloat );
 #endif // SUPPORT_QUADFLOAT
 %}.
     self errorUnsupported
-!
-
-lessFromQuadFloat:aQuadFloat
-    "sent when aQuadFloat does not know how to compare agaist the receiver, self"
-
-%{
-#ifdef SUPPORT_QUADFLOAT
-    OBJ newFloat;
-    float128_t result, myVal, argVal;
-
-    myVal = __quadFloatVal(self);
-    argVal = __quadFloatVal(aQuadFloat);
-    return (f128M_lt( &argVal, &result ) ? true : false);
-    RETURN ( newFloat );
-#endif // SUPPORT_QUADFLOAT
-%}.
-    self errorUnsupported
-
 ! !
 
 !QuadFloat methodsFor:'error reportng'!
@@ -2264,3 +2287,4 @@
 version_CVS
     ^ '$Header$'
 ! !
+