import java.io.*;
public class GaussJordan {
double[][] coefficients;
int rows;
int columns;
public GaussJordan(int rows) throws IOException {
InputStreamReader stream = new InputStreamReader(System.in);
BufferedReader keyboard = new BufferedReader(stream);
this.rows = rows;
columns = rows+1;
coefficients = new double[rows][columns];
for (int counter=0;counter < rows;counter++)
for (int counter1=0;counter1 < columns;counter1++) {
System.out.println("Please enter coefficients[" + counter + "][" + counter1 + "]");
coefficients[counter][counter1] = new Double(keyboard.readLine()).doubleValue();
}
}
public void display_contents() {
String line="";
for (int counter=0;counter < rows;counter++) {
line = String.valueOf(coefficients[counter][0]);
for (int counter1=1;counter1 < columns;counter1++)
line += "\t" + String.valueOf(coefficients[counter][counter1]);
System.out.println(line);
}
}
public void elimination() {
for (int rowcounter=0;rowcounter <rows;rowcounter++) {
double temp = coefficients[rowcounter][rowcounter];
for (int columncounter=0;columncounter < columns;columncounter++)
coefficients[rowcounter][columncounter] /= temp;
for (int counter=rowcounter+1;counter < rows;counter++) {
temp = coefficients[counter][rowcounter];
for (int columncounter=0;columncounter < columns;columncounter++)
coefficients[counter][columncounter] += -1*temp*coefficients[rowcounter][columncounter];
}
}
for (int rowcounter=rows-1;rowcounter > =0;rowcounter--)
for (int counter=rowcounter-1;counter > =0;counter--) {
double temp = coefficients[counter][rowcounter];
for (int columncounter=0;columncounter < columns;columncounter++)
coefficients[counter][columncounter] += -1*temp*coefficients[rowcounter][columncounter];
}
}
public static void main(String[] args) throws IOException {
GaussJordan myGaussJordan = new GaussJordan(3);
myGaussJordan.elimination();
myGaussJordan.display_contents();
}
}