57 lines
1.6 KiB
Cython
57 lines
1.6 KiB
Cython
cimport numpy as cnp
|
|
from ...utils._typedefs cimport ITYPE_t, DTYPE_t
|
|
|
|
cnp.import_array()
|
|
|
|
from ._base cimport BaseDistancesReduction64
|
|
from ._middle_term_computer cimport MiddleTermComputer64
|
|
|
|
cdef class ArgKmin64(BaseDistancesReduction64):
|
|
"""float64 implementation of the ArgKmin."""
|
|
|
|
cdef:
|
|
ITYPE_t k
|
|
|
|
ITYPE_t[:, ::1] argkmin_indices
|
|
DTYPE_t[:, ::1] argkmin_distances
|
|
|
|
# Used as array of pointers to private datastructures used in threads.
|
|
DTYPE_t ** heaps_r_distances_chunks
|
|
ITYPE_t ** heaps_indices_chunks
|
|
|
|
|
|
cdef class EuclideanArgKmin64(ArgKmin64):
|
|
"""EuclideanDistance-specialisation of ArgKmin64."""
|
|
cdef:
|
|
MiddleTermComputer64 middle_term_computer
|
|
const DTYPE_t[::1] X_norm_squared
|
|
const DTYPE_t[::1] Y_norm_squared
|
|
|
|
bint use_squared_distances
|
|
|
|
from ._base cimport BaseDistancesReduction32
|
|
from ._middle_term_computer cimport MiddleTermComputer32
|
|
|
|
cdef class ArgKmin32(BaseDistancesReduction32):
|
|
"""float32 implementation of the ArgKmin."""
|
|
|
|
cdef:
|
|
ITYPE_t k
|
|
|
|
ITYPE_t[:, ::1] argkmin_indices
|
|
DTYPE_t[:, ::1] argkmin_distances
|
|
|
|
# Used as array of pointers to private datastructures used in threads.
|
|
DTYPE_t ** heaps_r_distances_chunks
|
|
ITYPE_t ** heaps_indices_chunks
|
|
|
|
|
|
cdef class EuclideanArgKmin32(ArgKmin32):
|
|
"""EuclideanDistance-specialisation of ArgKmin32."""
|
|
cdef:
|
|
MiddleTermComputer32 middle_term_computer
|
|
const DTYPE_t[::1] X_norm_squared
|
|
const DTYPE_t[::1] Y_norm_squared
|
|
|
|
bint use_squared_distances
|