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

#include <Rcpp.h>

using namespace Rcpp;

#ifdef RCPP_USE_GLOBAL_ROSTREAM
Rcpp::Rostream<true>&  Rcpp::Rcout = Rcpp::Rcpp_cout_get();
Rcpp::Rostream<false>& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get();
#endif

// grip_optimize_edge_isometric_layout_cpp
Rcpp::List grip_optimize_edge_isometric_layout_cpp(Rcpp::IntegerMatrix edges, Rcpp::NumericVector edge_weights, Rcpp::NumericMatrix stiffness_matrix, Rcpp::NumericVector mix_schedule, Rcpp::NumericMatrix coords, int max_iter, std::string scale_mode, double scale, double edge_length_epsilon, double initial_step, double step_shrink, double armijo_factor, double grad_tol, double min_step, double distance_floor, bool recenter, bool return_trace);
RcppExport SEXP _grip_grip_optimize_edge_isometric_layout_cpp(SEXP edgesSEXP, SEXP edge_weightsSEXP, SEXP stiffness_matrixSEXP, SEXP mix_scheduleSEXP, SEXP coordsSEXP, SEXP max_iterSEXP, SEXP scale_modeSEXP, SEXP scaleSEXP, SEXP edge_length_epsilonSEXP, SEXP initial_stepSEXP, SEXP step_shrinkSEXP, SEXP armijo_factorSEXP, SEXP grad_tolSEXP, SEXP min_stepSEXP, SEXP distance_floorSEXP, SEXP recenterSEXP, SEXP return_traceSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::IntegerMatrix >::type edges(edgesSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type edge_weights(edge_weightsSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type stiffness_matrix(stiffness_matrixSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type mix_schedule(mix_scheduleSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type coords(coordsSEXP);
    Rcpp::traits::input_parameter< int >::type max_iter(max_iterSEXP);
    Rcpp::traits::input_parameter< std::string >::type scale_mode(scale_modeSEXP);
    Rcpp::traits::input_parameter< double >::type scale(scaleSEXP);
    Rcpp::traits::input_parameter< double >::type edge_length_epsilon(edge_length_epsilonSEXP);
    Rcpp::traits::input_parameter< double >::type initial_step(initial_stepSEXP);
    Rcpp::traits::input_parameter< double >::type step_shrink(step_shrinkSEXP);
    Rcpp::traits::input_parameter< double >::type armijo_factor(armijo_factorSEXP);
    Rcpp::traits::input_parameter< double >::type grad_tol(grad_tolSEXP);
    Rcpp::traits::input_parameter< double >::type min_step(min_stepSEXP);
    Rcpp::traits::input_parameter< double >::type distance_floor(distance_floorSEXP);
    Rcpp::traits::input_parameter< bool >::type recenter(recenterSEXP);
    Rcpp::traits::input_parameter< bool >::type return_trace(return_traceSEXP);
    rcpp_result_gen = Rcpp::wrap(grip_optimize_edge_isometric_layout_cpp(edges, edge_weights, stiffness_matrix, mix_schedule, coords, max_iter, scale_mode, scale, edge_length_epsilon, initial_step, step_shrink, armijo_factor, grad_tol, min_step, distance_floor, recenter, return_trace));
    return rcpp_result_gen;
END_RCPP
}
// grip_edge_repulsive_state_cpp
List grip_edge_repulsive_state_cpp(NumericMatrix coords, IntegerMatrix edges, NumericVector edge_lengths, NumericVector edge_weights, std::string edge_family, double eps_plus, double beta, double lambda, IntegerMatrix pair_index, NumericVector pair_weights, std::string repulsion_family, double repulsion_delta, double repulsion_power, double distance_eps);
RcppExport SEXP _grip_grip_edge_repulsive_state_cpp(SEXP coordsSEXP, SEXP edgesSEXP, SEXP edge_lengthsSEXP, SEXP edge_weightsSEXP, SEXP edge_familySEXP, SEXP eps_plusSEXP, SEXP betaSEXP, SEXP lambdaSEXP, SEXP pair_indexSEXP, SEXP pair_weightsSEXP, SEXP repulsion_familySEXP, SEXP repulsion_deltaSEXP, SEXP repulsion_powerSEXP, SEXP distance_epsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type coords(coordsSEXP);
    Rcpp::traits::input_parameter< IntegerMatrix >::type edges(edgesSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type edge_lengths(edge_lengthsSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type edge_weights(edge_weightsSEXP);
    Rcpp::traits::input_parameter< std::string >::type edge_family(edge_familySEXP);
    Rcpp::traits::input_parameter< double >::type eps_plus(eps_plusSEXP);
    Rcpp::traits::input_parameter< double >::type beta(betaSEXP);
    Rcpp::traits::input_parameter< double >::type lambda(lambdaSEXP);
    Rcpp::traits::input_parameter< IntegerMatrix >::type pair_index(pair_indexSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type pair_weights(pair_weightsSEXP);
    Rcpp::traits::input_parameter< std::string >::type repulsion_family(repulsion_familySEXP);
    Rcpp::traits::input_parameter< double >::type repulsion_delta(repulsion_deltaSEXP);
    Rcpp::traits::input_parameter< double >::type repulsion_power(repulsion_powerSEXP);
    Rcpp::traits::input_parameter< double >::type distance_eps(distance_epsSEXP);
    rcpp_result_gen = Rcpp::wrap(grip_edge_repulsive_state_cpp(coords, edges, edge_lengths, edge_weights, edge_family, eps_plus, beta, lambda, pair_index, pair_weights, repulsion_family, repulsion_delta, repulsion_power, distance_eps));
    return rcpp_result_gen;
END_RCPP
}
// grip_repulsive_state_cpp
List grip_repulsive_state_cpp(NumericMatrix coords, double lambda, IntegerMatrix pair_index, NumericVector pair_weights, std::string repulsion_family, double repulsion_delta, double repulsion_power, double distance_eps);
RcppExport SEXP _grip_grip_repulsive_state_cpp(SEXP coordsSEXP, SEXP lambdaSEXP, SEXP pair_indexSEXP, SEXP pair_weightsSEXP, SEXP repulsion_familySEXP, SEXP repulsion_deltaSEXP, SEXP repulsion_powerSEXP, SEXP distance_epsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type coords(coordsSEXP);
    Rcpp::traits::input_parameter< double >::type lambda(lambdaSEXP);
    Rcpp::traits::input_parameter< IntegerMatrix >::type pair_index(pair_indexSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type pair_weights(pair_weightsSEXP);
    Rcpp::traits::input_parameter< std::string >::type repulsion_family(repulsion_familySEXP);
    Rcpp::traits::input_parameter< double >::type repulsion_delta(repulsion_deltaSEXP);
    Rcpp::traits::input_parameter< double >::type repulsion_power(repulsion_powerSEXP);
    Rcpp::traits::input_parameter< double >::type distance_eps(distance_epsSEXP);
    rcpp_result_gen = Rcpp::wrap(grip_repulsive_state_cpp(coords, lambda, pair_index, pair_weights, repulsion_family, repulsion_delta, repulsion_power, distance_eps));
    return rcpp_result_gen;
END_RCPP
}
// grip_optimize_edge_repulsive_stage_cpp
List grip_optimize_edge_repulsive_stage_cpp(NumericMatrix coords, IntegerMatrix edges, NumericVector edge_lengths, NumericVector edge_weights, double lambda, std::string edge_family, double eps_plus, double beta, IntegerMatrix pair_index, NumericVector pair_weights, std::string repulsion_family, double repulsion_delta, double repulsion_power, int max_iter, double initial_step, double step_shrink, double armijo, double min_step, double grad_tol, bool recenter, double distance_eps, bool return_frames);
RcppExport SEXP _grip_grip_optimize_edge_repulsive_stage_cpp(SEXP coordsSEXP, SEXP edgesSEXP, SEXP edge_lengthsSEXP, SEXP edge_weightsSEXP, SEXP lambdaSEXP, SEXP edge_familySEXP, SEXP eps_plusSEXP, SEXP betaSEXP, SEXP pair_indexSEXP, SEXP pair_weightsSEXP, SEXP repulsion_familySEXP, SEXP repulsion_deltaSEXP, SEXP repulsion_powerSEXP, SEXP max_iterSEXP, SEXP initial_stepSEXP, SEXP step_shrinkSEXP, SEXP armijoSEXP, SEXP min_stepSEXP, SEXP grad_tolSEXP, SEXP recenterSEXP, SEXP distance_epsSEXP, SEXP return_framesSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type coords(coordsSEXP);
    Rcpp::traits::input_parameter< IntegerMatrix >::type edges(edgesSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type edge_lengths(edge_lengthsSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type edge_weights(edge_weightsSEXP);
    Rcpp::traits::input_parameter< double >::type lambda(lambdaSEXP);
    Rcpp::traits::input_parameter< std::string >::type edge_family(edge_familySEXP);
    Rcpp::traits::input_parameter< double >::type eps_plus(eps_plusSEXP);
    Rcpp::traits::input_parameter< double >::type beta(betaSEXP);
    Rcpp::traits::input_parameter< IntegerMatrix >::type pair_index(pair_indexSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type pair_weights(pair_weightsSEXP);
    Rcpp::traits::input_parameter< std::string >::type repulsion_family(repulsion_familySEXP);
    Rcpp::traits::input_parameter< double >::type repulsion_delta(repulsion_deltaSEXP);
    Rcpp::traits::input_parameter< double >::type repulsion_power(repulsion_powerSEXP);
    Rcpp::traits::input_parameter< int >::type max_iter(max_iterSEXP);
    Rcpp::traits::input_parameter< double >::type initial_step(initial_stepSEXP);
    Rcpp::traits::input_parameter< double >::type step_shrink(step_shrinkSEXP);
    Rcpp::traits::input_parameter< double >::type armijo(armijoSEXP);
    Rcpp::traits::input_parameter< double >::type min_step(min_stepSEXP);
    Rcpp::traits::input_parameter< double >::type grad_tol(grad_tolSEXP);
    Rcpp::traits::input_parameter< bool >::type recenter(recenterSEXP);
    Rcpp::traits::input_parameter< double >::type distance_eps(distance_epsSEXP);
    Rcpp::traits::input_parameter< bool >::type return_frames(return_framesSEXP);
    rcpp_result_gen = Rcpp::wrap(grip_optimize_edge_repulsive_stage_cpp(coords, edges, edge_lengths, edge_weights, lambda, edge_family, eps_plus, beta, pair_index, pair_weights, repulsion_family, repulsion_delta, repulsion_power, max_iter, initial_step, step_shrink, armijo, min_step, grad_tol, recenter, distance_eps, return_frames));
    return rcpp_result_gen;
END_RCPP
}
// grip_optimize_repulsive_stage_cpp
List grip_optimize_repulsive_stage_cpp(NumericMatrix coords, double lambda, IntegerMatrix pair_index, NumericVector pair_weights, std::string repulsion_family, double repulsion_delta, double repulsion_power, int max_iter, double initial_step, double step_shrink, double armijo, double min_step, double grad_tol, bool recenter, double distance_eps, bool return_frames);
RcppExport SEXP _grip_grip_optimize_repulsive_stage_cpp(SEXP coordsSEXP, SEXP lambdaSEXP, SEXP pair_indexSEXP, SEXP pair_weightsSEXP, SEXP repulsion_familySEXP, SEXP repulsion_deltaSEXP, SEXP repulsion_powerSEXP, SEXP max_iterSEXP, SEXP initial_stepSEXP, SEXP step_shrinkSEXP, SEXP armijoSEXP, SEXP min_stepSEXP, SEXP grad_tolSEXP, SEXP recenterSEXP, SEXP distance_epsSEXP, SEXP return_framesSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type coords(coordsSEXP);
    Rcpp::traits::input_parameter< double >::type lambda(lambdaSEXP);
    Rcpp::traits::input_parameter< IntegerMatrix >::type pair_index(pair_indexSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type pair_weights(pair_weightsSEXP);
    Rcpp::traits::input_parameter< std::string >::type repulsion_family(repulsion_familySEXP);
    Rcpp::traits::input_parameter< double >::type repulsion_delta(repulsion_deltaSEXP);
    Rcpp::traits::input_parameter< double >::type repulsion_power(repulsion_powerSEXP);
    Rcpp::traits::input_parameter< int >::type max_iter(max_iterSEXP);
    Rcpp::traits::input_parameter< double >::type initial_step(initial_stepSEXP);
    Rcpp::traits::input_parameter< double >::type step_shrink(step_shrinkSEXP);
    Rcpp::traits::input_parameter< double >::type armijo(armijoSEXP);
    Rcpp::traits::input_parameter< double >::type min_step(min_stepSEXP);
    Rcpp::traits::input_parameter< double >::type grad_tol(grad_tolSEXP);
    Rcpp::traits::input_parameter< bool >::type recenter(recenterSEXP);
    Rcpp::traits::input_parameter< double >::type distance_eps(distance_epsSEXP);
    Rcpp::traits::input_parameter< bool >::type return_frames(return_framesSEXP);
    rcpp_result_gen = Rcpp::wrap(grip_optimize_repulsive_stage_cpp(coords, lambda, pair_index, pair_weights, repulsion_family, repulsion_delta, repulsion_power, max_iter, initial_step, step_shrink, armijo, min_step, grad_tol, recenter, distance_eps, return_frames));
    return rcpp_result_gen;
END_RCPP
}
// grip_optimize_geodesic_mds_flat_bending_cpp
Rcpp::List grip_optimize_geodesic_mds_flat_bending_cpp(Rcpp::IntegerVector flat_pair_edge_offsets, Rcpp::IntegerVector flat_edge_u, Rcpp::IntegerVector flat_edge_v, Rcpp::NumericVector flat_edge_coeff, Rcpp::NumericVector pair_graph_distance, Rcpp::NumericMatrix coords, int max_iter, double edge_length_epsilon, double initial_step, double step_shrink, double armijo_factor, double grad_tol, double min_step, bool recenter, bool return_trace, Rcpp::Nullable<Rcpp::NumericMatrix> anchor_coords, Rcpp::Nullable<Rcpp::NumericVector> anchor_weights, Rcpp::IntegerVector bend_a, Rcpp::IntegerVector bend_b, Rcpp::IntegerVector bend_c, Rcpp::Nullable<Rcpp::NumericVector> bend_weights);
RcppExport SEXP _grip_grip_optimize_geodesic_mds_flat_bending_cpp(SEXP flat_pair_edge_offsetsSEXP, SEXP flat_edge_uSEXP, SEXP flat_edge_vSEXP, SEXP flat_edge_coeffSEXP, SEXP pair_graph_distanceSEXP, SEXP coordsSEXP, SEXP max_iterSEXP, SEXP edge_length_epsilonSEXP, SEXP initial_stepSEXP, SEXP step_shrinkSEXP, SEXP armijo_factorSEXP, SEXP grad_tolSEXP, SEXP min_stepSEXP, SEXP recenterSEXP, SEXP return_traceSEXP, SEXP anchor_coordsSEXP, SEXP anchor_weightsSEXP, SEXP bend_aSEXP, SEXP bend_bSEXP, SEXP bend_cSEXP, SEXP bend_weightsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type flat_pair_edge_offsets(flat_pair_edge_offsetsSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type flat_edge_u(flat_edge_uSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type flat_edge_v(flat_edge_vSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type flat_edge_coeff(flat_edge_coeffSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type pair_graph_distance(pair_graph_distanceSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type coords(coordsSEXP);
    Rcpp::traits::input_parameter< int >::type max_iter(max_iterSEXP);
    Rcpp::traits::input_parameter< double >::type edge_length_epsilon(edge_length_epsilonSEXP);
    Rcpp::traits::input_parameter< double >::type initial_step(initial_stepSEXP);
    Rcpp::traits::input_parameter< double >::type step_shrink(step_shrinkSEXP);
    Rcpp::traits::input_parameter< double >::type armijo_factor(armijo_factorSEXP);
    Rcpp::traits::input_parameter< double >::type grad_tol(grad_tolSEXP);
    Rcpp::traits::input_parameter< double >::type min_step(min_stepSEXP);
    Rcpp::traits::input_parameter< bool >::type recenter(recenterSEXP);
    Rcpp::traits::input_parameter< bool >::type return_trace(return_traceSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::NumericMatrix> >::type anchor_coords(anchor_coordsSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::NumericVector> >::type anchor_weights(anchor_weightsSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type bend_a(bend_aSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type bend_b(bend_bSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type bend_c(bend_cSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::NumericVector> >::type bend_weights(bend_weightsSEXP);
    rcpp_result_gen = Rcpp::wrap(grip_optimize_geodesic_mds_flat_bending_cpp(flat_pair_edge_offsets, flat_edge_u, flat_edge_v, flat_edge_coeff, pair_graph_distance, coords, max_iter, edge_length_epsilon, initial_step, step_shrink, armijo_factor, grad_tol, min_step, recenter, return_trace, anchor_coords, anchor_weights, bend_a, bend_b, bend_c, bend_weights));
    return rcpp_result_gen;
END_RCPP
}
// grip_build_tie_average_shortest_path_cache_cpp
Rcpp::List grip_build_tie_average_shortest_path_cache_cpp(Rcpp::List adj_list, Rcpp::Nullable<Rcpp::List> weight_list, Rcpp::IntegerMatrix pair_matrix, Rcpp::NumericMatrix dist_matrix);
RcppExport SEXP _grip_grip_build_tie_average_shortest_path_cache_cpp(SEXP adj_listSEXP, SEXP weight_listSEXP, SEXP pair_matrixSEXP, SEXP dist_matrixSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type adj_list(adj_listSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::List> >::type weight_list(weight_listSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerMatrix >::type pair_matrix(pair_matrixSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type dist_matrix(dist_matrixSEXP);
    rcpp_result_gen = Rcpp::wrap(grip_build_tie_average_shortest_path_cache_cpp(adj_list, weight_list, pair_matrix, dist_matrix));
    return rcpp_result_gen;
END_RCPP
}
// grip_optimize_geodesic_mds_adj_cpp
Rcpp::List grip_optimize_geodesic_mds_adj_cpp(Rcpp::List adj_list, Rcpp::Nullable<Rcpp::List> weight_list, Rcpp::NumericMatrix coords, int max_iter, double edge_length_epsilon, double initial_step, double step_shrink, double armijo_factor, double grad_tol, double min_step, bool recenter, bool return_trace);
RcppExport SEXP _grip_grip_optimize_geodesic_mds_adj_cpp(SEXP adj_listSEXP, SEXP weight_listSEXP, SEXP coordsSEXP, SEXP max_iterSEXP, SEXP edge_length_epsilonSEXP, SEXP initial_stepSEXP, SEXP step_shrinkSEXP, SEXP armijo_factorSEXP, SEXP grad_tolSEXP, SEXP min_stepSEXP, SEXP recenterSEXP, SEXP return_traceSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type adj_list(adj_listSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::List> >::type weight_list(weight_listSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type coords(coordsSEXP);
    Rcpp::traits::input_parameter< int >::type max_iter(max_iterSEXP);
    Rcpp::traits::input_parameter< double >::type edge_length_epsilon(edge_length_epsilonSEXP);
    Rcpp::traits::input_parameter< double >::type initial_step(initial_stepSEXP);
    Rcpp::traits::input_parameter< double >::type step_shrink(step_shrinkSEXP);
    Rcpp::traits::input_parameter< double >::type armijo_factor(armijo_factorSEXP);
    Rcpp::traits::input_parameter< double >::type grad_tol(grad_tolSEXP);
    Rcpp::traits::input_parameter< double >::type min_step(min_stepSEXP);
    Rcpp::traits::input_parameter< bool >::type recenter(recenterSEXP);
    Rcpp::traits::input_parameter< bool >::type return_trace(return_traceSEXP);
    rcpp_result_gen = Rcpp::wrap(grip_optimize_geodesic_mds_adj_cpp(adj_list, weight_list, coords, max_iter, edge_length_epsilon, initial_step, step_shrink, armijo_factor, grad_tol, min_step, recenter, return_trace));
    return rcpp_result_gen;
END_RCPP
}
// grip_optimize_geodesic_mds_cache_cpp
Rcpp::List grip_optimize_geodesic_mds_cache_cpp(Rcpp::List path_edges, Rcpp::Nullable<Rcpp::List> path_edge_weights, Rcpp::NumericVector pair_graph_distance, Rcpp::NumericMatrix coords, int max_iter, double edge_length_epsilon, double initial_step, double step_shrink, double armijo_factor, double grad_tol, double min_step, bool recenter, bool return_trace, Rcpp::Nullable<Rcpp::NumericMatrix> anchor_coords, Rcpp::Nullable<Rcpp::NumericVector> anchor_weights);
RcppExport SEXP _grip_grip_optimize_geodesic_mds_cache_cpp(SEXP path_edgesSEXP, SEXP path_edge_weightsSEXP, SEXP pair_graph_distanceSEXP, SEXP coordsSEXP, SEXP max_iterSEXP, SEXP edge_length_epsilonSEXP, SEXP initial_stepSEXP, SEXP step_shrinkSEXP, SEXP armijo_factorSEXP, SEXP grad_tolSEXP, SEXP min_stepSEXP, SEXP recenterSEXP, SEXP return_traceSEXP, SEXP anchor_coordsSEXP, SEXP anchor_weightsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type path_edges(path_edgesSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::List> >::type path_edge_weights(path_edge_weightsSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type pair_graph_distance(pair_graph_distanceSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type coords(coordsSEXP);
    Rcpp::traits::input_parameter< int >::type max_iter(max_iterSEXP);
    Rcpp::traits::input_parameter< double >::type edge_length_epsilon(edge_length_epsilonSEXP);
    Rcpp::traits::input_parameter< double >::type initial_step(initial_stepSEXP);
    Rcpp::traits::input_parameter< double >::type step_shrink(step_shrinkSEXP);
    Rcpp::traits::input_parameter< double >::type armijo_factor(armijo_factorSEXP);
    Rcpp::traits::input_parameter< double >::type grad_tol(grad_tolSEXP);
    Rcpp::traits::input_parameter< double >::type min_step(min_stepSEXP);
    Rcpp::traits::input_parameter< bool >::type recenter(recenterSEXP);
    Rcpp::traits::input_parameter< bool >::type return_trace(return_traceSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::NumericMatrix> >::type anchor_coords(anchor_coordsSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::NumericVector> >::type anchor_weights(anchor_weightsSEXP);
    rcpp_result_gen = Rcpp::wrap(grip_optimize_geodesic_mds_cache_cpp(path_edges, path_edge_weights, pair_graph_distance, coords, max_iter, edge_length_epsilon, initial_step, step_shrink, armijo_factor, grad_tol, min_step, recenter, return_trace, anchor_coords, anchor_weights));
    return rcpp_result_gen;
END_RCPP
}
// grip_optimize_geodesic_mds_flat_cpp
Rcpp::List grip_optimize_geodesic_mds_flat_cpp(Rcpp::IntegerVector flat_pair_edge_offsets, Rcpp::IntegerVector flat_edge_u, Rcpp::IntegerVector flat_edge_v, Rcpp::NumericVector flat_edge_coeff, Rcpp::NumericVector pair_graph_distance, Rcpp::NumericMatrix coords, int max_iter, double edge_length_epsilon, double initial_step, double step_shrink, double armijo_factor, double grad_tol, double min_step, bool recenter, bool return_trace, Rcpp::Nullable<Rcpp::NumericMatrix> anchor_coords, Rcpp::Nullable<Rcpp::NumericVector> anchor_weights, Rcpp::Nullable<Rcpp::NumericVector> anchor_vertex_weight, Rcpp::IntegerVector smooth_adj_offsets, Rcpp::IntegerVector smooth_adj_vertices, Rcpp::Nullable<Rcpp::NumericVector> smooth_weights, Rcpp::IntegerVector graph_edge_u, Rcpp::IntegerVector graph_edge_v, Rcpp::NumericVector graph_edge_target, Rcpp::Nullable<Rcpp::NumericVector> edge_spring_weights, Rcpp::IntegerVector repulsion_u, Rcpp::IntegerVector repulsion_v, Rcpp::NumericVector repulsion_target, Rcpp::Nullable<Rcpp::NumericVector> repulsion_weights, int n_threads);
RcppExport SEXP _grip_grip_optimize_geodesic_mds_flat_cpp(SEXP flat_pair_edge_offsetsSEXP, SEXP flat_edge_uSEXP, SEXP flat_edge_vSEXP, SEXP flat_edge_coeffSEXP, SEXP pair_graph_distanceSEXP, SEXP coordsSEXP, SEXP max_iterSEXP, SEXP edge_length_epsilonSEXP, SEXP initial_stepSEXP, SEXP step_shrinkSEXP, SEXP armijo_factorSEXP, SEXP grad_tolSEXP, SEXP min_stepSEXP, SEXP recenterSEXP, SEXP return_traceSEXP, SEXP anchor_coordsSEXP, SEXP anchor_weightsSEXP, SEXP anchor_vertex_weightSEXP, SEXP smooth_adj_offsetsSEXP, SEXP smooth_adj_verticesSEXP, SEXP smooth_weightsSEXP, SEXP graph_edge_uSEXP, SEXP graph_edge_vSEXP, SEXP graph_edge_targetSEXP, SEXP edge_spring_weightsSEXP, SEXP repulsion_uSEXP, SEXP repulsion_vSEXP, SEXP repulsion_targetSEXP, SEXP repulsion_weightsSEXP, SEXP n_threadsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type flat_pair_edge_offsets(flat_pair_edge_offsetsSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type flat_edge_u(flat_edge_uSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type flat_edge_v(flat_edge_vSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type flat_edge_coeff(flat_edge_coeffSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type pair_graph_distance(pair_graph_distanceSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type coords(coordsSEXP);
    Rcpp::traits::input_parameter< int >::type max_iter(max_iterSEXP);
    Rcpp::traits::input_parameter< double >::type edge_length_epsilon(edge_length_epsilonSEXP);
    Rcpp::traits::input_parameter< double >::type initial_step(initial_stepSEXP);
    Rcpp::traits::input_parameter< double >::type step_shrink(step_shrinkSEXP);
    Rcpp::traits::input_parameter< double >::type armijo_factor(armijo_factorSEXP);
    Rcpp::traits::input_parameter< double >::type grad_tol(grad_tolSEXP);
    Rcpp::traits::input_parameter< double >::type min_step(min_stepSEXP);
    Rcpp::traits::input_parameter< bool >::type recenter(recenterSEXP);
    Rcpp::traits::input_parameter< bool >::type return_trace(return_traceSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::NumericMatrix> >::type anchor_coords(anchor_coordsSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::NumericVector> >::type anchor_weights(anchor_weightsSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::NumericVector> >::type anchor_vertex_weight(anchor_vertex_weightSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type smooth_adj_offsets(smooth_adj_offsetsSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type smooth_adj_vertices(smooth_adj_verticesSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::NumericVector> >::type smooth_weights(smooth_weightsSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type graph_edge_u(graph_edge_uSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type graph_edge_v(graph_edge_vSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type graph_edge_target(graph_edge_targetSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::NumericVector> >::type edge_spring_weights(edge_spring_weightsSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type repulsion_u(repulsion_uSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type repulsion_v(repulsion_vSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type repulsion_target(repulsion_targetSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::NumericVector> >::type repulsion_weights(repulsion_weightsSEXP);
    Rcpp::traits::input_parameter< int >::type n_threads(n_threadsSEXP);
    rcpp_result_gen = Rcpp::wrap(grip_optimize_geodesic_mds_flat_cpp(flat_pair_edge_offsets, flat_edge_u, flat_edge_v, flat_edge_coeff, pair_graph_distance, coords, max_iter, edge_length_epsilon, initial_step, step_shrink, armijo_factor, grad_tol, min_step, recenter, return_trace, anchor_coords, anchor_weights, anchor_vertex_weight, smooth_adj_offsets, smooth_adj_vertices, smooth_weights, graph_edge_u, graph_edge_v, graph_edge_target, edge_spring_weights, repulsion_u, repulsion_v, repulsion_target, repulsion_weights, n_threads));
    return rcpp_result_gen;
END_RCPP
}
// grip_geodesic_mds_flat_path_lengths_cpp
Rcpp::NumericVector grip_geodesic_mds_flat_path_lengths_cpp(Rcpp::IntegerVector flat_pair_edge_offsets, Rcpp::IntegerVector flat_edge_u, Rcpp::IntegerVector flat_edge_v, Rcpp::NumericVector flat_edge_coeff, Rcpp::NumericMatrix coords, double edge_length_epsilon);
RcppExport SEXP _grip_grip_geodesic_mds_flat_path_lengths_cpp(SEXP flat_pair_edge_offsetsSEXP, SEXP flat_edge_uSEXP, SEXP flat_edge_vSEXP, SEXP flat_edge_coeffSEXP, SEXP coordsSEXP, SEXP edge_length_epsilonSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type flat_pair_edge_offsets(flat_pair_edge_offsetsSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type flat_edge_u(flat_edge_uSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type flat_edge_v(flat_edge_vSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type flat_edge_coeff(flat_edge_coeffSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type coords(coordsSEXP);
    Rcpp::traits::input_parameter< double >::type edge_length_epsilon(edge_length_epsilonSEXP);
    rcpp_result_gen = Rcpp::wrap(grip_geodesic_mds_flat_path_lengths_cpp(flat_pair_edge_offsets, flat_edge_u, flat_edge_v, flat_edge_coeff, coords, edge_length_epsilon));
    return rcpp_result_gen;
END_RCPP
}
// grip_geodesic_mds_flat_repulsion_stats_cpp
Rcpp::List grip_geodesic_mds_flat_repulsion_stats_cpp(Rcpp::IntegerVector repulsion_u, Rcpp::IntegerVector repulsion_v, Rcpp::NumericVector repulsion_target, Rcpp::NumericMatrix coords, double edge_length_epsilon, double repulsion_weight);
RcppExport SEXP _grip_grip_geodesic_mds_flat_repulsion_stats_cpp(SEXP repulsion_uSEXP, SEXP repulsion_vSEXP, SEXP repulsion_targetSEXP, SEXP coordsSEXP, SEXP edge_length_epsilonSEXP, SEXP repulsion_weightSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type repulsion_u(repulsion_uSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type repulsion_v(repulsion_vSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type repulsion_target(repulsion_targetSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type coords(coordsSEXP);
    Rcpp::traits::input_parameter< double >::type edge_length_epsilon(edge_length_epsilonSEXP);
    Rcpp::traits::input_parameter< double >::type repulsion_weight(repulsion_weightSEXP);
    rcpp_result_gen = Rcpp::wrap(grip_geodesic_mds_flat_repulsion_stats_cpp(repulsion_u, repulsion_v, repulsion_target, coords, edge_length_epsilon, repulsion_weight));
    return rcpp_result_gen;
END_RCPP
}
// grip_geodesic_misf_insert_vertex_cpp
Rcpp::List grip_geodesic_misf_insert_vertex_cpp(Rcpp::NumericMatrix anchor_coords, Rcpp::NumericVector anchor_distance, Rcpp::Nullable<Rcpp::NumericVector> anchor_weights, Rcpp::Nullable<Rcpp::NumericVector> init_coord, int max_iter, double initial_step, double step_shrink, double armijo_factor, double grad_tol, double min_step);
RcppExport SEXP _grip_grip_geodesic_misf_insert_vertex_cpp(SEXP anchor_coordsSEXP, SEXP anchor_distanceSEXP, SEXP anchor_weightsSEXP, SEXP init_coordSEXP, SEXP max_iterSEXP, SEXP initial_stepSEXP, SEXP step_shrinkSEXP, SEXP armijo_factorSEXP, SEXP grad_tolSEXP, SEXP min_stepSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type anchor_coords(anchor_coordsSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type anchor_distance(anchor_distanceSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::NumericVector> >::type anchor_weights(anchor_weightsSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::NumericVector> >::type init_coord(init_coordSEXP);
    Rcpp::traits::input_parameter< int >::type max_iter(max_iterSEXP);
    Rcpp::traits::input_parameter< double >::type initial_step(initial_stepSEXP);
    Rcpp::traits::input_parameter< double >::type step_shrink(step_shrinkSEXP);
    Rcpp::traits::input_parameter< double >::type armijo_factor(armijo_factorSEXP);
    Rcpp::traits::input_parameter< double >::type grad_tol(grad_tolSEXP);
    Rcpp::traits::input_parameter< double >::type min_step(min_stepSEXP);
    rcpp_result_gen = Rcpp::wrap(grip_geodesic_misf_insert_vertex_cpp(anchor_coords, anchor_distance, anchor_weights, init_coord, max_iter, initial_step, step_shrink, armijo_factor, grad_tol, min_step));
    return rcpp_result_gen;
END_RCPP
}
// grip_layout_weighted_nd_adj_cpp
Rcpp::NumericMatrix grip_layout_weighted_nd_adj_cpp(Rcpp::List adj_list, Rcpp::List weight_list, int n, int dim, std::string placement, int rounds, int final_rounds, int num_init, int num_nbrs, double r, double s, double repulsion_factor, int tinit_factor, double final_move_scale_after_first, std::string final_mode, int metric_neighbor_cap, int insertion_anchor_count, std::string insertion_anchor_scope, std::string insertion_anchor_strategy, std::string level0_insertion_mode, int level0_anchor_count, int level0_local_kk_steps, Rcpp::Nullable<int> seed);
RcppExport SEXP _grip_grip_layout_weighted_nd_adj_cpp(SEXP adj_listSEXP, SEXP weight_listSEXP, SEXP nSEXP, SEXP dimSEXP, SEXP placementSEXP, SEXP roundsSEXP, SEXP final_roundsSEXP, SEXP num_initSEXP, SEXP num_nbrsSEXP, SEXP rSEXP, SEXP sSEXP, SEXP repulsion_factorSEXP, SEXP tinit_factorSEXP, SEXP final_move_scale_after_firstSEXP, SEXP final_modeSEXP, SEXP metric_neighbor_capSEXP, SEXP insertion_anchor_countSEXP, SEXP insertion_anchor_scopeSEXP, SEXP insertion_anchor_strategySEXP, SEXP level0_insertion_modeSEXP, SEXP level0_anchor_countSEXP, SEXP level0_local_kk_stepsSEXP, SEXP seedSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type adj_list(adj_listSEXP);
    Rcpp::traits::input_parameter< Rcpp::List >::type weight_list(weight_listSEXP);
    Rcpp::traits::input_parameter< int >::type n(nSEXP);
    Rcpp::traits::input_parameter< int >::type dim(dimSEXP);
    Rcpp::traits::input_parameter< std::string >::type placement(placementSEXP);
    Rcpp::traits::input_parameter< int >::type rounds(roundsSEXP);
    Rcpp::traits::input_parameter< int >::type final_rounds(final_roundsSEXP);
    Rcpp::traits::input_parameter< int >::type num_init(num_initSEXP);
    Rcpp::traits::input_parameter< int >::type num_nbrs(num_nbrsSEXP);
    Rcpp::traits::input_parameter< double >::type r(rSEXP);
    Rcpp::traits::input_parameter< double >::type s(sSEXP);
    Rcpp::traits::input_parameter< double >::type repulsion_factor(repulsion_factorSEXP);
    Rcpp::traits::input_parameter< int >::type tinit_factor(tinit_factorSEXP);
    Rcpp::traits::input_parameter< double >::type final_move_scale_after_first(final_move_scale_after_firstSEXP);
    Rcpp::traits::input_parameter< std::string >::type final_mode(final_modeSEXP);
    Rcpp::traits::input_parameter< int >::type metric_neighbor_cap(metric_neighbor_capSEXP);
    Rcpp::traits::input_parameter< int >::type insertion_anchor_count(insertion_anchor_countSEXP);
    Rcpp::traits::input_parameter< std::string >::type insertion_anchor_scope(insertion_anchor_scopeSEXP);
    Rcpp::traits::input_parameter< std::string >::type insertion_anchor_strategy(insertion_anchor_strategySEXP);
    Rcpp::traits::input_parameter< std::string >::type level0_insertion_mode(level0_insertion_modeSEXP);
    Rcpp::traits::input_parameter< int >::type level0_anchor_count(level0_anchor_countSEXP);
    Rcpp::traits::input_parameter< int >::type level0_local_kk_steps(level0_local_kk_stepsSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<int> >::type seed(seedSEXP);
    rcpp_result_gen = Rcpp::wrap(grip_layout_weighted_nd_adj_cpp(adj_list, weight_list, n, dim, placement, rounds, final_rounds, num_init, num_nbrs, r, s, repulsion_factor, tinit_factor, final_move_scale_after_first, final_mode, metric_neighbor_cap, insertion_anchor_count, insertion_anchor_scope, insertion_anchor_strategy, level0_insertion_mode, level0_anchor_count, level0_local_kk_steps, seed));
    return rcpp_result_gen;
END_RCPP
}
// grip_layout_weighted_nd_trace_adj_cpp
Rcpp::List grip_layout_weighted_nd_trace_adj_cpp(Rcpp::List adj_list, Rcpp::List weight_list, int n, int dim, std::string placement, int rounds, int final_rounds, int num_init, int num_nbrs, double r, double s, double repulsion_factor, int tinit_factor, double final_move_scale_after_first, std::string final_mode, int metric_neighbor_cap, int insertion_anchor_count, std::string insertion_anchor_scope, std::string insertion_anchor_strategy, std::string level0_insertion_mode, int level0_anchor_count, int level0_local_kk_steps, Rcpp::Nullable<int> seed, int trace_every, bool refinement_step_trace, int refinement_step_level_index, int refinement_step_misf_level, int refinement_step_round_start, int refinement_step_round_end);
RcppExport SEXP _grip_grip_layout_weighted_nd_trace_adj_cpp(SEXP adj_listSEXP, SEXP weight_listSEXP, SEXP nSEXP, SEXP dimSEXP, SEXP placementSEXP, SEXP roundsSEXP, SEXP final_roundsSEXP, SEXP num_initSEXP, SEXP num_nbrsSEXP, SEXP rSEXP, SEXP sSEXP, SEXP repulsion_factorSEXP, SEXP tinit_factorSEXP, SEXP final_move_scale_after_firstSEXP, SEXP final_modeSEXP, SEXP metric_neighbor_capSEXP, SEXP insertion_anchor_countSEXP, SEXP insertion_anchor_scopeSEXP, SEXP insertion_anchor_strategySEXP, SEXP level0_insertion_modeSEXP, SEXP level0_anchor_countSEXP, SEXP level0_local_kk_stepsSEXP, SEXP seedSEXP, SEXP trace_everySEXP, SEXP refinement_step_traceSEXP, SEXP refinement_step_level_indexSEXP, SEXP refinement_step_misf_levelSEXP, SEXP refinement_step_round_startSEXP, SEXP refinement_step_round_endSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type adj_list(adj_listSEXP);
    Rcpp::traits::input_parameter< Rcpp::List >::type weight_list(weight_listSEXP);
    Rcpp::traits::input_parameter< int >::type n(nSEXP);
    Rcpp::traits::input_parameter< int >::type dim(dimSEXP);
    Rcpp::traits::input_parameter< std::string >::type placement(placementSEXP);
    Rcpp::traits::input_parameter< int >::type rounds(roundsSEXP);
    Rcpp::traits::input_parameter< int >::type final_rounds(final_roundsSEXP);
    Rcpp::traits::input_parameter< int >::type num_init(num_initSEXP);
    Rcpp::traits::input_parameter< int >::type num_nbrs(num_nbrsSEXP);
    Rcpp::traits::input_parameter< double >::type r(rSEXP);
    Rcpp::traits::input_parameter< double >::type s(sSEXP);
    Rcpp::traits::input_parameter< double >::type repulsion_factor(repulsion_factorSEXP);
    Rcpp::traits::input_parameter< int >::type tinit_factor(tinit_factorSEXP);
    Rcpp::traits::input_parameter< double >::type final_move_scale_after_first(final_move_scale_after_firstSEXP);
    Rcpp::traits::input_parameter< std::string >::type final_mode(final_modeSEXP);
    Rcpp::traits::input_parameter< int >::type metric_neighbor_cap(metric_neighbor_capSEXP);
    Rcpp::traits::input_parameter< int >::type insertion_anchor_count(insertion_anchor_countSEXP);
    Rcpp::traits::input_parameter< std::string >::type insertion_anchor_scope(insertion_anchor_scopeSEXP);
    Rcpp::traits::input_parameter< std::string >::type insertion_anchor_strategy(insertion_anchor_strategySEXP);
    Rcpp::traits::input_parameter< std::string >::type level0_insertion_mode(level0_insertion_modeSEXP);
    Rcpp::traits::input_parameter< int >::type level0_anchor_count(level0_anchor_countSEXP);
    Rcpp::traits::input_parameter< int >::type level0_local_kk_steps(level0_local_kk_stepsSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<int> >::type seed(seedSEXP);
    Rcpp::traits::input_parameter< int >::type trace_every(trace_everySEXP);
    Rcpp::traits::input_parameter< bool >::type refinement_step_trace(refinement_step_traceSEXP);
    Rcpp::traits::input_parameter< int >::type refinement_step_level_index(refinement_step_level_indexSEXP);
    Rcpp::traits::input_parameter< int >::type refinement_step_misf_level(refinement_step_misf_levelSEXP);
    Rcpp::traits::input_parameter< int >::type refinement_step_round_start(refinement_step_round_startSEXP);
    Rcpp::traits::input_parameter< int >::type refinement_step_round_end(refinement_step_round_endSEXP);
    rcpp_result_gen = Rcpp::wrap(grip_layout_weighted_nd_trace_adj_cpp(adj_list, weight_list, n, dim, placement, rounds, final_rounds, num_init, num_nbrs, r, s, repulsion_factor, tinit_factor, final_move_scale_after_first, final_mode, metric_neighbor_cap, insertion_anchor_count, insertion_anchor_scope, insertion_anchor_strategy, level0_insertion_mode, level0_anchor_count, level0_local_kk_steps, seed, trace_every, refinement_step_trace, refinement_step_level_index, refinement_step_misf_level, refinement_step_round_start, refinement_step_round_end));
    return rcpp_result_gen;
END_RCPP
}
// grip_build_weighted_misf_nd_adj_cpp
Rcpp::List grip_build_weighted_misf_nd_adj_cpp(Rcpp::List adj_list, Rcpp::List weight_list, int n, int num_init, int num_nbrs, Rcpp::Nullable<int> seed);
RcppExport SEXP _grip_grip_build_weighted_misf_nd_adj_cpp(SEXP adj_listSEXP, SEXP weight_listSEXP, SEXP nSEXP, SEXP num_initSEXP, SEXP num_nbrsSEXP, SEXP seedSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type adj_list(adj_listSEXP);
    Rcpp::traits::input_parameter< Rcpp::List >::type weight_list(weight_listSEXP);
    Rcpp::traits::input_parameter< int >::type n(nSEXP);
    Rcpp::traits::input_parameter< int >::type num_init(num_initSEXP);
    Rcpp::traits::input_parameter< int >::type num_nbrs(num_nbrsSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<int> >::type seed(seedSEXP);
    rcpp_result_gen = Rcpp::wrap(grip_build_weighted_misf_nd_adj_cpp(adj_list, weight_list, n, num_init, num_nbrs, seed));
    return rcpp_result_gen;
END_RCPP
}
// grip_layout_cpp
Rcpp::NumericMatrix grip_layout_cpp(Rcpp::IntegerMatrix edges, Rcpp::Nullable<Rcpp::NumericVector> edge_weights, int n, int dim, std::string placement, int rounds, int final_rounds, int num_init, int num_nbrs, double r, double s, double repulsion_factor, int tinit_factor, Rcpp::Nullable<int> seed);
RcppExport SEXP _grip_grip_layout_cpp(SEXP edgesSEXP, SEXP edge_weightsSEXP, SEXP nSEXP, SEXP dimSEXP, SEXP placementSEXP, SEXP roundsSEXP, SEXP final_roundsSEXP, SEXP num_initSEXP, SEXP num_nbrsSEXP, SEXP rSEXP, SEXP sSEXP, SEXP repulsion_factorSEXP, SEXP tinit_factorSEXP, SEXP seedSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::IntegerMatrix >::type edges(edgesSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::NumericVector> >::type edge_weights(edge_weightsSEXP);
    Rcpp::traits::input_parameter< int >::type n(nSEXP);
    Rcpp::traits::input_parameter< int >::type dim(dimSEXP);
    Rcpp::traits::input_parameter< std::string >::type placement(placementSEXP);
    Rcpp::traits::input_parameter< int >::type rounds(roundsSEXP);
    Rcpp::traits::input_parameter< int >::type final_rounds(final_roundsSEXP);
    Rcpp::traits::input_parameter< int >::type num_init(num_initSEXP);
    Rcpp::traits::input_parameter< int >::type num_nbrs(num_nbrsSEXP);
    Rcpp::traits::input_parameter< double >::type r(rSEXP);
    Rcpp::traits::input_parameter< double >::type s(sSEXP);
    Rcpp::traits::input_parameter< double >::type repulsion_factor(repulsion_factorSEXP);
    Rcpp::traits::input_parameter< int >::type tinit_factor(tinit_factorSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<int> >::type seed(seedSEXP);
    rcpp_result_gen = Rcpp::wrap(grip_layout_cpp(edges, edge_weights, n, dim, placement, rounds, final_rounds, num_init, num_nbrs, r, s, repulsion_factor, tinit_factor, seed));
    return rcpp_result_gen;
END_RCPP
}
// grip_layout_adj_cpp
Rcpp::NumericMatrix grip_layout_adj_cpp(Rcpp::List adj_list, Rcpp::Nullable<Rcpp::List> weight_list, int n, int dim, std::string placement, int rounds, int final_rounds, int num_init, int num_nbrs, double r, double s, double repulsion_factor, int tinit_factor, Rcpp::Nullable<int> seed);
RcppExport SEXP _grip_grip_layout_adj_cpp(SEXP adj_listSEXP, SEXP weight_listSEXP, SEXP nSEXP, SEXP dimSEXP, SEXP placementSEXP, SEXP roundsSEXP, SEXP final_roundsSEXP, SEXP num_initSEXP, SEXP num_nbrsSEXP, SEXP rSEXP, SEXP sSEXP, SEXP repulsion_factorSEXP, SEXP tinit_factorSEXP, SEXP seedSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type adj_list(adj_listSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::List> >::type weight_list(weight_listSEXP);
    Rcpp::traits::input_parameter< int >::type n(nSEXP);
    Rcpp::traits::input_parameter< int >::type dim(dimSEXP);
    Rcpp::traits::input_parameter< std::string >::type placement(placementSEXP);
    Rcpp::traits::input_parameter< int >::type rounds(roundsSEXP);
    Rcpp::traits::input_parameter< int >::type final_rounds(final_roundsSEXP);
    Rcpp::traits::input_parameter< int >::type num_init(num_initSEXP);
    Rcpp::traits::input_parameter< int >::type num_nbrs(num_nbrsSEXP);
    Rcpp::traits::input_parameter< double >::type r(rSEXP);
    Rcpp::traits::input_parameter< double >::type s(sSEXP);
    Rcpp::traits::input_parameter< double >::type repulsion_factor(repulsion_factorSEXP);
    Rcpp::traits::input_parameter< int >::type tinit_factor(tinit_factorSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<int> >::type seed(seedSEXP);
    rcpp_result_gen = Rcpp::wrap(grip_layout_adj_cpp(adj_list, weight_list, n, dim, placement, rounds, final_rounds, num_init, num_nbrs, r, s, repulsion_factor, tinit_factor, seed));
    return rcpp_result_gen;
END_RCPP
}
// grip_layout_globalrep_adj_cpp
Rcpp::NumericMatrix grip_layout_globalrep_adj_cpp(Rcpp::List adj_list, Rcpp::Nullable<Rcpp::List> weight_list, int n, int dim, std::string placement, int rounds, int final_rounds, int num_init, int num_nbrs, double r, double s, double repulsion_factor, double coarse_repulsion_factor, int coarse_repulsion_sample, int coarse_repulsion_exact_below, double final_anchor_factor, double final_move_scale_after_first, int insertion_anchor_count, std::string insertion_anchor_scope, std::string insertion_anchor_strategy, std::string level0_insertion_mode, int level0_anchor_count, int level0_local_kk_steps, int lgkk_multiscale_rounds, int lgkk_rounds_coarse, int lgkk_rounds_pre_final, int lgkk_rounds_final, int lgkk_local_nbrs, int lgkk_landmark_count, std::string lgkk_multiscale_scope, int lgkk_active_limit, std::string final_mode, int tinit_factor, Rcpp::Nullable<int> seed);
RcppExport SEXP _grip_grip_layout_globalrep_adj_cpp(SEXP adj_listSEXP, SEXP weight_listSEXP, SEXP nSEXP, SEXP dimSEXP, SEXP placementSEXP, SEXP roundsSEXP, SEXP final_roundsSEXP, SEXP num_initSEXP, SEXP num_nbrsSEXP, SEXP rSEXP, SEXP sSEXP, SEXP repulsion_factorSEXP, SEXP coarse_repulsion_factorSEXP, SEXP coarse_repulsion_sampleSEXP, SEXP coarse_repulsion_exact_belowSEXP, SEXP final_anchor_factorSEXP, SEXP final_move_scale_after_firstSEXP, SEXP insertion_anchor_countSEXP, SEXP insertion_anchor_scopeSEXP, SEXP insertion_anchor_strategySEXP, SEXP level0_insertion_modeSEXP, SEXP level0_anchor_countSEXP, SEXP level0_local_kk_stepsSEXP, SEXP lgkk_multiscale_roundsSEXP, SEXP lgkk_rounds_coarseSEXP, SEXP lgkk_rounds_pre_finalSEXP, SEXP lgkk_rounds_finalSEXP, SEXP lgkk_local_nbrsSEXP, SEXP lgkk_landmark_countSEXP, SEXP lgkk_multiscale_scopeSEXP, SEXP lgkk_active_limitSEXP, SEXP final_modeSEXP, SEXP tinit_factorSEXP, SEXP seedSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type adj_list(adj_listSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::List> >::type weight_list(weight_listSEXP);
    Rcpp::traits::input_parameter< int >::type n(nSEXP);
    Rcpp::traits::input_parameter< int >::type dim(dimSEXP);
    Rcpp::traits::input_parameter< std::string >::type placement(placementSEXP);
    Rcpp::traits::input_parameter< int >::type rounds(roundsSEXP);
    Rcpp::traits::input_parameter< int >::type final_rounds(final_roundsSEXP);
    Rcpp::traits::input_parameter< int >::type num_init(num_initSEXP);
    Rcpp::traits::input_parameter< int >::type num_nbrs(num_nbrsSEXP);
    Rcpp::traits::input_parameter< double >::type r(rSEXP);
    Rcpp::traits::input_parameter< double >::type s(sSEXP);
    Rcpp::traits::input_parameter< double >::type repulsion_factor(repulsion_factorSEXP);
    Rcpp::traits::input_parameter< double >::type coarse_repulsion_factor(coarse_repulsion_factorSEXP);
    Rcpp::traits::input_parameter< int >::type coarse_repulsion_sample(coarse_repulsion_sampleSEXP);
    Rcpp::traits::input_parameter< int >::type coarse_repulsion_exact_below(coarse_repulsion_exact_belowSEXP);
    Rcpp::traits::input_parameter< double >::type final_anchor_factor(final_anchor_factorSEXP);
    Rcpp::traits::input_parameter< double >::type final_move_scale_after_first(final_move_scale_after_firstSEXP);
    Rcpp::traits::input_parameter< int >::type insertion_anchor_count(insertion_anchor_countSEXP);
    Rcpp::traits::input_parameter< std::string >::type insertion_anchor_scope(insertion_anchor_scopeSEXP);
    Rcpp::traits::input_parameter< std::string >::type insertion_anchor_strategy(insertion_anchor_strategySEXP);
    Rcpp::traits::input_parameter< std::string >::type level0_insertion_mode(level0_insertion_modeSEXP);
    Rcpp::traits::input_parameter< int >::type level0_anchor_count(level0_anchor_countSEXP);
    Rcpp::traits::input_parameter< int >::type level0_local_kk_steps(level0_local_kk_stepsSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_multiscale_rounds(lgkk_multiscale_roundsSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_rounds_coarse(lgkk_rounds_coarseSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_rounds_pre_final(lgkk_rounds_pre_finalSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_rounds_final(lgkk_rounds_finalSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_local_nbrs(lgkk_local_nbrsSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_landmark_count(lgkk_landmark_countSEXP);
    Rcpp::traits::input_parameter< std::string >::type lgkk_multiscale_scope(lgkk_multiscale_scopeSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_active_limit(lgkk_active_limitSEXP);
    Rcpp::traits::input_parameter< std::string >::type final_mode(final_modeSEXP);
    Rcpp::traits::input_parameter< int >::type tinit_factor(tinit_factorSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<int> >::type seed(seedSEXP);
    rcpp_result_gen = Rcpp::wrap(grip_layout_globalrep_adj_cpp(adj_list, weight_list, n, dim, placement, rounds, final_rounds, num_init, num_nbrs, r, s, repulsion_factor, coarse_repulsion_factor, coarse_repulsion_sample, coarse_repulsion_exact_below, final_anchor_factor, final_move_scale_after_first, insertion_anchor_count, insertion_anchor_scope, insertion_anchor_strategy, level0_insertion_mode, level0_anchor_count, level0_local_kk_steps, lgkk_multiscale_rounds, lgkk_rounds_coarse, lgkk_rounds_pre_final, lgkk_rounds_final, lgkk_local_nbrs, lgkk_landmark_count, lgkk_multiscale_scope, lgkk_active_limit, final_mode, tinit_factor, seed));
    return rcpp_result_gen;
END_RCPP
}
// grip_layout_globalrep_weighted_adj_cpp
Rcpp::NumericMatrix grip_layout_globalrep_weighted_adj_cpp(Rcpp::List adj_list, Rcpp::Nullable<Rcpp::List> weight_list, int n, int dim, std::string placement, int rounds, int final_rounds, int num_init, int num_nbrs, double r, double s, double repulsion_factor, double coarse_repulsion_factor, int coarse_repulsion_sample, int coarse_repulsion_exact_below, double final_anchor_factor, double final_move_scale_after_first, int insertion_anchor_count, std::string insertion_anchor_scope, std::string insertion_anchor_strategy, std::string level0_insertion_mode, int level0_anchor_count, int level0_local_kk_steps, int lgkk_multiscale_rounds, int lgkk_rounds_coarse, int lgkk_rounds_pre_final, int lgkk_rounds_final, int lgkk_local_nbrs, int lgkk_landmark_count, std::string lgkk_multiscale_scope, int lgkk_active_limit, std::string final_mode, int tinit_factor, Rcpp::Nullable<int> seed, int metric_neighbor_cap);
RcppExport SEXP _grip_grip_layout_globalrep_weighted_adj_cpp(SEXP adj_listSEXP, SEXP weight_listSEXP, SEXP nSEXP, SEXP dimSEXP, SEXP placementSEXP, SEXP roundsSEXP, SEXP final_roundsSEXP, SEXP num_initSEXP, SEXP num_nbrsSEXP, SEXP rSEXP, SEXP sSEXP, SEXP repulsion_factorSEXP, SEXP coarse_repulsion_factorSEXP, SEXP coarse_repulsion_sampleSEXP, SEXP coarse_repulsion_exact_belowSEXP, SEXP final_anchor_factorSEXP, SEXP final_move_scale_after_firstSEXP, SEXP insertion_anchor_countSEXP, SEXP insertion_anchor_scopeSEXP, SEXP insertion_anchor_strategySEXP, SEXP level0_insertion_modeSEXP, SEXP level0_anchor_countSEXP, SEXP level0_local_kk_stepsSEXP, SEXP lgkk_multiscale_roundsSEXP, SEXP lgkk_rounds_coarseSEXP, SEXP lgkk_rounds_pre_finalSEXP, SEXP lgkk_rounds_finalSEXP, SEXP lgkk_local_nbrsSEXP, SEXP lgkk_landmark_countSEXP, SEXP lgkk_multiscale_scopeSEXP, SEXP lgkk_active_limitSEXP, SEXP final_modeSEXP, SEXP tinit_factorSEXP, SEXP seedSEXP, SEXP metric_neighbor_capSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type adj_list(adj_listSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::List> >::type weight_list(weight_listSEXP);
    Rcpp::traits::input_parameter< int >::type n(nSEXP);
    Rcpp::traits::input_parameter< int >::type dim(dimSEXP);
    Rcpp::traits::input_parameter< std::string >::type placement(placementSEXP);
    Rcpp::traits::input_parameter< int >::type rounds(roundsSEXP);
    Rcpp::traits::input_parameter< int >::type final_rounds(final_roundsSEXP);
    Rcpp::traits::input_parameter< int >::type num_init(num_initSEXP);
    Rcpp::traits::input_parameter< int >::type num_nbrs(num_nbrsSEXP);
    Rcpp::traits::input_parameter< double >::type r(rSEXP);
    Rcpp::traits::input_parameter< double >::type s(sSEXP);
    Rcpp::traits::input_parameter< double >::type repulsion_factor(repulsion_factorSEXP);
    Rcpp::traits::input_parameter< double >::type coarse_repulsion_factor(coarse_repulsion_factorSEXP);
    Rcpp::traits::input_parameter< int >::type coarse_repulsion_sample(coarse_repulsion_sampleSEXP);
    Rcpp::traits::input_parameter< int >::type coarse_repulsion_exact_below(coarse_repulsion_exact_belowSEXP);
    Rcpp::traits::input_parameter< double >::type final_anchor_factor(final_anchor_factorSEXP);
    Rcpp::traits::input_parameter< double >::type final_move_scale_after_first(final_move_scale_after_firstSEXP);
    Rcpp::traits::input_parameter< int >::type insertion_anchor_count(insertion_anchor_countSEXP);
    Rcpp::traits::input_parameter< std::string >::type insertion_anchor_scope(insertion_anchor_scopeSEXP);
    Rcpp::traits::input_parameter< std::string >::type insertion_anchor_strategy(insertion_anchor_strategySEXP);
    Rcpp::traits::input_parameter< std::string >::type level0_insertion_mode(level0_insertion_modeSEXP);
    Rcpp::traits::input_parameter< int >::type level0_anchor_count(level0_anchor_countSEXP);
    Rcpp::traits::input_parameter< int >::type level0_local_kk_steps(level0_local_kk_stepsSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_multiscale_rounds(lgkk_multiscale_roundsSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_rounds_coarse(lgkk_rounds_coarseSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_rounds_pre_final(lgkk_rounds_pre_finalSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_rounds_final(lgkk_rounds_finalSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_local_nbrs(lgkk_local_nbrsSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_landmark_count(lgkk_landmark_countSEXP);
    Rcpp::traits::input_parameter< std::string >::type lgkk_multiscale_scope(lgkk_multiscale_scopeSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_active_limit(lgkk_active_limitSEXP);
    Rcpp::traits::input_parameter< std::string >::type final_mode(final_modeSEXP);
    Rcpp::traits::input_parameter< int >::type tinit_factor(tinit_factorSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<int> >::type seed(seedSEXP);
    Rcpp::traits::input_parameter< int >::type metric_neighbor_cap(metric_neighbor_capSEXP);
    rcpp_result_gen = Rcpp::wrap(grip_layout_globalrep_weighted_adj_cpp(adj_list, weight_list, n, dim, placement, rounds, final_rounds, num_init, num_nbrs, r, s, repulsion_factor, coarse_repulsion_factor, coarse_repulsion_sample, coarse_repulsion_exact_below, final_anchor_factor, final_move_scale_after_first, insertion_anchor_count, insertion_anchor_scope, insertion_anchor_strategy, level0_insertion_mode, level0_anchor_count, level0_local_kk_steps, lgkk_multiscale_rounds, lgkk_rounds_coarse, lgkk_rounds_pre_final, lgkk_rounds_final, lgkk_local_nbrs, lgkk_landmark_count, lgkk_multiscale_scope, lgkk_active_limit, final_mode, tinit_factor, seed, metric_neighbor_cap));
    return rcpp_result_gen;
END_RCPP
}
// grip_build_misf_adj_cpp
Rcpp::List grip_build_misf_adj_cpp(Rcpp::List adj_list, Rcpp::Nullable<Rcpp::List> weight_list, int n, int num_init, int num_nbrs, Rcpp::Nullable<int> seed);
RcppExport SEXP _grip_grip_build_misf_adj_cpp(SEXP adj_listSEXP, SEXP weight_listSEXP, SEXP nSEXP, SEXP num_initSEXP, SEXP num_nbrsSEXP, SEXP seedSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type adj_list(adj_listSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::List> >::type weight_list(weight_listSEXP);
    Rcpp::traits::input_parameter< int >::type n(nSEXP);
    Rcpp::traits::input_parameter< int >::type num_init(num_initSEXP);
    Rcpp::traits::input_parameter< int >::type num_nbrs(num_nbrsSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<int> >::type seed(seedSEXP);
    rcpp_result_gen = Rcpp::wrap(grip_build_misf_adj_cpp(adj_list, weight_list, n, num_init, num_nbrs, seed));
    return rcpp_result_gen;
END_RCPP
}
// grip_build_weighted_misf_adj_cpp
Rcpp::List grip_build_weighted_misf_adj_cpp(Rcpp::List adj_list, Rcpp::Nullable<Rcpp::List> weight_list, int n, int num_init, int num_nbrs, Rcpp::Nullable<int> seed);
RcppExport SEXP _grip_grip_build_weighted_misf_adj_cpp(SEXP adj_listSEXP, SEXP weight_listSEXP, SEXP nSEXP, SEXP num_initSEXP, SEXP num_nbrsSEXP, SEXP seedSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type adj_list(adj_listSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::List> >::type weight_list(weight_listSEXP);
    Rcpp::traits::input_parameter< int >::type n(nSEXP);
    Rcpp::traits::input_parameter< int >::type num_init(num_initSEXP);
    Rcpp::traits::input_parameter< int >::type num_nbrs(num_nbrsSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<int> >::type seed(seedSEXP);
    rcpp_result_gen = Rcpp::wrap(grip_build_weighted_misf_adj_cpp(adj_list, weight_list, n, num_init, num_nbrs, seed));
    return rcpp_result_gen;
END_RCPP
}
// grip_layout_trace_adj_cpp
Rcpp::List grip_layout_trace_adj_cpp(Rcpp::List adj_list, Rcpp::Nullable<Rcpp::List> weight_list, int n, int dim, std::string placement, int rounds, int final_rounds, int num_init, int num_nbrs, double r, double s, double repulsion_factor, int tinit_factor, Rcpp::Nullable<int> seed, std::string trace, int trace_every);
RcppExport SEXP _grip_grip_layout_trace_adj_cpp(SEXP adj_listSEXP, SEXP weight_listSEXP, SEXP nSEXP, SEXP dimSEXP, SEXP placementSEXP, SEXP roundsSEXP, SEXP final_roundsSEXP, SEXP num_initSEXP, SEXP num_nbrsSEXP, SEXP rSEXP, SEXP sSEXP, SEXP repulsion_factorSEXP, SEXP tinit_factorSEXP, SEXP seedSEXP, SEXP traceSEXP, SEXP trace_everySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type adj_list(adj_listSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::List> >::type weight_list(weight_listSEXP);
    Rcpp::traits::input_parameter< int >::type n(nSEXP);
    Rcpp::traits::input_parameter< int >::type dim(dimSEXP);
    Rcpp::traits::input_parameter< std::string >::type placement(placementSEXP);
    Rcpp::traits::input_parameter< int >::type rounds(roundsSEXP);
    Rcpp::traits::input_parameter< int >::type final_rounds(final_roundsSEXP);
    Rcpp::traits::input_parameter< int >::type num_init(num_initSEXP);
    Rcpp::traits::input_parameter< int >::type num_nbrs(num_nbrsSEXP);
    Rcpp::traits::input_parameter< double >::type r(rSEXP);
    Rcpp::traits::input_parameter< double >::type s(sSEXP);
    Rcpp::traits::input_parameter< double >::type repulsion_factor(repulsion_factorSEXP);
    Rcpp::traits::input_parameter< int >::type tinit_factor(tinit_factorSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<int> >::type seed(seedSEXP);
    Rcpp::traits::input_parameter< std::string >::type trace(traceSEXP);
    Rcpp::traits::input_parameter< int >::type trace_every(trace_everySEXP);
    rcpp_result_gen = Rcpp::wrap(grip_layout_trace_adj_cpp(adj_list, weight_list, n, dim, placement, rounds, final_rounds, num_init, num_nbrs, r, s, repulsion_factor, tinit_factor, seed, trace, trace_every));
    return rcpp_result_gen;
END_RCPP
}
// grip_layout_globalrep_trace_adj_cpp
Rcpp::List grip_layout_globalrep_trace_adj_cpp(Rcpp::List adj_list, Rcpp::Nullable<Rcpp::List> weight_list, int n, int dim, std::string placement, int rounds, int final_rounds, int num_init, int num_nbrs, double r, double s, double repulsion_factor, double coarse_repulsion_factor, int coarse_repulsion_sample, int coarse_repulsion_exact_below, double final_anchor_factor, double final_move_scale_after_first, int insertion_anchor_count, std::string insertion_anchor_scope, std::string insertion_anchor_strategy, std::string level0_insertion_mode, int level0_anchor_count, int level0_local_kk_steps, int lgkk_multiscale_rounds, int lgkk_rounds_coarse, int lgkk_rounds_pre_final, int lgkk_rounds_final, int lgkk_local_nbrs, int lgkk_landmark_count, std::string lgkk_multiscale_scope, int lgkk_active_limit, std::string final_mode, int tinit_factor, Rcpp::Nullable<int> seed, std::string trace, int trace_every);
RcppExport SEXP _grip_grip_layout_globalrep_trace_adj_cpp(SEXP adj_listSEXP, SEXP weight_listSEXP, SEXP nSEXP, SEXP dimSEXP, SEXP placementSEXP, SEXP roundsSEXP, SEXP final_roundsSEXP, SEXP num_initSEXP, SEXP num_nbrsSEXP, SEXP rSEXP, SEXP sSEXP, SEXP repulsion_factorSEXP, SEXP coarse_repulsion_factorSEXP, SEXP coarse_repulsion_sampleSEXP, SEXP coarse_repulsion_exact_belowSEXP, SEXP final_anchor_factorSEXP, SEXP final_move_scale_after_firstSEXP, SEXP insertion_anchor_countSEXP, SEXP insertion_anchor_scopeSEXP, SEXP insertion_anchor_strategySEXP, SEXP level0_insertion_modeSEXP, SEXP level0_anchor_countSEXP, SEXP level0_local_kk_stepsSEXP, SEXP lgkk_multiscale_roundsSEXP, SEXP lgkk_rounds_coarseSEXP, SEXP lgkk_rounds_pre_finalSEXP, SEXP lgkk_rounds_finalSEXP, SEXP lgkk_local_nbrsSEXP, SEXP lgkk_landmark_countSEXP, SEXP lgkk_multiscale_scopeSEXP, SEXP lgkk_active_limitSEXP, SEXP final_modeSEXP, SEXP tinit_factorSEXP, SEXP seedSEXP, SEXP traceSEXP, SEXP trace_everySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type adj_list(adj_listSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::List> >::type weight_list(weight_listSEXP);
    Rcpp::traits::input_parameter< int >::type n(nSEXP);
    Rcpp::traits::input_parameter< int >::type dim(dimSEXP);
    Rcpp::traits::input_parameter< std::string >::type placement(placementSEXP);
    Rcpp::traits::input_parameter< int >::type rounds(roundsSEXP);
    Rcpp::traits::input_parameter< int >::type final_rounds(final_roundsSEXP);
    Rcpp::traits::input_parameter< int >::type num_init(num_initSEXP);
    Rcpp::traits::input_parameter< int >::type num_nbrs(num_nbrsSEXP);
    Rcpp::traits::input_parameter< double >::type r(rSEXP);
    Rcpp::traits::input_parameter< double >::type s(sSEXP);
    Rcpp::traits::input_parameter< double >::type repulsion_factor(repulsion_factorSEXP);
    Rcpp::traits::input_parameter< double >::type coarse_repulsion_factor(coarse_repulsion_factorSEXP);
    Rcpp::traits::input_parameter< int >::type coarse_repulsion_sample(coarse_repulsion_sampleSEXP);
    Rcpp::traits::input_parameter< int >::type coarse_repulsion_exact_below(coarse_repulsion_exact_belowSEXP);
    Rcpp::traits::input_parameter< double >::type final_anchor_factor(final_anchor_factorSEXP);
    Rcpp::traits::input_parameter< double >::type final_move_scale_after_first(final_move_scale_after_firstSEXP);
    Rcpp::traits::input_parameter< int >::type insertion_anchor_count(insertion_anchor_countSEXP);
    Rcpp::traits::input_parameter< std::string >::type insertion_anchor_scope(insertion_anchor_scopeSEXP);
    Rcpp::traits::input_parameter< std::string >::type insertion_anchor_strategy(insertion_anchor_strategySEXP);
    Rcpp::traits::input_parameter< std::string >::type level0_insertion_mode(level0_insertion_modeSEXP);
    Rcpp::traits::input_parameter< int >::type level0_anchor_count(level0_anchor_countSEXP);
    Rcpp::traits::input_parameter< int >::type level0_local_kk_steps(level0_local_kk_stepsSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_multiscale_rounds(lgkk_multiscale_roundsSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_rounds_coarse(lgkk_rounds_coarseSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_rounds_pre_final(lgkk_rounds_pre_finalSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_rounds_final(lgkk_rounds_finalSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_local_nbrs(lgkk_local_nbrsSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_landmark_count(lgkk_landmark_countSEXP);
    Rcpp::traits::input_parameter< std::string >::type lgkk_multiscale_scope(lgkk_multiscale_scopeSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_active_limit(lgkk_active_limitSEXP);
    Rcpp::traits::input_parameter< std::string >::type final_mode(final_modeSEXP);
    Rcpp::traits::input_parameter< int >::type tinit_factor(tinit_factorSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<int> >::type seed(seedSEXP);
    Rcpp::traits::input_parameter< std::string >::type trace(traceSEXP);
    Rcpp::traits::input_parameter< int >::type trace_every(trace_everySEXP);
    rcpp_result_gen = Rcpp::wrap(grip_layout_globalrep_trace_adj_cpp(adj_list, weight_list, n, dim, placement, rounds, final_rounds, num_init, num_nbrs, r, s, repulsion_factor, coarse_repulsion_factor, coarse_repulsion_sample, coarse_repulsion_exact_below, final_anchor_factor, final_move_scale_after_first, insertion_anchor_count, insertion_anchor_scope, insertion_anchor_strategy, level0_insertion_mode, level0_anchor_count, level0_local_kk_steps, lgkk_multiscale_rounds, lgkk_rounds_coarse, lgkk_rounds_pre_final, lgkk_rounds_final, lgkk_local_nbrs, lgkk_landmark_count, lgkk_multiscale_scope, lgkk_active_limit, final_mode, tinit_factor, seed, trace, trace_every));
    return rcpp_result_gen;
END_RCPP
}
// grip_layout_globalrep_weighted_trace_adj_cpp
Rcpp::List grip_layout_globalrep_weighted_trace_adj_cpp(Rcpp::List adj_list, Rcpp::Nullable<Rcpp::List> weight_list, int n, int dim, std::string placement, int rounds, int final_rounds, int num_init, int num_nbrs, double r, double s, double repulsion_factor, double coarse_repulsion_factor, int coarse_repulsion_sample, int coarse_repulsion_exact_below, double final_anchor_factor, double final_move_scale_after_first, int insertion_anchor_count, std::string insertion_anchor_scope, std::string insertion_anchor_strategy, std::string level0_insertion_mode, int level0_anchor_count, int level0_local_kk_steps, int lgkk_multiscale_rounds, int lgkk_rounds_coarse, int lgkk_rounds_pre_final, int lgkk_rounds_final, int lgkk_local_nbrs, int lgkk_landmark_count, std::string lgkk_multiscale_scope, int lgkk_active_limit, std::string final_mode, int tinit_factor, Rcpp::Nullable<int> seed, std::string trace, int trace_every, int metric_neighbor_cap, bool refinement_step_trace, int refinement_step_level_index, int refinement_step_misf_level, int refinement_step_round_start, int refinement_step_round_end);
RcppExport SEXP _grip_grip_layout_globalrep_weighted_trace_adj_cpp(SEXP adj_listSEXP, SEXP weight_listSEXP, SEXP nSEXP, SEXP dimSEXP, SEXP placementSEXP, SEXP roundsSEXP, SEXP final_roundsSEXP, SEXP num_initSEXP, SEXP num_nbrsSEXP, SEXP rSEXP, SEXP sSEXP, SEXP repulsion_factorSEXP, SEXP coarse_repulsion_factorSEXP, SEXP coarse_repulsion_sampleSEXP, SEXP coarse_repulsion_exact_belowSEXP, SEXP final_anchor_factorSEXP, SEXP final_move_scale_after_firstSEXP, SEXP insertion_anchor_countSEXP, SEXP insertion_anchor_scopeSEXP, SEXP insertion_anchor_strategySEXP, SEXP level0_insertion_modeSEXP, SEXP level0_anchor_countSEXP, SEXP level0_local_kk_stepsSEXP, SEXP lgkk_multiscale_roundsSEXP, SEXP lgkk_rounds_coarseSEXP, SEXP lgkk_rounds_pre_finalSEXP, SEXP lgkk_rounds_finalSEXP, SEXP lgkk_local_nbrsSEXP, SEXP lgkk_landmark_countSEXP, SEXP lgkk_multiscale_scopeSEXP, SEXP lgkk_active_limitSEXP, SEXP final_modeSEXP, SEXP tinit_factorSEXP, SEXP seedSEXP, SEXP traceSEXP, SEXP trace_everySEXP, SEXP metric_neighbor_capSEXP, SEXP refinement_step_traceSEXP, SEXP refinement_step_level_indexSEXP, SEXP refinement_step_misf_levelSEXP, SEXP refinement_step_round_startSEXP, SEXP refinement_step_round_endSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type adj_list(adj_listSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::List> >::type weight_list(weight_listSEXP);
    Rcpp::traits::input_parameter< int >::type n(nSEXP);
    Rcpp::traits::input_parameter< int >::type dim(dimSEXP);
    Rcpp::traits::input_parameter< std::string >::type placement(placementSEXP);
    Rcpp::traits::input_parameter< int >::type rounds(roundsSEXP);
    Rcpp::traits::input_parameter< int >::type final_rounds(final_roundsSEXP);
    Rcpp::traits::input_parameter< int >::type num_init(num_initSEXP);
    Rcpp::traits::input_parameter< int >::type num_nbrs(num_nbrsSEXP);
    Rcpp::traits::input_parameter< double >::type r(rSEXP);
    Rcpp::traits::input_parameter< double >::type s(sSEXP);
    Rcpp::traits::input_parameter< double >::type repulsion_factor(repulsion_factorSEXP);
    Rcpp::traits::input_parameter< double >::type coarse_repulsion_factor(coarse_repulsion_factorSEXP);
    Rcpp::traits::input_parameter< int >::type coarse_repulsion_sample(coarse_repulsion_sampleSEXP);
    Rcpp::traits::input_parameter< int >::type coarse_repulsion_exact_below(coarse_repulsion_exact_belowSEXP);
    Rcpp::traits::input_parameter< double >::type final_anchor_factor(final_anchor_factorSEXP);
    Rcpp::traits::input_parameter< double >::type final_move_scale_after_first(final_move_scale_after_firstSEXP);
    Rcpp::traits::input_parameter< int >::type insertion_anchor_count(insertion_anchor_countSEXP);
    Rcpp::traits::input_parameter< std::string >::type insertion_anchor_scope(insertion_anchor_scopeSEXP);
    Rcpp::traits::input_parameter< std::string >::type insertion_anchor_strategy(insertion_anchor_strategySEXP);
    Rcpp::traits::input_parameter< std::string >::type level0_insertion_mode(level0_insertion_modeSEXP);
    Rcpp::traits::input_parameter< int >::type level0_anchor_count(level0_anchor_countSEXP);
    Rcpp::traits::input_parameter< int >::type level0_local_kk_steps(level0_local_kk_stepsSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_multiscale_rounds(lgkk_multiscale_roundsSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_rounds_coarse(lgkk_rounds_coarseSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_rounds_pre_final(lgkk_rounds_pre_finalSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_rounds_final(lgkk_rounds_finalSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_local_nbrs(lgkk_local_nbrsSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_landmark_count(lgkk_landmark_countSEXP);
    Rcpp::traits::input_parameter< std::string >::type lgkk_multiscale_scope(lgkk_multiscale_scopeSEXP);
    Rcpp::traits::input_parameter< int >::type lgkk_active_limit(lgkk_active_limitSEXP);
    Rcpp::traits::input_parameter< std::string >::type final_mode(final_modeSEXP);
    Rcpp::traits::input_parameter< int >::type tinit_factor(tinit_factorSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<int> >::type seed(seedSEXP);
    Rcpp::traits::input_parameter< std::string >::type trace(traceSEXP);
    Rcpp::traits::input_parameter< int >::type trace_every(trace_everySEXP);
    Rcpp::traits::input_parameter< int >::type metric_neighbor_cap(metric_neighbor_capSEXP);
    Rcpp::traits::input_parameter< bool >::type refinement_step_trace(refinement_step_traceSEXP);
    Rcpp::traits::input_parameter< int >::type refinement_step_level_index(refinement_step_level_indexSEXP);
    Rcpp::traits::input_parameter< int >::type refinement_step_misf_level(refinement_step_misf_levelSEXP);
    Rcpp::traits::input_parameter< int >::type refinement_step_round_start(refinement_step_round_startSEXP);
    Rcpp::traits::input_parameter< int >::type refinement_step_round_end(refinement_step_round_endSEXP);
    rcpp_result_gen = Rcpp::wrap(grip_layout_globalrep_weighted_trace_adj_cpp(adj_list, weight_list, n, dim, placement, rounds, final_rounds, num_init, num_nbrs, r, s, repulsion_factor, coarse_repulsion_factor, coarse_repulsion_sample, coarse_repulsion_exact_below, final_anchor_factor, final_move_scale_after_first, insertion_anchor_count, insertion_anchor_scope, insertion_anchor_strategy, level0_insertion_mode, level0_anchor_count, level0_local_kk_steps, lgkk_multiscale_rounds, lgkk_rounds_coarse, lgkk_rounds_pre_final, lgkk_rounds_final, lgkk_local_nbrs, lgkk_landmark_count, lgkk_multiscale_scope, lgkk_active_limit, final_mode, tinit_factor, seed, trace, trace_every, metric_neighbor_cap, refinement_step_trace, refinement_step_level_index, refinement_step_misf_level, refinement_step_round_start, refinement_step_round_end));
    return rcpp_result_gen;
END_RCPP
}
// grip_optimize_kernel_gram_gkk_layout_cpp
Rcpp::List grip_optimize_kernel_gram_gkk_layout_cpp(Rcpp::IntegerMatrix edges, Rcpp::NumericVector edge_weights, Rcpp::NumericVector edge_stiffness, Rcpp::IntegerVector star_center, Rcpp::IntegerVector star_v1, Rcpp::IntegerVector star_v2, Rcpp::NumericVector star_w1, Rcpp::NumericVector star_w2, Rcpp::NumericVector star_cos, Rcpp::NumericVector star_weight, Rcpp::NumericMatrix coords, int max_iter, std::string scale_mode, double scale, double lambda_edge, double lambda_gram, double edge_length_epsilon, double initial_step, double step_shrink, double armijo_factor, double grad_tol, double min_step, double distance_floor, bool recenter, bool return_trace);
RcppExport SEXP _grip_grip_optimize_kernel_gram_gkk_layout_cpp(SEXP edgesSEXP, SEXP edge_weightsSEXP, SEXP edge_stiffnessSEXP, SEXP star_centerSEXP, SEXP star_v1SEXP, SEXP star_v2SEXP, SEXP star_w1SEXP, SEXP star_w2SEXP, SEXP star_cosSEXP, SEXP star_weightSEXP, SEXP coordsSEXP, SEXP max_iterSEXP, SEXP scale_modeSEXP, SEXP scaleSEXP, SEXP lambda_edgeSEXP, SEXP lambda_gramSEXP, SEXP edge_length_epsilonSEXP, SEXP initial_stepSEXP, SEXP step_shrinkSEXP, SEXP armijo_factorSEXP, SEXP grad_tolSEXP, SEXP min_stepSEXP, SEXP distance_floorSEXP, SEXP recenterSEXP, SEXP return_traceSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::IntegerMatrix >::type edges(edgesSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type edge_weights(edge_weightsSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type edge_stiffness(edge_stiffnessSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type star_center(star_centerSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type star_v1(star_v1SEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type star_v2(star_v2SEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type star_w1(star_w1SEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type star_w2(star_w2SEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type star_cos(star_cosSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type star_weight(star_weightSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type coords(coordsSEXP);
    Rcpp::traits::input_parameter< int >::type max_iter(max_iterSEXP);
    Rcpp::traits::input_parameter< std::string >::type scale_mode(scale_modeSEXP);
    Rcpp::traits::input_parameter< double >::type scale(scaleSEXP);
    Rcpp::traits::input_parameter< double >::type lambda_edge(lambda_edgeSEXP);
    Rcpp::traits::input_parameter< double >::type lambda_gram(lambda_gramSEXP);
    Rcpp::traits::input_parameter< double >::type edge_length_epsilon(edge_length_epsilonSEXP);
    Rcpp::traits::input_parameter< double >::type initial_step(initial_stepSEXP);
    Rcpp::traits::input_parameter< double >::type step_shrink(step_shrinkSEXP);
    Rcpp::traits::input_parameter< double >::type armijo_factor(armijo_factorSEXP);
    Rcpp::traits::input_parameter< double >::type grad_tol(grad_tolSEXP);
    Rcpp::traits::input_parameter< double >::type min_step(min_stepSEXP);
    Rcpp::traits::input_parameter< double >::type distance_floor(distance_floorSEXP);
    Rcpp::traits::input_parameter< bool >::type recenter(recenterSEXP);
    Rcpp::traits::input_parameter< bool >::type return_trace(return_traceSEXP);
    rcpp_result_gen = Rcpp::wrap(grip_optimize_kernel_gram_gkk_layout_cpp(edges, edge_weights, edge_stiffness, star_center, star_v1, star_v2, star_w1, star_w2, star_cos, star_weight, coords, max_iter, scale_mode, scale, lambda_edge, lambda_gram, edge_length_epsilon, initial_step, step_shrink, armijo_factor, grad_tol, min_step, distance_floor, recenter, return_trace));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_grip_grip_optimize_edge_isometric_layout_cpp", (DL_FUNC) &_grip_grip_optimize_edge_isometric_layout_cpp, 17},
    {"_grip_grip_edge_repulsive_state_cpp", (DL_FUNC) &_grip_grip_edge_repulsive_state_cpp, 14},
    {"_grip_grip_repulsive_state_cpp", (DL_FUNC) &_grip_grip_repulsive_state_cpp, 8},
    {"_grip_grip_optimize_edge_repulsive_stage_cpp", (DL_FUNC) &_grip_grip_optimize_edge_repulsive_stage_cpp, 22},
    {"_grip_grip_optimize_repulsive_stage_cpp", (DL_FUNC) &_grip_grip_optimize_repulsive_stage_cpp, 16},
    {"_grip_grip_optimize_geodesic_mds_flat_bending_cpp", (DL_FUNC) &_grip_grip_optimize_geodesic_mds_flat_bending_cpp, 21},
    {"_grip_grip_build_tie_average_shortest_path_cache_cpp", (DL_FUNC) &_grip_grip_build_tie_average_shortest_path_cache_cpp, 4},
    {"_grip_grip_optimize_geodesic_mds_adj_cpp", (DL_FUNC) &_grip_grip_optimize_geodesic_mds_adj_cpp, 12},
    {"_grip_grip_optimize_geodesic_mds_cache_cpp", (DL_FUNC) &_grip_grip_optimize_geodesic_mds_cache_cpp, 15},
    {"_grip_grip_optimize_geodesic_mds_flat_cpp", (DL_FUNC) &_grip_grip_optimize_geodesic_mds_flat_cpp, 30},
    {"_grip_grip_geodesic_mds_flat_path_lengths_cpp", (DL_FUNC) &_grip_grip_geodesic_mds_flat_path_lengths_cpp, 6},
    {"_grip_grip_geodesic_mds_flat_repulsion_stats_cpp", (DL_FUNC) &_grip_grip_geodesic_mds_flat_repulsion_stats_cpp, 6},
    {"_grip_grip_geodesic_misf_insert_vertex_cpp", (DL_FUNC) &_grip_grip_geodesic_misf_insert_vertex_cpp, 10},
    {"_grip_grip_layout_weighted_nd_adj_cpp", (DL_FUNC) &_grip_grip_layout_weighted_nd_adj_cpp, 23},
    {"_grip_grip_layout_weighted_nd_trace_adj_cpp", (DL_FUNC) &_grip_grip_layout_weighted_nd_trace_adj_cpp, 29},
    {"_grip_grip_build_weighted_misf_nd_adj_cpp", (DL_FUNC) &_grip_grip_build_weighted_misf_nd_adj_cpp, 6},
    {"_grip_grip_layout_cpp", (DL_FUNC) &_grip_grip_layout_cpp, 14},
    {"_grip_grip_layout_adj_cpp", (DL_FUNC) &_grip_grip_layout_adj_cpp, 14},
    {"_grip_grip_layout_globalrep_adj_cpp", (DL_FUNC) &_grip_grip_layout_globalrep_adj_cpp, 34},
    {"_grip_grip_layout_globalrep_weighted_adj_cpp", (DL_FUNC) &_grip_grip_layout_globalrep_weighted_adj_cpp, 35},
    {"_grip_grip_build_misf_adj_cpp", (DL_FUNC) &_grip_grip_build_misf_adj_cpp, 6},
    {"_grip_grip_build_weighted_misf_adj_cpp", (DL_FUNC) &_grip_grip_build_weighted_misf_adj_cpp, 6},
    {"_grip_grip_layout_trace_adj_cpp", (DL_FUNC) &_grip_grip_layout_trace_adj_cpp, 16},
    {"_grip_grip_layout_globalrep_trace_adj_cpp", (DL_FUNC) &_grip_grip_layout_globalrep_trace_adj_cpp, 36},
    {"_grip_grip_layout_globalrep_weighted_trace_adj_cpp", (DL_FUNC) &_grip_grip_layout_globalrep_weighted_trace_adj_cpp, 42},
    {"_grip_grip_optimize_kernel_gram_gkk_layout_cpp", (DL_FUNC) &_grip_grip_optimize_kernel_gram_gkk_layout_cpp, 25},
    {NULL, NULL, 0}
};

RcppExport void R_init_grip(DllInfo *dll) {
    R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
    R_useDynamicSymbols(dll, FALSE);
}
