The motivation for my question is the following: in one of Project Euler questions there is a need to count the spanning trees of a rectangular grid graph of dimension 100x500. By the Matrix-Tree theorem this number is equal to the determinant of the matrix obtained by taking the graph Laplacian and deleting its first row and column. The Laplacian is very sparse and positive definite, but it is a 50000x50000 matrix and it seemed to me not feasible to calculate the determinant with the required precision (5 significant digits in exponential notation: may be I am wrong here?).
I have found the following interesting reference
http://arXiv.org/abs/0712.0681v3
which permits to compute the determinant as the determinant of a 100x100 matrix obtained as the left upper corner of the product of 500 200x200 sparse matrices, using the fact that the Laplacian is block tridiagonal (and deriving from the Laplacian a nonsingular 50000x50000 matrix whose determinant is equal to the determinant of the Laplacian with the first row and column deleted), which seemed to be a good thing. However the resulting real 100x100 matrix is nonsymmetric, dense, has some very large entries and some very small (e^(- ...)) eigenvalues (I experimented with smaller grids). Because of the very small eigenvalues I am not sure that any of the numerical methods (Gaussian elimination, SVD etc) will work properly, if I don't keep all the digits of the entries of the matrix. But this means to work with arbitrary precision which is probably very slow.
My question is: does anyone know of a practical method which can be used in such situation to compute the determinant with the required precision (again, 5 significant digits in exponential notation)?
I know the answer to the original Project Euler problem in the form of product of trigonometric terms, so really my interest is not in the solution itself but in these linear algebra questions which come out naturally when I try to apply the Matrix-Tree theorem directly.