|
static void | init_sphere_part_node (struct sphere_part_node *node) |
|
static struct sphere_part_node * | get_sphere_part_node () |
|
static void | compute_gc_norm_vector (void *coords_data, size_t coords_size, size_t coords_count, double prev_gc_norm_vector[], double gc_norm_vector[]) |
|
static void | swap_partition_data (struct temp_partition_data *a, struct temp_partition_data *b) |
|
static size_t | swap_node_type (struct temp_partition_data *part_data, size_t i, int node_type, size_t begin, size_t end) |
|
static void | sort_partition_data (struct temp_partition_data *part_data, size_t I_FULL_size, size_t I_size, size_t U_size, size_t T_size) |
|
static void | partition_data (size_t *local_cell_ids, struct temp_partition_data *part_data, size_t num_cell_ids, size_t threshold, struct sphere_part_node *parent_node, double prev_gc_norm_vector[]) |
|
static int | compare_point_idx_xyz (void const *a, void const *b) |
|
static struct point_sphere_part_node * | partition_point_data (struct point_id_xyz *points, size_t num_points, size_t threshold, double prev_gc_norm_vector[], size_t curr_tree_depth, size_t *max_tree_depth) |
|
struct bnd_sphere_part_search * | yac_bnd_sphere_part_search_new (struct bounding_circle *circles, size_t num_circles) |
|
static int | compare_points_int32_coord (const void *a, const void *b) |
|
static struct point_id_xyz * | get_unique_points (size_t *num_points, yac_const_coordinate_pointer coordinates_xyz, yac_int const *ids, int const *mask) |
|
struct point_sphere_part_search * | yac_point_sphere_part_search_new (size_t num_points, yac_const_coordinate_pointer coordinates_xyz, yac_int const *ids) |
|
struct point_sphere_part_search * | yac_point_sphere_part_search_mask_new (size_t num_points, yac_const_coordinate_pointer coordinates_xyz, yac_int const *ids, int const *mask) |
|
static void | search_bnd_circle_I_node (struct sphere_part_node *node, struct bounding_circle bnd_circle, size_t **restrict overlap_cells, size_t *overlap_cells_array_size, size_t *restrict num_overlap_cells, struct overlaps *search_interval_tree_buffer, double prev_gc_norm_vector[]) |
|
static void | search_big_bnd_circle (struct sphere_part_node *node, struct bounding_circle bnd_circle, size_t **restrict overlap_cells, size_t *overlap_cells_array_size, size_t *restrict num_overlap_cells, struct overlaps *search_interval_tree_buffer, double prev_gc_norm_vector[]) |
| TODO change to iterative implementation and allocate overlap_cells first.
|
|
static void | search_small_bnd_circle (struct sphere_part_node *node, struct bounding_circle bnd_circle, size_t **restrict overlap_cells, size_t *overlap_cells_array_size, size_t *restrict num_overlap_cells, struct overlaps *search_interval_tree_buffer, double prev_gc_norm_vector[]) |
|
static void | search_bnd_circle (struct sphere_part_node *node, struct bounding_circle bnd_circle, size_t **restrict overlap_cells, size_t *overlap_cells_array_size, size_t *restrict num_overlap_cells, struct overlaps *search_interval_tree_buffer, double prev_gc_norm_vector[]) |
|
static void | check_leaf_NN (struct point_id_xyz *points, size_t num_points, double *point_coordinates_xyz, struct sin_cos_angle *best_angle, double(**result_coordinates_xyz)[3], size_t *result_coordinates_xyz_array_size, size_t **local_point_ids, size_t *local_point_ids_array_size, size_t total_num_local_point_ids, size_t *num_local_point_ids) |
|
static void | point_search_NN (struct bounding_circle *bnd_circle, double(**result_coordinates_xyz)[3], size_t *result_coordinates_xyz_array_size, size_t **local_point_ids, size_t *local_point_ids_array_size, size_t total_num_local_point_ids, size_t *num_local_point_ids, double *dot_stack, struct point_sphere_part_node **node_stack, int *flags, size_t curr_tree_depth) |
|
static int | leaf_contains_matching_point (struct point_id_xyz *points, size_t num_points, double coordinate_xyz[3], size_t **local_point_ids, size_t *local_point_ids_array_size, double(**result_coordinates_xyz)[3], size_t *result_coordinates_xyz_array_size, size_t total_num_local_point_ids, size_t *num_local_point_ids) |
|
void | yac_point_sphere_part_search_NN (struct point_sphere_part_search *search, size_t num_points, double(*coordinates_xyz)[3], double *cos_angles, double(**result_coordinates_xyz)[3], size_t *result_coordinates_xyz_array_size, size_t **local_point_ids, size_t *local_point_ids_array_size, size_t *num_local_point_ids) |
|
static int | compare_point_id_xyz_angle (const void *a, const void *b) |
|
static size_t | initial_point_bnd_search_NNN (size_t n, struct point_id_xyz *points, size_t num_points, double *point_coordinates_xyz, struct point_id_xyz_angle **results, size_t *results_array_size) |
|
static struct sin_cos_angle | check_leaf_NNN (size_t n, double *point_coordinates_xyz, struct point_id_xyz *points, size_t num_points, struct point_id_xyz_angle **results, size_t *results_array_size, size_t *num_results, struct sin_cos_angle curr_angle) |
|
static void | point_search_NNN (size_t n, double *point_coordinates_xyz, struct point_id_xyz_angle **results, size_t *results_array_size, size_t *num_results, double *dot_stack, struct point_sphere_part_node **node_stack, int *flags, size_t curr_tree_depth) |
|
void | yac_point_sphere_part_search_NNN (struct point_sphere_part_search *search, size_t num_points, double(*coordinates_xyz)[3], size_t n, double **cos_angles, size_t *cos_angles_array_size, double(**result_coordinates_xyz)[3], size_t *result_coordinates_xyz_array_size, size_t **local_point_ids, size_t *local_point_ids_array_size, size_t *num_local_point_ids) |
|
void | yac_point_sphere_part_search_NNN_bnd_circle (struct point_sphere_part_search *search, size_t num_bnd_circles, struct bounding_circle *bnd_circles, size_t n, size_t **local_point_ids, size_t *local_point_ids_array_size, size_t *num_local_point_ids) |
|
static int | compare_angles_ (void const *a, void const *b) |
|
void | yac_point_sphere_part_search_NNN_ubound (struct point_sphere_part_search *search, size_t num_points, yac_coordinate_pointer coordinates_xyz, size_t n, struct sin_cos_angle *angles) |
|
static void | search_point (struct sphere_part_node *node, double point[], size_t **overlap_cells, size_t *overlap_cells_array_size, size_t *num_overlap_cells, struct overlaps *search_interval_tree_buffer, double prev_gc_norm_vector[]) |
|
void | yac_bnd_sphere_part_search_do_point_search (struct bnd_sphere_part_search *search, yac_coordinate_pointer coordinates_xyz, size_t count, size_t **cells, size_t *num_cells_per_coordinate) |
|
void | yac_bnd_sphere_part_search_do_bnd_circle_search (struct bnd_sphere_part_search *search, struct bounding_circle *bnd_circles, size_t count, size_t **cells, size_t *num_cells_per_bnd_circle) |
|
static void | free_sphere_part_tree (struct sphere_part_node tree) |
|
static void | free_point_sphere_part_tree (struct point_sphere_part_node *tree) |
|
void | yac_delete_point_sphere_part_search (struct point_sphere_part_search *search) |
|
void | yac_bnd_sphere_part_search_delete (struct bnd_sphere_part_search *search) |
|