// Minimal benchmark program for r3cts. #include #include #include "r3cts.h" int main(int argc, char **argv) { if (argc != 3) { fprintf(stderr, "Usage: %s 37123456 53\n" "37123456 is the number of constraints, and\n" "53 is the number of iterations.\n", argv[0]); return 1; } long n_constraints = atol(argv[1]); int n_iterations = atoi(argv[2]); r3_constraint *latest[2] = {0}; r3_system sys = { .n = 2, .latest = latest }; r3_constraint *cs = malloc(sizeof(*cs) * n_constraints); if (!cs) { perror("malloc"); return 1; } for (size_t i = 0; i < n_constraints; i++) { cs[i] = (r3_constraint){ 0, 1, i % 2 ? 0 : n_constraints % 2 ? n_constraints + i : n_constraints - i }; } int positions[2]; for (int j = 0; j < n_iterations; j++) { latest[0] = 0; latest[1] = 0; for (int i = 0; i < n_constraints; i++) { const char *err = r3_add_constraint(&sys, &cs[i]); if (err) { fprintf(stderr, "Error adding constraint %d: %s\n", i, err); free(cs); return 1; } } r3_solve_system(&sys, positions); } printf("%d %d\n", positions[0], positions[1]); free(cs); return 0; }