The code below works, but when I try to run it using P17 the compiler throws an error about the `gcd` proc. Using P17 causes `gcd` to be called on the order of 250,000 times, as `modpg = 510510`
Here's the code. # Create constant parameters for chosen PG at compile time proc genPGparameters(prime: int): (int, int, int, seq[int]) = echo("generating parameters for P", prime) let primes = [2, 3, 5, 7, 11, 13, 17, 19, 23] var modpg = 1; var excluded_primescnt = 0 for prm in primes: excluded_primescnt += 1; modpg *= prm; if prm == prime: break var pc = 3; var residues: seq[int]; residues = @[] while pc < modpg: if gcd(modpg, pc) == 1: residues.add(pc) pc += 2 residues.add(modpg + 1) let rescnt = residues.len result = (modpg, rescnt, excluded_primescnt, residues) # Generate at compile time the parameters for P17 const parameters = genPGparameters(17) Here's the relevant compiler output. generating parameters for P17 stack trace: (most recent call last) ssozp17x1d5bparnew128.nim(59) ssozp17x1d5bparnew128.nim(52) genPGparameters lib/pure/math.nim(439) gcd lib/pure/math.nim(439, 15) Error: interpretation requires too many iterations ➜ nim I can't see how `gcd` could care how many times it's being called, so it seems it must be the compiler not liking it being called past a certain number. Whatever the reason, how do I get this code to finish compiling?