Kullback-Leibler divergence

float16_t riscv_kullback_leibler_f16(const float16_t *pSrcA, const float16_t *pSrcB, uint32_t blockSize)
float32_t riscv_kullback_leibler_f32(const float32_t *pSrcA, const float32_t *pSrcB, uint32_t blockSize)
float64_t riscv_kullback_leibler_f64(const float64_t *pSrcA, const float64_t *pSrcB, uint32_t blockSize)
group Kullback-Leibler

Computes the Kullback-Leibler divergence between two distributions.

Functions

float16_t riscv_kullback_leibler_f16(const float16_t *pSrcA, const float16_t *pSrcB, uint32_t blockSize)

Kullback-Leibler.

Distribution A may contain 0 with Neon version. Result will be right but some exception flags will be set.

Distribution B must not contain 0 probability.

Parameters
  • *pSrcA[in] points to an array of input values for probaility distribution A.

  • *pSrcB[in] points to an array of input values for probaility distribution B.

  • blockSize[in] number of samples in the input array.

Returns

Kullback-Leibler divergence D(A || B)

float32_t riscv_kullback_leibler_f32(const float32_t *pSrcA, const float32_t *pSrcB, uint32_t blockSize)

Kullback-Leibler.

Distribution A may contain 0 with Neon version. Result will be right but some exception flags will be set.

Distribution B must not contain 0 probability.

Parameters
  • *pSrcA[in] points to an array of input values for probaility distribution A.

  • *pSrcB[in] points to an array of input values for probaility distribution B.

  • blockSize[in] number of samples in the input array.

Returns

Kullback-Leibler divergence D(A || B)

float64_t riscv_kullback_leibler_f64(const float64_t *pSrcA, const float64_t *pSrcB, uint32_t blockSize)

Kullback-Leibler.

Parameters
  • *pSrcA[in] points to an array of input values for probaility distribution A.

  • *pSrcB[in] points to an array of input values for probaility distribution B.

  • blockSize[in] number of samples in the input array.

Returns

Kullback-Leibler divergence D(A || B)