// Big_simeq.java solve simultaneous equations AX=Y // solve real linear equations for X where Y = A * X // method: Gauss-Jordan elimination using maximum pivot // usage: Big_simeq(A,Y,X); or Big_simeq(n,A,Y,X) // Translated to java by : Jon Squire , 26 March 2003 // First written by Jon Squire December 1959 for IBM 650, translated to // other languages e.g. Fortran converted to Ada converted to C // then converted to java, converted to BigDecimal import java.math.BigDecimal; public class Big_simeq { int nbits = 332; // default bits presision, 100 digits Big_simeq(final BigDecimal A[][], final BigDecimal Y[], BigDecimal X[], int nbit) { nbits = nbit; new Big_simeq(A, Y, X); } Big_simeq(final BigDecimal A[][], final BigDecimal Y[], BigDecimal X[]) { int n=A.length; BigDecimal B[][] = new BigDecimal[n][n+1]; // working matrix if(A[0].length!=n || Y.length!=n || X.length!=n) { System.out.println("Error in Big_simeq, inconsistent array sizes."); } // build working data structure for(int i=0; i0) { I_pivot = i; pivot = B[row[i]][k]; abs_pivot = pivot.abs(); } } // have pivot, interchange row indicies hold = row[k]; row[k] = row[I_pivot]; row[I_pivot] = hold; // check for near singular if(abs_pivot.compareTo(new BigDecimal(1.0E-99))<0) { for(int j=k+1; j