Subversion Repositories testOled

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 mjames 1
#include "ref.h"
2
 
3
void ref_cmplx_mult_cmplx_f32(
4
  float32_t * pSrcA,
5
  float32_t * pSrcB,
6
  float32_t * pDst,
7
  uint32_t numSamples)
8
{
9
        uint32_t i;
10
 
11
        for(i=0;i<numSamples*2;i+=2)
12
        {
13
                pDst[i]   = pSrcA[i] * pSrcB[i]   - pSrcA[i+1] * pSrcB[i+1];
14
                pDst[i+1] = pSrcA[i] * pSrcB[i+1] + pSrcA[i+1] * pSrcB[i];
15
        }
16
}
17
 
18
void ref_cmplx_mult_cmplx_q31(
19
  q31_t * pSrcA,
20
  q31_t * pSrcB,
21
  q31_t * pDst,
22
  uint32_t numSamples)
23
{
24
        uint32_t i;
25
        q31_t mul1, mul2, mul3, mul4;
26
 
27
        for(i=0;i<numSamples*2;i+=2)
28
        {
29
                mul1 = ((q63_t)pSrcA[i]   * pSrcB[i])   >> 33;
30
                mul2 = ((q63_t)pSrcA[i+1] * pSrcB[i+1]) >> 33;
31
                mul3 = ((q63_t)pSrcA[i]   * pSrcB[i+1]) >> 33;
32
                mul4 = ((q63_t)pSrcA[i+1] * pSrcB[i])   >> 33;
33
                pDst[i]   = mul1 - mul2;
34
                pDst[i+1] = mul3 + mul4;
35
        }
36
}
37
 
38
void ref_cmplx_mult_cmplx_q15(
39
  q15_t * pSrcA,
40
  q15_t * pSrcB,
41
  q15_t * pDst,
42
  uint32_t numSamples)
43
{
44
        uint32_t i;
45
        q31_t mul1, mul2, mul3, mul4;
46
 
47
        for(i=0;i<numSamples*2;i+=2)
48
        {
49
                mul1 = ((q31_t)pSrcA[i]   * pSrcB[i])   >> 17;
50
                mul2 = ((q31_t)pSrcA[i+1] * pSrcB[i+1]) >> 17;
51
                mul3 = ((q31_t)pSrcA[i]   * pSrcB[i+1]) >> 17;
52
                mul4 = ((q31_t)pSrcA[i+1] * pSrcB[i])   >> 17;
53
                pDst[i]   = mul1 - mul2;
54
                pDst[i+1] = mul3 + mul4;
55
        }
56
}