densearray_kernels 0.0.1

densearray_kernels
Documentation
#include <math.h>
#include <stdint.h>
#include <stdlib.h>

void densearray_square_f32(
    float *dst,
    size_t dim)
{
  for (size_t idx = 0; idx < dim; idx++) {
    float y = dst[idx];
    dst[idx] = y * y;
  }
}

void densearray_sqrt_f32(
    float *dst,
    size_t dim)
{
  for (size_t idx = 0; idx < dim; idx++) {
    float y = dst[idx];
    dst[idx] = sqrtf(y);
  }
}

void densearray_reciprocal_f32(
    float *dst,
    size_t dim)
{
  for (size_t idx = 0; idx < dim; idx++) {
    float y = dst[idx];
    dst[idx] = 1.0f / y;
  }
}

void densearray_add_scalar_f32(
    float *dst,
    size_t dim,
    float c)
{
  for (size_t idx = 0; idx < dim; idx++) {
    dst[idx] += c;
  }
}

void densearray_scale_f32(
    float *dst,
    size_t dim,
    float c)
{
  for (size_t idx = 0; idx < dim; idx++) {
    dst[idx] *= c;
  }
}

void densearray_div_scalar_f32(
    float *dst,
    size_t dim,
    float c)
{
  for (size_t idx = 0; idx < dim; idx++) {
    dst[idx] /= c;
  }
}

void densearray_elem_mult_f32(
    float *dst,
    size_t dim,
    const float *xs)
{
  for (size_t idx = 0; idx < dim; idx++) {
    dst[idx] *= xs[idx];
  }
}

void densearray_elem_div_f32(
    float *dst,
    size_t dim,
    const float *xs)
{
  for (size_t idx = 0; idx < dim; idx++) {
    dst[idx] /= xs[idx];
  }
}

void densearray_elem_ldiv_f32(
    float *dst,
    size_t dim,
    const float *xs)
{
  for (size_t idx = 0; idx < dim; idx++) {
    dst[idx] = xs[idx] / dst[idx];
  }
}

void densearray_vector_add_f32(
    float *dst,
    size_t dim,
    const float *xs,
    float c)
{
  for (size_t idx = 0; idx < dim; idx++) {
    dst[idx] += c * xs[idx];
  }
}

void densearray_vector_average_f32(
    float *dst,
    size_t dim,
    const float *xs,
    float c)
{
  for (size_t idx = 0; idx < dim; idx++) {
    dst[idx] += c * (xs[idx] - dst[idx]);
  }
}