QStodo
=======

1. ***Check for duplicate ordinary relations
2. ***Make large prime cutoff table
3. ***Change sievediv to 1 for all but 60 digit factorizations or separate into tuning files
4. Make sieve look for additional relations if factorization fails
5. ***Set all LESS values to 0
6. ***Update old version of sieve to include new corrected polynomial choosing
7. ***Make better polynomial choosing code
8. ***Write ordinary relations to file
9. ***Fix all printf %d's etc
10. Make structures in memory smaller by using shorter data types
11. Pass pointers to structs to functions
12. Use structs instead of separated data types
13. Remove second copy of large prime check for negated value
14. ***Remove printf's from lanczos code
15. Ensure polynomial chooser can't pick wrong A factors
16. ***Count actual number of relations, not including duplicates
17. ***Check more often near end of sieving if we are done
18. ***Replace all errors with aborts
19. Replace all file operations with safe ones
20. Clean up after a run, i.e. free memory allocated
21. Introduce hash tables for computers with large caches
22. In candidate evaluation, multiply by inverses modulo a large prime instead of dividing out by each prime. (maybe not for version 0.99)
23. Adjust 4X sieve eval code for factorisations under 40 digits
24. Make reentrant and into a single callable function
25. Make parallelisable
26. Package output into factor tree
27. Integrate into Pari
28. Rename .cpp to .c and make compile with gcc
29. Integrate into FLINT makefile
30. Remove sievediv
31. ***Use unique filenames
32. Write README file

a. 
b. Optimise for other architectures
c. Comment code
d. 
e. 
f. 

I. ***Add single prime variant 
II. Add double prime variant
III. Optimize cache usage for larger factor bases 
IV. Implement SQUFOf, elliptic curve, pollard-brent, etc and make single factoring algorithm

*** Already done.

