11.001001000011111101101010100010001000 Arithmazium
Home

This is an automatically generated file.

Part 1

Part 2

def has_sticky_bit():
    """Create a rounding situation designed to require a sticky bit.

    Returns:
        True if sticky detected, False otherwise
    """

Part 3

    verdict = False
    x = (ONE_HALF + ULP_OF_ONE_MINUS) * ULP_OF_ONE_PLUS
    y = ONE_HALF * ULP_OF_ONE_PLUS
    z = ONE + y
    t = ONE + x

Part 4

    if (z - ONE <= ZERO) and (t - ONE >= ULP_OF_ONE_PLUS):
        z = t + y
        y = z - x

Part 5

        if (z - t >= ULP_OF_ONE_PLUS) and (y - t == ZERO):
            x = (ONE_HALF + ULP_OF_ONE_MINUS) * ULP_OF_ONE_MINUS
            y = ONE_HALF * ULP_OF_ONE_MINUS
            z = ONE - y
            t = ONE - x

Part 6

            if (z - ONE == ZERO) and (t - ONE_MINUS_ULP == ZERO):
                z = (ONE_HALF - ULP_OF_ONE_MINUS) * ULP_OF_ONE_MINUS
                t = ONE_MINUS_ULP - z
                q = ONE_MINUS_ULP - y

Part 7

                if ((t - ONE_MINUS_ULP == ZERO)
                        and (ONE_MINUS_ULP - ULP_OF_ONE_MINUS - q == ZERO)):
                    z = (ONE + ULP_OF_ONE_PLUS) * ONE_AND_HALF
                    t = (ONE_AND_HALF + ULP_OF_ONE_PLUS) - z + ULP_OF_ONE_PLUS
                    x = ONE + ONE_HALF / B
                    y = ONE + B * ULP_OF_ONE_PLUS
                    z = x * y

Part 8

                    if (t == ZERO) and (x + B * ULP_OF_ONE_PLUS - z == ZERO):
                        if (B != TWO):
                            x = TWO + ULP_OF_ONE_PLUS
                            y = x / TWO
                            if (y - ONE) == ZERO:
                                verdict = True
                        else:
                            verdict = True

Part 9

    return verdict


Part 10

Home