# Set max iterations
INCREASE A
INCREASE A
REPEAT A TIMES ( INCREASE A )
REPEAT A TIMES ( INCREASE A )
REPEAT A TIMES ( INCREASE A )
REPEAT A TIMES ( INCREASE A )
#REPEAT A TIMES ( INCREASE A )
#REPEAT A TIMES ( INCREASE A )
INCREASE Z # Set main loop flag
REPEAT A TIMES (
REPEAT A TIMES (
REPEAT Z TIMES (
PRINT X
# check if X is even
# in X: number to check
# out E: number divided by 2
# out I: 1 if X == 1 else 0
# out F: 1 if number is odd, else 0
# out G: 1 if number is even, else 0
# uses H
CLEAR E
CLEAR F
CLEAR G INCREASE G
CLEAR H
CLEAR I INCREASE I
REPEAT X TIMES (
REPEAT G TIMES (
INCREASE H
CLEAR G
)
REPEAT F TIMES (
INCREASE E
INCREASE G
CLEAR F
CLEAR H
CLEAR I
)
REPEAT H TIMES (
INCREASE F
)
)
# if one, clear Z
REPEAT I TIMES (
CLEAR Z
CLEAR F # prevent odd branch from running
)
# if even, set X = E
REPEAT G TIMES (
CLEAR X
REPEAT E TIMES (
INCREASE X
)
)
# if odd, do X += 2X + 1
REPEAT F TIMES (
REPEAT X TIMES (
INCREASE X
INCREASE X
)
INCREASE X
)
) ) )