LIBML  Version 3.2.4
LIBML DSP Software Library
Modules | Macros | Functions | Variables
Float Distances
Collaboration diagram for Float Distances:

Modules

 Dynamic Time Warping Distance
 

Macros

#define Ln2   __logf_data.ln2
 Jensen-Shannon distance between two vectors. More...
 
#define BITS_N   (1 << LOGF_TABLE_BITS)
 
#define OFF   0x3f330000
 

Functions

f32_t tpt_canberra_distance_f32 (const f32_t *aInDataA, const f32_t *aInDataB, uint32_t aCount)
 Canberra distance between two vectors. More...
 
f32_t tpt_chebyshev_distance_f32 (const f32_t *aInDataA, const f32_t *aInDataB, uint32_t aCount)
 Chebyshev distance between two vectors. More...
 
f32_t tpt_cityblock_distance_f32 (const f32_t *aInDataA, const f32_t *aInDataB, uint32_t aCount)
 Cityblock (Manhattan) distance between two vectors. More...
 
f32_t tpt_correlation_distance_f32 (f32_t *aInDataA, f32_t *aInDataB, uint32_t aCount)
 Correlation distance between two vectors. More...
 
f32_t tpt_cosine_distance_f32 (const f32_t *aInDataA, const f32_t *aInDataB, uint32_t aCount)
 Cosine distance between two vectors. More...
 
f64_t tpt_cosine_distance_f64 (const f64_t *aInDataA, const f64_t *aInDataB, uint32_t aCount)
 Cosine distance between two vectors. More...
 
f32_t tpt_euclidean_distance_f32 (const f32_t *aInDataA, const f32_t *aInDataB, uint32_t aCount)
 Euclidean distance between two vectors. More...
 
f64_t tpt_euclidean_distance_f64 (const f64_t *aInDataA, const f64_t *aInDataB, uint32_t aCount)
 Euclidean distance between two vectors. More...
 
static f32_t _logf_ (f32_t x)
 
f32_t tpt_jensenshannon_distance_f32 (const f32_t *aInDataA, const f32_t *aInDataB, uint32_t aCount)
 Jensen-Shannon distance between two vectors. More...
 
f32_t tpt_minkowski_distance_f32 (const f32_t *aInDataA, const f32_t *aInDataB, int32_t aOrder, uint32_t aCount)
 Minkowski distance between two vectors. More...
 

Variables

const struct logf_data __logf_data
 
f32_t tpt_braycurtis_distance_f32 (const f32_t *aInDataA, const f32_t *aInDataB, uint32_t aCount)
 Bray-Curtis distance between two vectors. More...
 

Detailed Description

Distances between two vectors of float values.

Macro Definition Documentation

◆ BITS_N

#define BITS_N   (1 << LOGF_TABLE_BITS)

◆ Ln2

#define Ln2   __logf_data.ln2

Jensen-Shannon distance between two vectors.

This function is assuming that elements of second vector are > 0 and 0 only when the corresponding element of first vector is 0. Otherwise the result of the computation does not make sense and for speed reasons, the cases returning NaN or Infinity are not managed.

When the function is computing x log (x / y) with x == 0 and y == 0, it will compute the right result (0) but a division by zero will occur and should be ignored in client code.

Parameters
[in]aInDataAFirst vector
[in]aInDataBSecond vector
[in]aCountvector length
Returns
distance

◆ OFF

#define OFF   0x3f330000

Function Documentation

◆ _logf_()

static f32_t _logf_ ( f32_t  x)
inlinestatic

◆ tpt_braycurtis_distance_f32()

f32_t tpt_braycurtis_distance_f32 ( const f32_t aInDataA,
const f32_t aInDataB,
uint32_t  aCount 
)

Bray-Curtis distance between two vectors.

Parameters
[in]aInDataAFirst vector
[in]aInDataBSecond vector
[in]aCountvector length
Returns
distance

◆ tpt_canberra_distance_f32()

f32_t tpt_canberra_distance_f32 ( const f32_t aInDataA,
const f32_t aInDataB,
uint32_t  aCount 
)

Canberra distance between two vectors.

This function may divide by zero when samples aInDataA[i] and aInDataB[i] are both zero. The result of the computation will be correct. So the division per zero may be ignored.

Parameters
[in]aInDataAFirst vector
[in]aInDataBSecond vector
[in]aCountvector length
Returns
distance

◆ tpt_chebyshev_distance_f32()

f32_t tpt_chebyshev_distance_f32 ( const f32_t aInDataA,
const f32_t aInDataB,
uint32_t  aCount 
)

Chebyshev distance between two vectors.

Parameters
[in]aInDataAFirst vector
[in]aInDataBSecond vector
[in]aCountvector length
Returns
distance

◆ tpt_cityblock_distance_f32()

f32_t tpt_cityblock_distance_f32 ( const f32_t aInDataA,
const f32_t aInDataB,
uint32_t  aCount 
)

Cityblock (Manhattan) distance between two vectors.

Parameters
[in]aInDataAFirst vector
[in]aInDataBSecond vector
[in]aCountvector length
Returns
distance

◆ tpt_correlation_distance_f32()

f32_t tpt_correlation_distance_f32 ( f32_t aInDataA,
f32_t aInDataB,
uint32_t  aCount 
)

Correlation distance between two vectors.

The input vectors are modified in place!

Parameters
[in]aInDataAFirst vector
[in]aInDataBSecond vector
[in]aCountvector length
Returns
distance

◆ tpt_cosine_distance_f32()

f32_t tpt_cosine_distance_f32 ( const f32_t aInDataA,
const f32_t aInDataB,
uint32_t  aCount 
)

Cosine distance between two vectors.

Parameters
[in]aInDataAFirst vector
[in]aInDataBSecond vector
[in]aCountvector length
Returns
distance

◆ tpt_cosine_distance_f64()

f64_t tpt_cosine_distance_f64 ( const f64_t aInDataA,
const f64_t aInDataB,
uint32_t  aCount 
)

Cosine distance between two vectors.

Parameters
[in]aInDataAFirst vector
[in]aInDataBSecond vector
[in]aCountvector length
Returns
distance

◆ tpt_euclidean_distance_f32()

f32_t tpt_euclidean_distance_f32 ( const f32_t aInDataA,
const f32_t aInDataB,
uint32_t  aCount 
)

Euclidean distance between two vectors.

Parameters
[in]aInDataAFirst vector
[in]aInDataBSecond vector
[in]aCountvector length
Returns
distance

◆ tpt_euclidean_distance_f64()

f64_t tpt_euclidean_distance_f64 ( const f64_t aInDataA,
const f64_t aInDataB,
uint32_t  aCount 
)

Euclidean distance between two vectors.

Parameters
[in]aInDataAFirst vector
[in]aInDataBSecond vector
[in]aCountvector length
Returns
distance

◆ tpt_jensenshannon_distance_f32()

f32_t tpt_jensenshannon_distance_f32 ( const f32_t aInDataA,
const f32_t aInDataB,
uint32_t  aCount 
)

Jensen-Shannon distance between two vectors.

This function is assuming that elements of second vector are > 0 and 0 only when the corresponding element of first vector is 0. Otherwise the result of the computation does not make sense and for speed reasons, the cases returning NaN or Infinity are not managed.

When the function is computing x log (x / y) with x == 0 and y == 0, it will compute the right result (0) but a division by zero will occur and should be ignored in client code.

Parameters
[in]aInDataAFirst vector
[in]aInDataBSecond vector
[in]aCountvector length
Returns
distance

◆ tpt_minkowski_distance_f32()

f32_t tpt_minkowski_distance_f32 ( const f32_t aInDataA,
const f32_t aInDataB,
int32_t  aOrder,
uint32_t  aCount 
)

Minkowski distance between two vectors.

Parameters
[in]aInDataAFirst vector
[in]aInDataBSecond vector
[in]aOrderDistance order
[in]aCountNumber of samples
Returns
distance

Variable Documentation

◆ __logf_data

const struct logf_data __logf_data
Initial value:
= {
.tab =
{
{0x1.661ec79f8f3bep+0, -0x1.57bf7808caadep-2},
{0x1.571ed4aaf883dp+0, -0x1.2bef0a7c06ddbp-2},
{0x1.49539f0f010bp+0, -0x1.01eae7f513a67p-2},
{0x1.3c995b0b80385p+0, -0x1.b31d8a68224e9p-3},
{0x1.30d190c8864a5p+0, -0x1.6574f0ac07758p-3},
{0x1.25e227b0b8eap+0, -0x1.1aa2bc79c81p-3},
{0x1.1bb4a4a1a343fp+0, -0x1.a4e76ce8c0e5ep-4},
{0x1.12358f08ae5bap+0, -0x1.1973c5a611cccp-4},
{0x1.0953f419900a7p+0, -0x1.252f438e10c1ep-5},
{0x1p+0, 0x0p+0},
{0x1.e608cfd9a47acp-1, 0x1.aa5aa5df25984p-5},
{0x1.ca4b31f026aap-1, 0x1.c5e53aa362eb4p-4},
{0x1.b2036576afce6p-1, 0x1.526e57720db08p-3},
{0x1.9c2d163a1aa2dp-1, 0x1.bc2860d22477p-3},
{0x1.886e6037841edp-1, 0x1.1058bc8a07ee1p-2},
{0x1.767dcf5534862p-1, 0x1.4043057b6ee09p-2},
},
.ln2 = 0x1.62e42fefa39efp-1,
.poly = {
-0x1.00ea348b88334p-2,
0x1.5575b0be00b6ap-2,
-0x1.ffffef20a4123p-2,
}}