--- a/LongFloat.st Sat Aug 31 16:13:07 2019 +0200
+++ b/LongFloat.st Sat Aug 31 16:13:18 2019 +0200
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
"
COPYRIGHT (c) 1999 by eXept Software AG
All Rights Reserved
@@ -2258,8 +2256,7 @@
!LongFloat methodsFor:'testing'!
isFinite
- "return true, if the receiver is a finite float
- i.e. not NaN and not infinite."
+ "return true, if the receiver is a finite float (not NaN and not +/-INF)"
%{ /* NOCONTEXT */
@@ -2267,34 +2264,33 @@
LONGFLOAT_t lV = __longFloatVal(self);
if (LONG_finite(lV)) {
- RETURN (true);
+ RETURN (true);
} else {
- RETURN (false);
+ RETURN (false);
}
#else
double dV = (double) __longFloatVal(self);
if (isfinite(dV)) {
- RETURN (true);
+ RETURN (true);
} else {
- RETURN (false);
+ RETURN (false);
}
#endif
%}
"
- 1.0 asLongFloat isFinite
- (0.0 asLongFloat uncheckedDivide: 0.0) isFinite
- (1.0 asLongFloat uncheckedDivide: 0.0) isFinite
- (-1.0 asLongFloat uncheckedDivide: 0.0) isFinite
+ 1.0 asLongFloat isFinite
+ (0.0 asLongFloat uncheckedDivide: 0.0) isFinite
+ (1.0 asLongFloat uncheckedDivide: 0.0) isFinite
+ (-1.0 asLongFloat uncheckedDivide: 0.0) isFinite
"
!
isInfinite
- "return true, if the receiver is an infinite float (Inf).
+ "return true, if the receiver is an infinite float (+Inf or -Inf).
These are not created by ST/X float operations (they raise an exception);
- however, inline C-code could produce them ...
- Redefined here for speed"
+ however, inline C-code could produce them."
%{ /* NOCONTEXT */
@@ -2315,20 +2311,20 @@
^ self isFinite not and:[self isNaN not]
"
- 1.0 asLongFloat isFinite -> true
- 1.0 asLongFloat isInfinite -> false
-
- (0.0 asLongFloat uncheckedDivide: 0.0) isFinite -> false
- (0.0 asLongFloat uncheckedDivide: 0.0) isInfinite -> false
- (0.0 asLongFloat uncheckedDivide: 0.0) isNaN -> true
-
- (1.0 asLongFloat uncheckedDivide: 0.0) isFinite -> false
- (1.0 asLongFloat uncheckedDivide: 0.0) isInfinite -> true
- (1.0 asLongFloat uncheckedDivide: 0.0) isNaN -> false
-
- (-1.0 asLongFloat uncheckedDivide: 0.0) isFinite -> false
- (-1.0 asLongFloat uncheckedDivide: 0.0) isInfinite -> true
- (-1.0 asLongFloat uncheckedDivide: 0.0) isNaN -> false
+ 1.0 asLongFloat isFinite -> true
+ 1.0 asLongFloat isInfinite -> false
+
+ (0.0 asLongFloat uncheckedDivide: 0.0) isFinite -> false
+ (0.0 asLongFloat uncheckedDivide: 0.0) isInfinite -> false
+ (0.0 asLongFloat uncheckedDivide: 0.0) isNaN -> true
+
+ (1.0 asLongFloat uncheckedDivide: 0.0) isFinite -> false
+ (1.0 asLongFloat uncheckedDivide: 0.0) isInfinite -> true
+ (1.0 asLongFloat uncheckedDivide: 0.0) isNaN -> false
+
+ (-1.0 asLongFloat uncheckedDivide: 0.0) isFinite -> false
+ (-1.0 asLongFloat uncheckedDivide: 0.0) isInfinite -> true
+ (-1.0 asLongFloat uncheckedDivide: 0.0) isNaN -> false
"
"Created: / 25-07-2017 / 17:04:04 / cg"
@@ -2337,31 +2333,31 @@
isNaN
"return true, if the receiver is an invalid float (NaN - not a number).
These are not created by ST/X float operations (they raise an exception);
- however, inline C-code could produce them ..."
+ however, inline C-code could produce them."
%{ /* NOCONTEXT */
#ifdef LONG_isnan
LONGFLOAT_t lV = __longFloatVal(self);
if (LONG_isnan(lV)) {
- RETURN (true);
+ RETURN (true);
} else {
- RETURN (false);
+ RETURN (false);
}
#else
double dV = (double)(__longFloatVal(self));
if (isnan(dV)) {
- RETURN (true);
+ RETURN (true);
} else {
- RETURN (false);
+ RETURN (false);
}
#endif
%}
"
- 1.0 asLongFloat isNaN
- (0.0 asLongFloat uncheckedDivide: 0.0) isNaN
+ 1.0 asLongFloat isNaN
+ (0.0 asLongFloat uncheckedDivide: 0.0) isNaN
"
!