# Generated by using Rcpp::compileAttributes() -> do not edit by hand
# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393

lap_prepare_cost_matrix <- function(cost, maximize) {
    .Call(`_couplr_lap_prepare_cost_matrix`, cost, maximize)
}

lap_solve_bruteforce <- function(cost, maximize) {
    .Call(`_couplr_lap_solve_bruteforce`, cost, maximize)
}

lap_solve_jv <- function(cost, maximize) {
    .Call(`_couplr_lap_solve_jv`, cost, maximize)
}

cpp_lap_solve_jv_lazy <- function(left_mat, right_mat, metric, inv_cov, max_distance, calipers, var_names, maximize) {
    .Call(`_couplr_cpp_lap_solve_jv_lazy`, left_mat, right_mat, metric, inv_cov, max_distance, calipers, var_names, maximize)
}

cpp_lap_solve_auction_lazy <- function(left_mat, right_mat, metric, inv_cov, max_distance, calipers, var_names, maximize, eps = NULL) {
    .Call(`_couplr_cpp_lap_solve_auction_lazy`, left_mat, right_mat, metric, inv_cov, max_distance, calipers, var_names, maximize, eps)
}

lap_kbest_murty <- function(cost, k, maximize, single_method = "jv") {
    .Call(`_couplr_lap_kbest_murty`, cost, k, maximize, single_method)
}

lap_solve_auction <- function(cost, maximize, eps = NULL) {
    .Call(`_couplr_lap_solve_auction`, cost, maximize, eps)
}

lap_solve_auction_scaled <- function(cost, maximize, schedule = "alpha7") {
    .Call(`_couplr_lap_solve_auction_scaled`, cost, maximize, schedule)
}

lap_solve_auction_scaled_params <- function(cost, maximize, initial_epsilon_factor = 1.0, alpha = 7.0, final_epsilon = NULL) {
    .Call(`_couplr_lap_solve_auction_scaled_params`, cost, maximize, initial_epsilon_factor, alpha, final_epsilon)
}

lap_solve_auction_gs <- function(cost, maximize, eps = NULL) {
    .Call(`_couplr_lap_solve_auction_gs`, cost, maximize, eps)
}

lap_solve_ssp <- function(cost, maximize) {
    .Call(`_couplr_lap_solve_ssp`, cost, maximize)
}

lap_solve_hungarian <- function(cost, maximize) {
    .Call(`_couplr_lap_solve_hungarian`, cost, maximize)
}

lap_solve_munkres <- function(cost, maximize) {
    .Call(`_couplr_lap_solve_munkres`, cost, maximize)
}

lap_solve_csflow <- function(cost, maximize) {
    .Call(`_couplr_lap_solve_csflow`, cost, maximize)
}

lap_kbest_lawler <- function(cost, k, method_base = "jv", maximize = FALSE) {
    .Call(`_couplr_lap_kbest_lawler`, cost, k, method_base, maximize)
}

lap_solve_hk01 <- function(cost, maximize) {
    .Call(`_couplr_lap_solve_hk01`, cost, maximize)
}

lap_solve_line_metric_cpp <- function(x, y, cost = "L1", maximize = FALSE) {
    .Call(`_couplr_lap_solve_line_metric_cpp`, x, y, cost, maximize)
}

lap_solve_ssap_bucket <- function(cost, maximize) {
    .Call(`_couplr_lap_solve_ssap_bucket`, cost, maximize)
}

lap_solve_gabow_tarjan <- function(cost, maximize) {
    .Call(`_couplr_lap_solve_gabow_tarjan`, cost, maximize)
}

lap_solve_lapmod <- function(cost, maximize) {
    .Call(`_couplr_lap_solve_lapmod`, cost, maximize)
}

lap_solve_bottleneck <- function(cost, maximize) {
    .Call(`_couplr_lap_solve_bottleneck`, cost, maximize)
}

lap_solve_csa <- function(cost, maximize) {
    .Call(`_couplr_lap_solve_csa`, cost, maximize)
}

lap_solve_sinkhorn <- function(cost, lambda = 10.0, tol = 1e-9, max_iter = 1000L, r_weights = NULL, c_weights = NULL) {
    .Call(`_couplr_lap_solve_sinkhorn`, cost, lambda, tol, max_iter, r_weights, c_weights)
}

sinkhorn_round <- function(P) {
    .Call(`_couplr_sinkhorn_round`, P)
}

lap_solve_ramshaw_tarjan <- function(cost, maximize) {
    .Call(`_couplr_lap_solve_ramshaw_tarjan`, cost, maximize)
}

lap_solve_push_relabel <- function(cost, maximize) {
    .Call(`_couplr_lap_solve_push_relabel`, cost, maximize)
}

lap_solve_jv_duals <- function(cost, maximize) {
    .Call(`_couplr_lap_solve_jv_duals`, cost, maximize)
}

lap_solve_network_simplex <- function(cost) {
    .Call(`_couplr_lap_solve_network_simplex`, cost)
}

lap_solve_full_matching <- function(cost, min_controls, max_controls_val) {
    .Call(`_couplr_lap_solve_full_matching`, cost, min_controls, max_controls_val)
}

greedy_matching <- function(cost_matrix, maximize = FALSE, strategy = "row_best") {
    .Call(`_couplr_greedy_matching`, cost_matrix, maximize, strategy)
}

analyze_color_overlap_cpp <- function(pixelsA, pixelsB, H, W, quantize_bits = 5L) {
    .Call(`_couplr_analyze_color_overlap_cpp`, pixelsA, pixelsB, H, W, quantize_bits)
}

compute_pixel_cost_cpp <- function(pixelsA, pixelsB, H, W, alpha, beta) {
    .Call(`_couplr_compute_pixel_cost_cpp`, pixelsA, pixelsB, H, W, alpha, beta)
}

downscale_image_cpp <- function(pixels, H, W, H_new, W_new) {
    .Call(`_couplr_downscale_image_cpp`, pixels, H, W, H_new, W_new)
}

upscale_assignment_cpp <- function(assignment, H_orig, W_orig, H_scaled, W_scaled) {
    .Call(`_couplr_upscale_assignment_cpp`, assignment, H_orig, W_orig, H_scaled, W_scaled)
}

morph_pixel_level_cpp <- function(pixelsA, pixelsB, assignment, H, W, n_frames) {
    .Call(`_couplr_morph_pixel_level_cpp`, pixelsA, pixelsB, assignment, H, W, n_frames)
}

color_palette_info_cpp <- function(pixelsA, pixelsB, H, W, quantize_bits = 5L) {
    .Call(`_couplr_color_palette_info_cpp`, pixelsA, pixelsB, H, W, quantize_bits)
}

spatial_cost_matrix_cpp <- function(idxA, idxB, H, W) {
    .Call(`_couplr_spatial_cost_matrix_cpp`, idxA, idxB, H, W)
}

lap_solve_cycle_cancel <- function(cost, maximize) {
    .Call(`_couplr_lap_solve_cycle_cancel`, cost, maximize)
}

oa_solve <- function(cost_r, alpha = 5.0, auction_rounds = 10L) {
    .Call(`_couplr_oa_solve`, cost_r, alpha, auction_rounds)
}

gt_cost_length <- function(c_ij, in_matching) {
    .Call(`_couplr_gt_cost_length`, c_ij, in_matching)
}

gt_is_eligible <- function(c_ij, in_matching, y_u, y_v) {
    .Call(`_couplr_gt_is_eligible`, c_ij, in_matching, y_u, y_v)
}

gt_check_one_feasible <- function(cost, row_match, col_match, y_u, y_v) {
    .Call(`_couplr_gt_check_one_feasible`, cost, row_match, col_match, y_u, y_v)
}

gt_build_equality_graph <- function(cost, row_match, y_u, y_v) {
    .Call(`_couplr_gt_build_equality_graph`, cost, row_match, y_u, y_v)
}

gt_augment_along_path <- function(edges, row_match, col_match) {
    .Call(`_couplr_gt_augment_along_path`, edges, row_match, col_match)
}

gt_find_maximal_augmenting_paths <- function(eq_graph, row_match, col_match) {
    .Call(`_couplr_gt_find_maximal_augmenting_paths`, eq_graph, row_match, col_match)
}

gt_hungarian_step_one_feasible <- function(cost, row_match, col_match, y_u, y_v) {
    .Call(`_couplr_gt_hungarian_step_one_feasible`, cost, row_match, col_match, y_u, y_v)
}

gt_match_gt <- function(cost, row_match = NULL, col_match = NULL, y_u = NULL, y_v = NULL, max_iters = 1000L, check_feasible = FALSE) {
    .Call(`_couplr_gt_match_gt`, cost, row_match, col_match, y_u, y_v, max_iters, check_feasible)
}

scale_match_cpp <- function(cost, row_match = NULL, col_match = NULL, y_u = NULL, y_v = NULL) {
    .Call(`_couplr_scale_match_cpp`, cost, row_match, col_match, y_u, y_v)
}

