The answer to this question will most probably be a definite no. Nevertheless, I would like to know whether it is possible to represent reals in the memory on less than the standard 32 or 64 bits (depending on machine). This limits my exploration to $\sim 2^{14} \times2^{14}$ matrices, though with half or quarter precision I could venture a bit further. The matrix itself cannot be broken down to smaller pieces for further compuation, and it cannot be reworked to a simpler one, but high precision is of no importance. The question is not about refactoring matrices but about number representation and memory handling by Mathematica.
Warning, the following computation may eat through your memory limits.
n = 14;
all = (2^n)*(2^n);
m = RandomReal[{0, 1}, {2^n, 2^n}];
{all, (ByteCount@m/1024./1024) "MB", ((ByteCount@m/all*8.) // N) "bit"}
ClearAll[m];
{268435456, 1024. "MB", 64. "bit"}
I am using 64-bit Win7, with 2 GB RAM, and (expectedly) my system almost chokes on this code. And then of course I hadn't calculated anything with the matrix yet...
SetPrecisiona try. But for a single float, this increases the memory usage from 24byte to 72byte. – Stefan Apr 04 '13 at 09:51SetPrecisionpracticly applies a tenfold increase in bytes... I should have said "lower" instead of "change" at the first place :) – István Zachar Apr 04 '13 at 10:07Integers are also represented on 64 bits on my machine. – István Zachar Apr 04 '13 at 10:50