int test_kernel_left_pluq(size_t m, size_t n) { mzd_t* A = mzd_init(m, n); mzd_randomize(A); mzd_t *Acopy = mzd_copy(NULL, A); size_t r = mzd_echelonize_m4ri(A, 0, 0); printf("kernel_left m: %4zu, n: %4zu, r: %4zu ",m, n, r); mzd_free(Acopy); Acopy = mzd_copy(NULL, A); mzd_t *X = mzd_kernel_left_pluq(A, 0); if (X == NULL) { printf("passed\n"); mzd_free(A); mzd_free(Acopy); return 0; } mzd_t *Z = mzd_mul(NULL, Acopy, X, 0); int status = 1 - mzd_is_zero(Z); if (!status) printf("passed\n"); else printf("FAILED\n"); mzd_free(A); mzd_free(Acopy); mzd_free(X); mzd_free(Z); return status; }
/* * Class: m4rjni_Mzd * Method: mzd_kernel_left_pluq * Signature: (JI)J */ JNIEXPORT jlong JNICALL Java_m4rjni_Mzd_mzd_1kernel_1left_1pluq(JNIEnv *env, jobject obj, jlong ptr, jint cutoff) { mzd_t *M = (mzd_t*)ptr; if (M==NULL) return 0; return (jlong) mzd_kernel_left_pluq(M,cutoff); }