@Override public double dlange(java.lang.String norm, int m, int n, double[] a, int lda, double[] work) { return org.netlib.lapack.Dlange.dlange(norm, m, n, a, 0, lda, work, 0); }
@Override public double dlange(java.lang.String norm, int m, int n, double[] a, int _a_offset, int lda, double[] work, int _work_offset) { return org.netlib.lapack.Dlange.dlange(norm, m, n, a, _a_offset, lda, work, _work_offset); }
private static int check_solution(int N, int NRHS, double[] A1, int LDA, double[] B1, double[] B2, int LDB, double eps) { int info_solution; double Rnorm, Anorm, Xnorm, Bnorm; String norm = "I"; double alpha, beta; double[] work = new double[N]; alpha = 1.0; beta = -1.0; Xnorm = org.netlib.lapack.Dlange.dlange(norm, N, NRHS, B2, 0, LDB, work, 0); Anorm = org.netlib.lapack.Dlange.dlange(norm, N, N, A1, 0, LDA, work, 0); Bnorm = org.netlib.lapack.Dlange.dlange(norm, N, NRHS, B1, 0, LDB, work, 0); org.netlib.blas.Dgemm.dgemm("N", "N", N, NRHS, N, alpha, A1, 0, LDA, B2, 0, LDB, beta, B1, 0, LDB); Rnorm = org.netlib.lapack.Dlange.dlange(norm, N, NRHS, B1, 0, LDB, work, 0); System.out.print("============\n"); System.out.print("Checking the Residual of the solution \n"); System.out.print(String.format("-- ||Ax-B||_oo/((||A||_oo||x||_oo+||B||_oo).N.eps) = %e \n", Rnorm / ((Anorm * Xnorm + Bnorm) * N * eps))); if (Rnorm / ((Anorm * Xnorm + Bnorm) * N * eps) > 10.0) { System.out.print("-- The solution is suspicious ! \n"); info_solution = 1; } else { System.out.print("-- The solution is CORRECT ! \n"); info_solution = 0; } return info_solution; }
private static int check_solution(int N, int NRHS, double[] A1, int LDA, double[] B1, double[] B2, int LDB, double eps) { int info_solution; double Rnorm, Anorm, Xnorm, Bnorm; String norm = "I"; double alpha, beta; double[] work = new double[N]; alpha = 1.0; beta = -1.0; Xnorm = org.netlib.lapack.Dlange.dlange(norm, N, NRHS, B2, 0, LDB, work, 0); Anorm = org.netlib.lapack.Dlange.dlange(norm, N, N, A1, 0, LDA, work, 0); Bnorm = org.netlib.lapack.Dlange.dlange(norm, N, NRHS, B1, 0, LDB, work, 0); org.netlib.blas.Dgemm.dgemm("N", "N", N, NRHS, N, alpha, A1, 0, LDA, B2, 0, LDB, beta, B1, 0, LDB); Rnorm = org.netlib.lapack.Dlange.dlange(norm, N, NRHS, B1, 0, LDB, work, 0); System.out.print("============\n"); System.out.print("Checking the Residual of the solution \n"); System.out.print(String.format("-- ||Ax-B||_oo/((||A||_oo||x||_oo+||B||_oo).N.eps) = %e \n", Rnorm / ((Anorm * Xnorm + Bnorm) * N * eps))); if (Rnorm / ((Anorm * Xnorm + Bnorm) * N * eps) > 10.0) { System.out.print("-- The solution is suspicious ! \n"); info_solution = 1; } else { System.out.print("-- The solution is CORRECT ! \n"); info_solution = 0; } return info_solution; }
private static int check_solution(int M, int N, int NRHS, double[] A1, int LDA, double[] B1, double[] B2, int LDB, double eps) { int info_solution; double Rnorm, Anorm, Xnorm, Bnorm; String norm = "I"; double alpha, beta; double[] work = new double[M]; alpha = 1.0; beta = -1.0; Anorm = org.netlib.lapack.Dlange.dlange(norm, M, N, A1, 0, LDA, work, 0); Xnorm = org.netlib.lapack.Dlange.dlange(norm, M, NRHS, B2, 0, LDB, work, 0); Bnorm = org.netlib.lapack.Dlange.dlange(norm, M, NRHS, B1, 0, LDB, work, 0); org.netlib.blas.Dgemm.dgemm("N", "N", M, NRHS, N, alpha, A1, 0, LDA, B2, 0, LDB, beta, B1, 0, LDB); double[] Residual = new double[M * NRHS]; org.netlib.blas.Dgemm.dgemm("T", "N", N, NRHS, M, alpha, A1, 0, LDA, B1, 0, LDB, beta, Residual, 0, M); Rnorm = org.netlib.lapack.Dlange.dlange(norm, M, NRHS, Residual, 0, M, work, 0); System.out.print("============\n"); System.out.print("Checking the Residual of the solution \n"); System.out.print(String.format("-- ||Ax-B||_oo/((||A||_oo||x||_oo+||B||)_oo.N.eps) = %e \n", Rnorm / ((Anorm * Xnorm + Bnorm) * N * eps))); if (Rnorm / ((Anorm * Xnorm + Bnorm) * N * eps) > 10.0) { System.out.print("-- The solution is suspicious ! \n"); info_solution = 1; } else { System.out.print("-- The solution is CORRECT ! \n"); info_solution = 0; } return info_solution; }