# libdistance documentation¶

• The libdistance library provides an efficient implementation of usual (and more unusal) mathematical distance functions.

• It relies on the ArrayFire library for parallel computing on CPUs as well as GPUs (CUDA and OpenCL).

• It implements the following core functions:

• The distance between the two vectors x and y:

distance::dist(x, y, metric)

• The distances between each pair of the two collections of inputs (function similar to scipy.spatial.distance.cdist):

distance::cdist(X, Y, metric)

• The pairwise distances between observations in n-dimensional space (function similar to scipy.spatial.distance.pdist):

distance::pdist(X, metric)

• The Dynamic Time Wrapping cost and path of a distance matrix:

C = distance::dtw::cost(D)
P = distance::dtw::path(C)

• The following metrics are proposed:

• Euclidean

• Cosine similarity

• Kullback-Leibler

• etc…

See Metrics for a full list.