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