SPUC  3.0
Namespaces | Macros
viterbi.cpp File Reference
#include "viterbi.h"
#include <spuc/spuc_defines.h>
#include <cmath>
Include dependency graph for viterbi.cpp:

Namespaces

 SPUC
 fixed point types: spuc_fixed,spuc_ufixed,spuc_int,spuc_uint
 

Macros

#define BUTTERFLY(i, sym)
 

Macro Definition Documentation

#define BUTTERFLY (   i,
  sym 
)
Value:
{ \
int m0,m1;\
\
/* ACS for 0 branch */\
m0 = state[i].metric + euclid[sym]; /* 2*i */\
m1 = state[i+32].metric + euclid[3^sym]; /* 2*i + 64 */\
if(m0 > m1){\
next[2*i].metric = m0;\
next[2*i].path = state[i].path << 1;\
} else {\
next[2*i].metric = m1;\
next[2*i].path = (state[i+32].path << 1)|1;\
}\
/* ACS for 1 branch */\
m0 = state[i].metric + euclid[3^sym]; /* 2*i + 1 */\
m1 = state[i+32].metric + euclid[sym]; /* 2*i + 65 */\
if(m0 > m1){\
next[2*i+1].metric = m0;\
next[2*i+1].path = state[i].path << 1;\
} else {\
next[2*i+1].metric = m1;\
next[2*i+1].path = (state[i+32].path << 1)|1;\
}\
}

Referenced by SPUC::viterbi::decode().