# Q = 1/9x + 110
INCREASE Q INCREASE Q INCREASE Q INCREASE Q INCREASE Q # 5
REPEAT Q TIMES ( INCREASE Q ) # Q=10
REPEAT Q TIMES ( INCREASE Q INCREASE Q INCREASE Q INCREASE T INCREASE T INCREASE T ) # Q=40, T=30
REPEAT Q TIMES ( INCREASE Q ) # Q=80, T=30
REPEAT T TIMES ( INCREASE Q ) # Q=110
# Shift WER, one shift of WER => shift of DFG
INCREASE W
INCREASE D
REPEAT X TIMES (
REPEAT R TIMES ( CLEAR R INCREASE W
REPEAT G TIMES ( CLEAR G INCREASE D INCREASE Q )
REPEAT F TIMES ( CLEAR F INCREASE G )
REPEAT D TIMES ( CLEAR D INCREASE F )
)
REPEAT E TIMES ( CLEAR E INCREASE R )
REPEAT W TIMES ( CLEAR W INCREASE E )
)
CLEAR S # s <= (x > 0)
CLEAR L
CLEAR M
INCREASE M
REPEAT X TIMES (
REPEAT L TIMES ( CLEAR L INCREASE S )
REPEAT M TIMES ( CLEAR M INCREASE L )
)
PRINT X
REPEAT Q TIMES (
# if x > 1
REPEAT S TIMES (
# o: store x / 2 for quick access
CLEAR O
# a: even
# b: odd
CLEAR A
INCREASE A
CLEAR B
REPEAT X TIMES (
CLEAR T # copy t <= b
REPEAT B TIMES ( INCREASE T )
# flip-flop a/b
# if a, if b
REPEAT A TIMES ( CLEAR A INCREASE B )
REPEAT T TIMES ( CLEAR B INCREASE A INCREASE O )
)
# if a
REPEAT A TIMES (
# out alrdy has x / 2
# copy x <= out
CLEAR X
REPEAT O TIMES ( INCREASE X )
CLEAR S # s <= (x > 0)
CLEAR L
CLEAR M
INCREASE M
REPEAT X TIMES (
REPEAT L TIMES ( CLEAR L INCREASE S )
REPEAT M TIMES ( CLEAR M INCREASE L )
)
)
# else (if b)
REPEAT B TIMES (
# out alrdy has x / 2
# add x <= o
REPEAT O TIMES ( INCREASE X )
# x *= 2
REPEAT X TIMES ( INCREASE X )
# x += 1
INCREASE X
INCREASE X
)
PRINT X
)
)
#EOF