Float.st
changeset 3399 4f45ebb7bc60
parent 3395 02f47135d80f
child 3414 d9aefd18c10d
--- a/Float.st	Wed Apr 22 21:23:08 1998 +0200
+++ b/Float.st	Wed Apr 22 21:39:12 1998 +0200
@@ -813,9 +813,12 @@
 
     errno = 0;
     rslt = acos(__floatVal(self));
+#ifdef LINUX /* and maybe others */
+    if (! isnan(rslt))
+#endif
     if (errno == 0) {
-	__qMKFLOAT(newFloat, rslt);
-	RETURN ( newFloat );
+        __qMKFLOAT(newFloat, rslt);
+        RETURN ( newFloat );
     }
 %}.
     ^ self class
@@ -823,6 +826,11 @@
         receiver:self
         selector:#arcCos
         errorString:'bad receiver in arcCos'
+
+    "
+     -10 arcCos
+     1 arcCos 
+    "
 !
 
 arcSin
@@ -835,9 +843,12 @@
 
     errno = 0;
     rslt = asin(__floatVal(self));
+#ifdef LINUX /* and maybe others */
+    if (! isnan(rslt))
+#endif
     if (errno == 0) {
-	__qMKFLOAT(newFloat, rslt);
-	RETURN ( newFloat );
+        __qMKFLOAT(newFloat, rslt);
+        RETURN ( newFloat );
     }
 %}.
     ^ self class
@@ -845,6 +856,12 @@
         receiver:self
         selector:#arcSin
         errorString:'bad receiver in arcSin'
+
+    "
+     -10 arcSin
+     1 arcSin 
+    "
+
 !
 
 arcTan
@@ -857,9 +874,12 @@
 
     errno = 0;
     rslt = atan(__floatVal(self));
+#ifdef LINUX /* and maybe others */
+    if (! isnan(rslt))
+#endif
     if (errno == 0) {
-	__qMKFLOAT(newFloat, rslt);
-	RETURN ( newFloat );
+        __qMKFLOAT(newFloat, rslt);
+        RETURN ( newFloat );
     }
 %}.
     ^ self class
@@ -879,9 +899,12 @@
 
     errno = 0;
     rslt = cos(__floatVal(self));
+#ifdef LINUX /* and maybe others */
+    if (! isnan(rslt))
+#endif
     if (errno == 0) {
-	__qMKFLOAT(newFloat, rslt);
-	RETURN ( newFloat );
+        __qMKFLOAT(newFloat, rslt);
+        RETURN ( newFloat );
     }
 %}.
     ^ self class
@@ -901,9 +924,12 @@
 
     errno = 0;
     rslt = exp(__floatVal(self));
+#ifdef LINUX /* and maybe others */
+    if (! isnan(rslt))
+#endif
     if (errno == 0) {
-	__qMKFLOAT(newFloat, rslt);
-	RETURN ( newFloat );
+        __qMKFLOAT(newFloat, rslt);
+        RETURN ( newFloat );
     }
 %}.
     ^ self class
@@ -923,9 +949,12 @@
 
     errno = 0;
     rslt = log(__floatVal(self));
+#ifdef LINUX /* and maybe others */
+    if (! isnan(rslt))
+#endif
     if (errno == 0) {
-	__qMKFLOAT(newFloat, rslt);
-	RETURN ( newFloat );
+        __qMKFLOAT(newFloat, rslt);
+        RETURN ( newFloat );
     }
 %}.
     "
@@ -949,15 +978,18 @@
     OBJ newFloat;
 
     if (__isFloatLike(n)) {
-	errno = 0;
-	rslt = pow(__floatVal(self), __floatVal(n));
+        errno = 0;
+        rslt = pow(__floatVal(self), __floatVal(n));
 #if 0
-	errno = 0;  /* XXXX */
+        errno = 0;  /* XXXX */
 #endif
-	if (errno == 0) {
-	    __qMKFLOAT(newFloat, rslt);
-	    RETURN ( newFloat );
-	}
+#ifdef LINUX /* and maybe others */
+        if (! isnan(rslt))
+#endif
+        if (errno == 0) {
+            __qMKFLOAT(newFloat, rslt);
+            RETURN ( newFloat );
+        }
     }
 %}.
     "
@@ -981,9 +1013,12 @@
 
     errno = 0;
     rslt = sin(__floatVal(self));
+#ifdef LINUX /* and maybe others */
+    if (! isnan(rslt))
+#endif
     if (errno == 0) {
-	__qMKFLOAT(newFloat, rslt);
-	RETURN ( newFloat );
+        __qMKFLOAT(newFloat, rslt);
+        RETURN ( newFloat );
     }
 %}.
     ^ self class
@@ -991,6 +1026,8 @@
         receiver:self
         selector:#sin
         errorString:'bad receiver in sin'
+
+
 !
 
 sqrt
@@ -1003,9 +1040,12 @@
 
     errno = 0;
     rslt = sqrt(__floatVal(self));
+#ifdef LINUX /* and maybe others */
+    if (! isnan(rslt))
+#endif
     if (errno == 0) {
-	__qMKFLOAT(newFloat, rslt);
-	RETURN ( newFloat );
+        __qMKFLOAT(newFloat, rslt);
+        RETURN ( newFloat );
     }
 %}.
     ^ self class
@@ -1013,6 +1053,11 @@
         receiver:self
         selector:#sqrt
         errorString:'bad receiver in sqrt'
+
+    "
+     10 sqrt
+     -10 sqrt
+    "
 !
 
 tan
@@ -1025,9 +1070,12 @@
 
     errno = 0;
     rslt = tan(__floatVal(self));
+#ifdef LINUX /* and maybe others */
+    if (! isnan(rslt))
+#endif
     if (errno == 0) {
-	__qMKFLOAT(newFloat, rslt);
-	RETURN ( newFloat );
+        __qMKFLOAT(newFloat, rslt);
+        RETURN ( newFloat );
     }
 %}.
     ^ self class
@@ -1633,6 +1681,6 @@
 !Float class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Float.st,v 1.77 1998-04-22 19:12:44 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Float.st,v 1.78 1998-04-22 19:39:12 cg Exp $'
 ! !
 Float initialize!