--- 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!