Jump to content

Test integerness: Difference between revisions

Line 1,679:
<lang Mathematica>IntegerQ /@ {E, 2.4, 7, 9/2}</lang>
{{out}}<pre>{False,False,True,False}</pre>
=={{header|Nim}}==
a taxonomy of Nim number types:
SomeInteger: integer types, signed or unsigned, 8,16,32,or 64 bits
SomeFloat: floating point, 32 or 64 bits
SomeNumber: SomeInteger or SomeFloat
Rational: rational type; a numerator and denominator, of any (identical) SomeInteger type
Complex: complex type; real and imaginary of any (identical) SomeFloat type
<lang nim>import complex, rationals, math, fenv, sugar
func is_integer[T:Complex | Rational | SomeNumber](x: T, tolerance: float64 = 0.0): bool =
when T is Complex:
x.im == 0 and x.re.is_integer
elif T is Rational:
x.dup(reduce).den == 1
elif T is SomeFloat:
ceil(x) - x <= tolerance
elif T is SomeInteger:
true
 
assert not NaN.is_integer
assert not INF.is_integer #ceil(INF)-INF = NaN
assert not -5e-2.is_integer
assert -2.1e120.is_integer
assert (25.0).is_integer
assert not 24.999999.is_integer
assert 24.999999.is_integer(tolerance = 0.00001)
assert not (1.0'f64 + epsilon(float64)).is_integer
assert not (1.0'f32 - epsilon(float32)).is_integer
#rationals
assert not (5 // 3).is_integer
assert (9 // 3).is_integer
assert (-143 // 13).is_integer
#unsigned
assert (3'u).is_integer
#complex
assert not (1.0 + im 1.0).is_integer
assert (5.0 + im 0.0).is_integer</lang>
 
=={{header|ooRexx}}==
Cookies help us deliver our services. By using our services, you agree to our use of cookies.