FloatExponent
Description
Read the base-10 exponent of a float.
Parameters
| Name | Direction | Description |
|---|---|---|
value |
in | Float to inspect |
Usage example (from documentation)
i64 exp = FloatExponent(&value);Success
Returns the decimal exponent used by the normalized representation.
Failure
Cannot fail.
Usage example (Cross-references)
Usage examples (Cross-references)
- In
Float.c:307:
}
i64 FloatExponent(const Float *value) {
ValidateFloat(value);
return value->exponent;- In
Compare.c:622:
// Construction guard: identical significand, exponents differ only in low
// byte (0 vs 2) -- the only hash input that changes is an exponent byte.
bool built_ok = (FloatExponent(&a) == 0) && (FloatExponent(&b) == 2);
bool distinct = float_hash(&a, 0) != float_hash(&b, 0);- In
Type.c:23:
bool result = FloatIsZero(&value);
result = result && !FloatIsNegative(&value);
result = result && (FloatExponent(&value) == 0);
FloatDeinit(&value);- In
Type.c:41:
bool result = FloatIsZero(&value);
result = result && !FloatIsNegative(&value);
result = result && (FloatExponent(&value) == 0);
FloatDeinit(&value);- In
Type.c:117:
bool ok = FloatMul(&r, &zero, &big);
ok = ok && FloatIsZero(&r);
ok = ok && (FloatExponent(&r) == 0);
FloatDeinit(&zero);- In
Type.c:314:
const i64 minexp = (i64)(-9223372036854775807LL - 1);
bool result = ok && (FloatExponent(&f) == minexp);
FloatDeinit(&f);- In
Type.c:337:
Str text = FloatToStr(&value);
bool result = (FloatExponent(&value) == 0);
result = result && (ZstrCompare(StrBegin(&text), "1152921504606846976") == 0);- In
Math.c:582:
bool ok = FloatMul(&r, &a, &b);
ok = ok && (FloatExponent(&r) == INT64_MAX);
FloatDeinit(&a);- In
Math.c:604:
bool ok = FloatMul(&r, &a, &b);
ok = ok && (FloatExponent(&r) == INT64_MIN);
FloatDeinit(&a);- In
Math.c:627:
bool ok = FloatDiv(&r, &a, &b, 0);
ok = ok && (FloatExponent(&r) == INT64_MIN);
FloatDeinit(&a);- In
Math.c:649:
bool ok = FloatDiv(&r, &a, &b, 0);
ok = ok && (FloatExponent(&r) == INT64_MAX);
FloatDeinit(&a);- In
Convert.c:314:
// 100 == 1 * 10^2 after normalization.
bool result = FloatExponent(&value) == 2;
IntDeinit(&whole);- In
Convert.c:355:
Float value = FloatFrom(&whole, &alloc.base);
bool result = FloatExponent(&value) == 3;
FloatNegate(&value);- In
Convert.c:362:
result = result && FloatIsNegative(&value);
result = result && (ZstrCompare(StrBegin(&text), "-2000") == 0);
result = result && (FloatExponent(&value) == 3);
StrDeinit(&text);- In
Convert.c:378:
Float value = FloatFrom((u64)100, &alloc.base);
bool ok = FloatExponent(&value) == 2;
FloatDeinit(&value);- In
Convert.c:406:
Float value = FloatFrom((i64)-200, &alloc.base);
bool ok = FloatExponent(&value) == 2;
FloatDeinit(&value);- In
Convert.c:542:
// in a high byte (0 vs 256), so the only hash input that changes is an
// exponent byte above byte0.
bool built_ok = (FloatExponent(&a) == 0) && (FloatExponent(&b) == 256);
bool distinct = float_hash(&a, 0) != float_hash(&b, 0);- In
Convert.c:560:
Float b = FloatFromStr("1e1", &alloc.base); // exp 1
bool built_ok = (FloatExponent(&a) == 0) && (FloatExponent(&b) == 1);
bool distinct = float_hash(&a, 0) != float_hash(&b, 0);- In
Convert.c:630:
Int whole = IntFromStr("4503599627370496", &alloc.base);
bool result = (FloatExponent(&value) == 0);
result = result && (FloatCompare(&value, &whole) == 0);- In
Access.c:49:
bool test_float_exponent(void) {
WriteFmt("Testing FloatExponent\n");
DefaultAllocator alloc = DefaultAllocatorInit();- In
Access.c:55:
Float value = FloatFromStr("12.34", &alloc.base);
bool result = FloatExponent(&value) == -2;
FloatDeinit(&value);
Last updated on