Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

sova.h

Go to the documentation of this file.
00001 /***************************************************************************
00002                           sova.h  -  description
00003                              -------------------
00004     begin                : Mit Aug 6 2003
00005     copyright            : (C) 2003 by Peter Haase
00006     email                : p.haase@tuhh.de
00007  ***************************************************************************/
00008 
00009 /***************************************************************************
00010  *                                                                         *
00011  *   This library is free software; you can redistribute it and/or         *
00012  *   modify it under the terms of the GNU Lesser General Public            *
00013  *   License as published by the Free Software Foundation; either          *
00014  *   version 2.1 of the License, or (at your option) any later version.    *
00015  *                                                                         *
00016  *   This library is distributed in the hope that it will be useful,       *
00017  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00018  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     *
00019  *   Lesser General Public License for more details.                       *
00020  *                                                                         *
00021  *   You should have received a copy of the GNU Lesser General Public      *
00022  *   License along with this library; if not, write to the Free Software   *
00023  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston,                 *
00024  *   MA  02111-1307  USA                                                   *
00025  *                                                                         *
00026  ***************************************************************************/
00027 
00028 #ifndef SOVA_H
00029 #define SOVA_H
00030 
00031 
00032 #include "trellis.h"
00033 #include "misc.h"
00034 #include "signals.h"
00035 #include "trellissoftout.h"
00036 
00037 namespace simthlib{
00038 
00039 
00045 class Sova : public TrellisSoftoutAlgorithm
00046 {
00047   public:
00050     Sova(std::auto_ptr<simthlib::Trellis> usedTrellis);
00051 
00053     virtual ~Sova();
00054 
00057     void softout4Output(const simth::LlvSeq &metr, simth::LlrSeq* softout, const simth::LlrSeq* apri = NULL);
00058 
00061     void softout4Input(const simth::LlvSeq &metr, simth::LlrSeq* softout, const simth::LlrSeq* apri = NULL);
00062 
00065     void decode(const simth::LlvSeq &metr, simth::BitSeq* bs, const simth::LlrSeq* apri = NULL);
00066 
00067     virtual void print(std::ostream &os) const;
00068 
00069 
00070   protected:
00071 
00073       enum OutputMode {OM_DATA,OM_CODED};
00074     
00076     double *metric;
00077 
00079     double *new_metric;
00080 
00082     simth::Array2d<simthlib::TrellisPath> paths;
00083 
00086     virtual void Forward(const simth::LlvSeq &symllv, bool setSoftout, const simth::LlrSeq* apri = NULL);
00087 
00090     virtual void Backward(simth::BitSeq* bs);
00091 
00094     virtual void Backward(simth::LlrSeq* llr, OutputMode outMode);
00095 
00096   private:
00097 
00098     void invariante() const;
00099 
00100 };
00101 
00102 
00103 
00104 inline void Sova::invariante() const
00105 {
00106   if(DEBUG) {}
00107 }
00108 
00109 
00110 
00111 
00112 }
00113 
00114 #endif

Generated on Tue Aug 9 14:35:11 2005 for simtheticlib by  doxygen 1.4.1