public static double[][] getInverse(double[][] A){
		if(A.length != A[0].length)
			return null;
		if(getDet(A) == 0)
			return null;
		double T[][] = new double[A.length][A.length*2];
		double I[][] = generateIdentity(A.length);
		for(int i = 0; i<A.length; i++){
			for(int j = A.length; j<T[0].length; j++){
				T[i][j] = I[i][j-A.length];
			}
			for(int j = 0; j<A.length; j++){
				T[i][j] = A[i][j];
			}
		}
		T = rowReduce(T, A.length);
		for(int i = 0; i<A.length; i++){
			for(int j = A.length; j<T[0].length; j++){
				if(T[i][j] == -0)
					T[i][j] = T[i][j]*-1;
				I[i][j-A.length] = T[i][j];
			}
		}
		return I;
	}