/machines/1RB0LC_0RC0RB_1LD0RE_0LE0LF_1LA0LB_1RA---/orbit_long.py · raw
"""orbit_long.py twin|tm1 N: iterate IncF (twin) or TM1's Inc from x0 for N Inc steps; print exits and progress."""
import sys, time
import os
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
sys.setrecursionlimit(10000)
import symexec as S
twin = sys.argv[1] == 'twin'
N = int(float(sys.argv[2]))
x = S.x0_c(); stats = {}
t = time.time()
exits = 0; lastex = None
maxlen = 0
try:
    for k in range(N):
        before = sum(v for kk, v in stats.items() if kk.startswith('EXIT'))
        S.inc_c(x, twin, stats)
        after = sum(v for kk, v in stats.items() if kk.startswith('EXIT'))
        if after != before:
            exits += 1; lastex = k + 1
        maxlen = max(maxlen, len(x[1]))
        if (k + 1) % 2000000 == 0:
            print(k + 1, 'exits', exits, 'last', lastex, 'len', len(x[1]), S.fmt_c(x, 8), '%.0fs' % (time.time() - t), flush=True)
except S.Inr as e:
    print('INR at', k + 1, e, S.fmt_c(x, 12))
except S.TouchedTail:
    print('tail touched', k + 1)
print('done', k + 1, 'exits', exits, 'lastexit', lastex, 'maxlen', maxlen, {kk: v for kk, v in stats.items() if kk.startswith('EXIT') or '<-' in kk or kk == 'D001T'})