Vector Optimized Library of Kernels  3.3.0
Architecture-tuned implementations of math kernels

Overview

Computes sine and cosine of the input vector simultaneously. More efficient than calling sin and cos separately since argument reduction is shared.

Dispatcher Prototype

void volk_32f_sincos_32f_x2(float* sinVector, float* cosVector, const float* inVector,
unsigned int num_points)

Inputs

  • inVector: The input vector of angles in radians.
  • num_points: The number of data points.

Outputs

  • sinVector: The output vector of sine values.
  • cosVector: The output vector of cosine values.

Example Calculate sin and cos for common angles.

int N = 4;
unsigned int alignment = volk_get_alignment();
float* in = (float*)volk_malloc(sizeof(float)*N, alignment);
float* sin_out = (float*)volk_malloc(sizeof(float)*N, alignment);
float* cos_out = (float*)volk_malloc(sizeof(float)*N, alignment);
in[0] = 0.000;
in[1] = 0.524; // ~pi/6
in[2] = 1.047; // ~pi/3
in[3] = 1.571; // ~pi/2
volk_32f_sincos_32f_x2(sin_out, cos_out, in, N);
for(unsigned int ii = 0; ii < N; ++ii){
printf("sincos(%1.3f) = (%1.3f, %1.3f)\n", in[ii], sin_out[ii], cos_out[ii]);
}
volk_free(sin_out);
volk_free(cos_out);
volk_free
VOLK_API void volk_free(void *aptr)
Free's memory allocated by volk_malloc.
Definition: volk_malloc.c:70
volk_get_alignment
size_t volk_get_alignment(void)
Get the machine alignment in bytes.
Definition: volk.tmpl.c:90
volk_malloc
__VOLK_DECL_BEGIN VOLK_API void * volk_malloc(size_t size, size_t alignment)
Allocate size bytes of data aligned to alignment.
Definition: volk_malloc.c:38