示例#1
0
文件: mat.c 项目: cciechad/brlcad
/**
 *			B N _ M A T _ I N V
 *
 * The matrix pointed at by "input" is inverted and stored in the area
 * pointed at by "output".
 *
 * Calls bu_bomb if matrix is singular.
 */
void
bn_mat_inv(register mat_t output, const mat_t input)
{
    if (bn_mat_inverse(output, input) == 0)  {
	bu_log("bn_mat_inv:  error!");
	bn_mat_print("singular matrix", input);
	bu_bomb("bn_mat_inv: singular matrix\n");
	/* NOTREACHED */
    }
}
示例#2
0
文件: bn_mat.c 项目: kanzure/brlcad
static int
test_bn_mat_inverse(int argc, char *argv[])
{
    mat_t m, expected, actual;
    int singular;

    sscanf(argv[2], "%d", &singular);
    if ((argc == 4 && !singular) || (argc != 4 && argc != 5)) {
	bu_exit(1, "<args> format: 0|1 M [expected_result] [%s]\n", argv[0]);
    }

    scan_mat_args(argv, 3, &m);
    if (!singular) {
	scan_mat_args(argv, 4, &expected);
    }

    if (!bn_mat_inverse(actual, m)) {
	return !singular;
    }

    return !mat_equal(expected, actual);
}