Imported Upstream version 3.2.2
[debian/gnuradio] / gr-trellis / src / lib / trellis_siso_f.cc
index b3d18c2b7b071815c01d72ee9a41e5465ee89b70..ed9ebed61d108580191aed7ee33b5e6dea3ef4a6 100644 (file)
@@ -6,7 +6,7 @@
  * 
  * GNU Radio is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
+ * the Free Software Foundation; either version 3, or (at your option)
  * any later version.
  * 
  * GNU Radio is distributed in the hope that it will be useful,
@@ -129,8 +129,8 @@ inline float min_star(float a, float b)
 void siso_algorithm(int I, int S, int O, 
              const std::vector<int> &NS,
              const std::vector<int> &OS,
-             const std::vector<int> &PS,
-             const std::vector<int> &PI,
+             const std::vector< std::vector<int> > &PS,
+             const std::vector< std::vector<int> > &PI,
              int K,
              int S0,int SK,
              bool POSTI, bool POSTO,
@@ -157,9 +157,9 @@ void siso_algorithm(int I, int S, int O,
       norm=INF;
       for(int j=0;j<S;j++) {
           minm=INF;
-          for(int i=0;i<I;i++) {
-              int i0 = j*I+i;
-              mm=alpha[k*S+PS[i0]]+priori[k*I+PI[i0]]+prioro[k*O+OS[PS[i0]*I+PI[i0]]];
+          for(unsigned int i=0;i<PS[j].size();i++) {
+              //int i0 = j*I+i;
+              mm=alpha[k*S+PS[j][i]]+priori[k*I+PI[j][i]]+prioro[k*O+OS[PS[j][i]*I+PI[j][i]]];
               minm=(*p2mymin)(minm,mm);
           }
           alpha[(k+1)*S+j]=minm;