PS. eig(A'A) is typically going to be much faster (but less accurate) than svd(A), so I'm not sure why you say that the latter is faster. e.g. here are some sample timings (timing everything twice to avoid the initial compilation cost):
*julia>* A = rand(1000,200); *julia>* @time eig(A'A); @time eig(A'A); 0.790879 seconds (1.12 M allocations: 52.454 MB, 3.47% gc time) 0.027542 seconds (37 allocations: 1.294 MB) *julia>* @time svd(A); @time svd(A); 0.160237 seconds (90.29 k allocations: 8.908 MB) 0.079330 seconds (28 allocations: 4.908 MB) *julia>* @time svd(A'); @time svd(A'); 0.234619 seconds (107 allocations: 7.659 MB, 1.39% gc time) 0.234533 seconds (33 allocations: 7.655 MB)
