I’m using Arpack.jl to get the lowest few eigenvalues of relatively large N x N matrices. To achive this, I’m first cal sparse(row, col, data) to get the matrix to the appropriate form. Although the matrices I’m working on are large, N should be representable with UInt32, i.e., smaller than 2^32, so this is what I’m using as the type of row and col to save some memory.
So far so good - but I get problems when the number of entries in my matrix is larger than 2^32. In this case I get an error saying that the IndexType is too small and I should use something larger. They way I understand this is because the IndexType is automatically inferred from the provided arrays row and col. Straightforwardly, this can be fixed by simply using UInt64 or any larger type - but this requires quite a bit more memory because instead of two lists of UInt32 I now have to store two long lists of a larger type. Is there a way to specify the IndexType separately? If not: what is the (technical?) reason for this type of implementation?
Or, perhaps, did I understand something completely wrong here? Any help is appreciated - thanks!