1cimport numpy as np
2from libc.stdint cimport int32_t, int64_t, uint32_t, uint64_t
3from libcpp cimport bool
4from libcpp.pair cimport pair
5from libcpp.vector cimport vector
6
7
8cdef extern from "c_utils.hpp":
9    double* max_pts(double *pts, uint64_t n, uint64_t m)
10    double* min_pts(double *pts, uint64_t n, uint64_t m)
11    uint64_t argmax_pts_dim(double *pts, uint64_t *idx,
12                            uint32_t m, uint32_t d,
13                            uint64_t Lidx, uint64_t Ridx)
14    uint64_t argmin_pts_dim(double *pts, uint64_t *idx,
15                            uint32_t m, uint32_t d,
16                            uint64_t Lidx, uint64_t Ridx)
17    void quickSort(double *pts, uint64_t *idx,
18                   uint32_t ndim, uint32_t d,
19                   int64_t l, int64_t r)
20    int64_t partition(double *pts, uint64_t *idx,
21                      uint32_t ndim, uint32_t d,
22                      int64_t l, int64_t r, int64_t p)
23    int64_t partition_given_pivot(double *pts, uint64_t *idx,
24                                  uint32_t ndim, uint32_t d,
25                                  int64_t l, int64_t r, double pivot)
26    int64_t select(double *pts, uint64_t *idx,
27                   uint32_t ndim, uint32_t d,
28                   int64_t l, int64_t r, int64_t n)
29    int64_t pivot(double *pts, uint64_t *idx,
30                  uint32_t ndim, uint32_t d,
31                  int64_t l, int64_t r)
32    void insertSort(double *pts, uint64_t *idx,
33                    uint32_t ndim, uint32_t d,
34                    int64_t l, int64_t r)
35    uint32_t split(double *all_pts, uint64_t *all_idx,
36                   uint64_t Lidx, uint64_t n, uint32_t ndim,
37                   double *mins, double *maxes,
38                   int64_t &split_idx, double &split_val)
39    uint32_t split(double *all_pts, uint64_t *all_idx,
40                   uint64_t Lidx, uint64_t n, uint32_t ndim,
41                   double *mins, double *maxes,
42                   int64_t &split_idx, double &split_val,
43                   bool use_sliding_midpoint)
44