Answer fractional powers of exact numbers past a double's range (closes #16)
check / check (push) Successful in 1m21s
check / check (push) Successful in 1m21s
A fractional power turned its base into a double first and refused a base outside the normal range of a double, so (2^1200)^0.5, (2^1024)^0.5, (2^-1200)^0.5 and 1e400^0.5 were refused although each answer is an ordinary double. Such a base is now brought into that range by square roots taken from its exact value in a big.Float, at most three under the 4096-bit limit, with the exponent doubled for each, and only a result that is not a normal double is refused. The tests give these powers and the edges of the range their values, and the bounded-work test covers a base that needs three roots. The README's refusal sentence and example are updated. Model: opus-5-5
This commit is contained in:
@@ -438,8 +438,11 @@ container.
|
||||
`4.9406564584124654e-324`. Refused as too large or too small: any
|
||||
number whose numerator or denominator reaches 4096 bits, wherever it
|
||||
appears, as `go/constant` rounds a fraction that grows that large
|
||||
(`2^4095`, `1e-1300 + 1`); and a power computed as a double whose base
|
||||
or result is outside the normal range of a double (`1e-400^0.5`).
|
||||
(`2^4095`, `1e-1300 + 1`); and a power computed as a double whose
|
||||
result is outside the normal range of a double (`2^1500.5`). The base
|
||||
of such a power may be outside that range: square roots taken from its
|
||||
exact value bring it inside first, so `(2^1200)^0.5` is
|
||||
`4.149515568880993e+180` and `1e-400^0.5` is `1e-200`.
|
||||
- **Failure is an exit.** If the chat client exits or the connection to
|
||||
it drops, the bot exits with an error and the container's restart
|
||||
policy starts both again. `SIGTERM` stops the bot, which stops the
|
||||
|
||||
Reference in New Issue
Block a user