1. A computer implemented method for mathematical calculation with values capable of representation as a sparse matrix of data, comprising providing a computer having a first processor and a plurality of further processors capable of operating concurrently to execute threads of processing steps separately and without synchronisation; making a preliminary predetermination of a required number of values to be stored for each line of the matrix, the required number being less than the length of the line; followed by: (a) for each line of the sparse matrix, storing in computer memory the non-zero values from that line of the matrix and also a number of null or zero values, such that the overall number of stored values for the line is the required number predetermined before storing the values, and (b) storing in computer memory indices denoting the position in the line of the stored values wherein the method includes at least one of (i) computing a plurality of the values in the matrix concurrently and (ii) computing using a plurality of the values in the matrix concurrently, the said computing concurrently comprising allocating the computing of or use of stored values to processing threads and performing the threads with a plurality of the said further processors operating in parallel, with each processor executing one thread at a time without synchronization with other processors and without control of the order of execution of the threads.