src/lte/model/lte-mi-error-model.cc
author mmiozzo
Mon, 08 Oct 2012 17:18:22 +0200
changeset 9351 6e074e67a1ad
parent 9047 284d30c8dd42
child 9353 41d2e7b4ff68
permissions -rw-r--r--
HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
     2
/*
8662
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
     3
* Copyright (c) 2011 SIGNET LAB. Department of Information Engineering (DEI), University of Padua
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
     4
*
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
     5
* This program is free software; you can redistribute it and/or modify
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
     6
* it under the terms of the GNU General Public License version 2 as
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
     7
* published by the Free Software Foundation;
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
     8
*
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
     9
* This program is distributed in the hope that it will be useful,
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
    10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
    11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
    12
* GNU General Public License for more details.
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
    13
*
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
    14
* You should have received a copy of the GNU General Public License
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
    15
* along with this program; if not, write to the Free Software
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
    16
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
    17
*
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
    18
*
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
    19
* Original Work Authors:
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
    20
*      Marco Mezzavilla <mezzavil@dei.unipd.it>
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
    21
*      Giovanni Tomasi <tomasigv@gmail.com>
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
    22
* Original Work Acknowldegments:
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
    23
*      This work was supported by the MEDIEVAL (MultiMEDia transport
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
    24
*      for mobIlE Video AppLications) project, which is a
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
    25
*      medium-scale focused research project (STREP) of the 7th
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
    26
*      Framework Programme (FP7)
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
    27
*
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
    28
* Subsequent integration in LENA and extension done by:
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
    29
*      Marco Miozzo <marco.miozzo@cttc.es>
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
    30
*/ 
067fc46999d5 Add Acknowldegments to LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8646
diff changeset
    31
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    32
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    33
#include <list>
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    34
#include <tr1/functional>
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    35
#include <vector>
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    36
#include <ns3/log.h>
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    37
#include <ns3/pointer.h>
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    38
#include <stdint.h>
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    39
#include <cmath>
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    40
#include <stdint.h>
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    41
#include "stdlib.h"
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    42
#include <ns3/lte-mi-error-model.h>
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    43
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    44
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    45
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    46
NS_LOG_COMPONENT_DEFINE ("LteMiErrorModel");
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    47
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    48
namespace ns3 {
9043
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
    49
 
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
    50
  // PCFICH-PDCCH Error model based on 3GPP R4-081920 "LTE PDCCH/PCFICH
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
    51
  //  Demodulation Performance Results with Implementation Margin"
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    52
  
9043
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
    53
  double PdcchPcfichBlerCurveXaxis[PDCCH_PCFICH_CURVE_SIZE] = {
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
    54
      -10,-9.8,-9.6, -9.4, -9.2, -9.0, -8.8, -8.6, -8.4, -8.2, -8.0,
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
    55
      -7.8, -7.6, -7.4, -7.2, -7.0, -6.8, -6.6, -6.4,   -6.2, -6.0, 
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
    56
      -5.8, -5.6, -5.4, -5.2, -5.0, -4.8, -4.6, -4.4, -4.2, -4.0, 
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
    57
      -3.8, -3.6, -3.4, -3.2, -3.0, -2.8, -2.6, -2.4, -2.2, -2.0, 
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
    58
      -1.8, -1.6, -1.4, -1.2, -1.0
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
    59
  };
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
    60
  
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
    61
  double PdcchPcfichBlerCurveYaxis[PDCCH_PCFICH_CURVE_SIZE] = {
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
    62
    0.922602, 0.871559, 0.82334, 0.777789, 0.734758, 0.694107, 0.655706,
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
    63
    0.619429, 0.585159, 0.552785, 0.520927, 0.479229, 0.440869, 0.405579,
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
    64
    0.373114, 0.343104, 0.309947,0.279994, 0.252936, 0.228492, 0.206048,
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
    65
    0.181449, 0.159787, 0.140711, 0.123912, 0.109119, 0.0916184, 0.0769244,
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
    66
    0.0645871, 0.0542285, 0.0454971, 0.037584, 0.0310472, 0.0256473, 
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
    67
    0.0211866, 0.0175023, 0.0144636, 0.0119524, 0.00987724, 0.00816236,
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
    68
    0.00673821, 0.00532283, 0.00420476, 0.00332154, 0.00262385, 0.0020727
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
    69
  
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
    70
  };
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    71
  
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    72
  int TbsIndex[32] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 11, 12, 13, 14, 15, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, -1, -1};
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    73
  
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    74
  uint16_t cbSizeTable[188] = {   // as K column of table 5.1.3-3 of TS 36,212
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    75
    
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    76
    40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128, 136, 144, 152,
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    77
    160, 168, 176, 184, 192, 200, 208, 216, 224, 232, 240, 248, 256, 264,
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    78
    272, 280, 288, 296, 304, 312, 320, 328, 336, 344, 352, 360, 368, 376,
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    79
    384, 392, 400, 408, 416, 424, 432, 440, 448, 456, 464, 472, 480, 488,
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    80
    496, 504, 512, 528, 544, 560, 576, 592, 608, 624, 640, 656, 672, 688,
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    81
    704, 720, 736, 752, 768, 784, 800, 816, 832, 848, 864, 880, 896, 912,
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    82
    928, 944, 960, 976, 992, 1008, 1024, 1056, 1088, 1120, 1152, 1184, 1216,
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    83
    1248, 1280, 1312, 1344, 1376, 1408, 1440, 1472, 1504, 1536, 1568, 1600,
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    84
    1632, 1664, 1696, 1728, 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984,
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    85
    2016, 2048, 2112, 2176, 2240, 2304, 2368, 2432, 2496, 2560, 2624, 2688,    2752, 2816, 2880, 2944, 3008, 3072, 3136, 3200, 3264, 3328, 3392, 3456,
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    86
    3520, 3584, 3648, 3712, 3776, 3840, 3904, 3968, 4032, 4096, 4160, 4224,    4288, 4352, 4416, 4480, 4544, 4608, 4672, 4736, 4800, 4864, 4928, 4992,    5056, 5120, 5184, 5248, 5312, 5376, 5440, 5504, 5568, 5632, 5696, 5760,
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    87
    5824, 5888, 5952, 6016, 6080, 6144   
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    88
  };
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    89
  
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
    90
  ;
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    91
  
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    92
uint16_t cbMiSizeTable [9] = {40, 104, 160, 256, 512, 1024, 2560, 4032, 6144};
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
    93
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
    94
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
    95
double MI_map_qpsk[MI_MAP_QPSK_SIZE] = {
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
    96
  0.0690003489341297,0.0716227274726117,0.0742340978953440,0.0768346104980025,0.0794244103447761,0.0820036374801004,0.0845724271431926,0.0871309099810427,0.0896792122569310,0.0922174560525495,0.0947457594625196,0.0972642367806063,0.0997729986772915,0.102272152368619,0.104761801776403,0.107242047680000,0.109712987859947,0.112174717233782,0.114627327984429,0.117070909681513,0.119505549395992,0.121931331808479,0.124348339311615,0.126756652106854,0.129156348295983,0.131547503967713,0.133930193279620,0.136304488535748,0.138670460260116,0.141028177266400,0.143377706724007,0.145719114220782,0.148052463822533,0.150377818129578,0.152695238330494,0.155004784253224,0.157306514413717,0.159600486062226,0.161886755227418,0.164165376758411,0.166436404364862,0.168699890655220,0.170955887173241,0.173204444432860,0.175445611951529,0.177679438282080,0.179905971043210,0.182125256948655,0.184337341835134,0.186542270689104,0.188740087672416,0.190930836146914,0.193114558698026,0.195291297157414,0.197461092624719,0.199623985488445,0.201780015446038,0.203929221523178,0.206071642092341,0.208207314890659,0.210336277037108,0.212458565049058,0.214574214858220,0.216683261826010,0.218785740758360,0.220881685920000,0.222971131048238,0.225054109366258,0.227130653595954,0.229200795970327,0.231264568245459,0.233322001712082,0.235373127206765,0.237417975122726,0.239456575420291,0.241488957637017,0.243515150897483,0.245535183922773,0.247549085039656,0.249556882189479,0.251558602936785,0.253554274477663,0.255543923647842,0.257527576930545,0.259505260464099,0.261477000049324,0.263442821156701,0.265402748933330,0.267356808209687,0.269305023506185,0.271247419039542,0.273184018728981,0.275114846202242,0.277039924801432,0.278959277588713,0.280872927351831,0.282780896609496,0.284683207616614,0.286579882369384,0.288470942610247,0.290356409832718,0.292236305286078,0.294110649979955,0.295979464688778,0.297842769956116,0.299700586098916,0.301552933211619,0.303399831170183,0.305241299636004,0.307077358059734,0.308908025685008,0.310733321552085,0.312553264501390,0.314367873176978,0.316177166029912,0.317981161321561,0.319779877126821,0.321573331337258,0.323361541664177,0.325144525641625,0.326922300629316,0.328694883815500,0.330462292219754,0.332224542695721,0.333981651933781,0.335733636463664,0.337480512657007,0.339222296729849,0.340959004745076,0.342690652614815,0.344417256102769,0.346138830826504,0.347855392259695,0.349566955734310,0.351273536442761,0.352975149440000,0.354671809645581,0.356363531845667,0.358050330695007,0.359732220718866,0.361409216314917,0.363081331755096,0.364748581187413,0.365760085328701,0.367414435567153,0.369063590345858,0.370707574758377,0.372346413657952,0.373980131661624,0.375608753154257,0.377232302292463,0.378850803008427,0.380464279013651,0.382072753802601,0.383676250656272,0.385274792645668,0.386868402635202,0.388457103286017,0.390040917059232,0.391619866219112,0.393193972836167,0.394763258790181,0.396327745773173,0.397887455292293,0.399442408672650,0.400992627060087,0.402538131423884,0.404078942559405,0.405615081090699,0.407146567473028,0.408673421995349,0.410195664782751,0.411713315798825,0.413226394847994,0.414734921577795,0.416238915481109,0.417738395898345,0.419233382019585,0.420723892886679,0.422209947395301,0.423691564296960,0.425168762200976,0.426641559576410,0.428109974753962,0.429574025927829,0.431033731157521,0.432489108369656,0.433940175359702,0.435386949793697,0.436829449209937,0.438267691020623,0.439701692513483,0.441131470853366,0.442557043083795,0.443978426128502,0.445395636792933,0.446808691765718,0.448217607620120,0.449622400815456,0.451023087698496,0.452419684504825,0.453812207360195,0.455200672281845,0.456585095179796,0.457965491858126,0.459341878016225,0.460714269250023,0.462082681053196,0.463447128818359,0.464807627838230,0.466164193306775,0.467516840320339,0.468865583878754,0.470210438886424,0.471551420153401,0.472888542396436,0.474221820240013,0.475551268217370,0.476876900771498,0.478198732256128,0.479516776936698,0.480831048991307,0.482141562511653,0.483448331503954,0.484751369889858,0.486050691507333,0.487346310111549,0.488638239375742,0.489926492892065,0.491211084172426,0.492492026649314,0.493769333676610,0.495043018530388,0.496313094409703,0.497579574437364,0.498842471660700,0.500101799052307,0.501357569510799,0.502609795861526,0.503858490857300,0.505103667179099,0.506345337436768,0.507583514169703,0.508818209847531,0.510049436870774,0.511277207571509,0.512501534214016,0.513722428995414,0.514939904046294,0.516153971431339,0.517364643149933,0.518571931136767,0.519775847262431,0.520976403334003,0.522173611095627,0.523367482229080,0.524558028354337,0.525745261030125,0.526929191754467,0.528109831965227,0.529287193040638,0.530461286299827,0.531632123003332,0.532799714353619,0.533964071495577,0.535125205517021,0.536283127449183,0.537437848267194,0.538589378890561,0.539737730183644,0.540882912956114,0.542024937963420,0.543163815907238,0.544299557435920,0.545432173144935,0.546561673577308,0.547688069224050,0.548811370524581,0.549931587867153,0.551048731589264,0.552162811978068,0.553273839270780,0.554381823655071,0.555486775269472,0.556588704203755,0.557687620499322,0.558783534149586,0.559876455100345,0.560966393250155,0.562053358450695,0.563137360507132,0.564218409178475,0.565296514177934,0.566371685173266,0.567443931787123,0.568513263597390,0.569579690137527,0.570643220896900,0.571703865321112,0.572761632812328,0.573816532729596,0.574868574389170,0.575917767064821,0.576964119988149,0.578007642348892,0.579048343295230,0.580086231934086,0.581121317331422,0.582153608512535,0.583183114462351,0.584209844125704,0.585233806407631,0.586255010173647,0.587273464250025,0.588289177424073,0.589302158444405,0.590312416021210,0.591319958826520,0.592324795494474,0.593326934621578,0.594326384766964,0.595323154452643,0.596317252163764,0.597308686348855,0.598297465420080,0.599283597753478,0.600267091689206,0.601247955531782,0.602226197550319,0.603201825978762,0.604174849016119,0.605145274826694,0.606113111540312,0.607078367252547,0.608041050024944,0.609001167885238,0.609958728827579,0.610913740812743,0.611866211768347,0.612816149589066,0.613763562136839,0.614708457241078,0.615650842698875,0.616590726275206,0.617528115703136,0.618463018684014,0.619395442887674,0.620325395952633,0.621252885486284,0.622177919065087,0.623100504234766,0.624020648510489,0.624938359377065,0.625853644289121,0.626766510671293,0.627676965918402,0.628585017395639,0.629490672438743,0.630393938354174,0.631294822419294,0.632193331882539,0.633089473963589,0.633983255853542,0.634874684715080,0.635763767682640,0.636650511862579,0.637534924333335,0.638417012145596,0.639296782322459,0.640174241859589,0.641049397725379,0.641922256861109,0.642792826181100,0.643661112572869,0.644527122897282,0.645390863988709,0.646252342655170,0.647111565678489,0.647968539814439,0.648823271792888,0.649675768317950,0.650526036068123,0.651374081696436,0.652219911830588,0.653063533073093,0.653904952001416,0.654744175168111,0.655581209100961,0.656416060303112,0.657248735253208,0.658079240405527,0.658907582190110,0.659733767012895,0.660557801255848,0.661379691277091,0.662199443411030,0.663017063968485,0.663832559236813,0.664645935480037,0.665457198938967,0.666266355831323,0.667073412351863,0.667878374672495,0.668681248942408,0.669482041288181,0.670280757813911,0.671077404601323,0.671871987709891,0.672664513176952,0.673454987017822,0.674243415225909,0.675029803772825,0.675814158608500,0.676596485661295,0.677376790838106,0.678155080024481,0.678931359084725,0.679705633862007,0.680477910178470,0.681248193835337,0.682016490613012,0.682782806271192,0.683547146548964,0.684309517164914,0.685069923817224,0.685828372183780,0.686584867922264,0.687339416670264,0.688092024045367,0.688842695645258,0.689591437047823,0.690338253811239,0.691083151474075,0.691826135555389,0.692567211554818,0.693306384952679,0.694043661210056,0.694779045768899,0.695512544052111,0.696244161463647,0.696973903388596,0.697701775193280,0.698427782225337,0.699151929813817,0.699874223269263,0.700594667883805,0.701313268931245,0.702030031667144,0.702744961328908,0.703458063135872,0.704169342289390,0.704878803972913,0.705586453352076,0.706292295574782,0.706996335771284,0.707698579054265,0.708399030518923,0.709097695243048,0.709794578287106,0.710489684694317,0.711183019490737,0.711874587685330,0.712564394270055,0.713252444219938,0.713938742493152,0.714623294031091,0.715306103758449,0.715987176583295,0.716666517397146,0.717344131075047,0.718020022475638,0.718694196441235,0.719366657797898,0.720037411355506,0.720706461907829,0.721373814232600,0.722039473091587,0.722703443230664,0.723365729379878,0.724026336253524,0.724685268550213,0.725342530952939,0.725998128129151,0.726652064730817,0.727304345394498,0.727954974741409,0.728603957377491,0.729251297893474,0.729897000864946,0.730541070852416,0.731183512401383,0.731824330042397,0.732463528291126,0.733101111648419,0.733737084600371,0.734371451618386,0.735004217159237,0.735635385665134,0.736264961563782,0.736892949268446,0.737519353178008,0.738144177677033,0.738767427135826,0.739389105910496,0.740009218343011,0.740627768761262,0.741244761479122,0.741860200796502,0.742474090999411,0.743086436360017,0.743697241136699,0.744306509574111,0.744914245903234,0.745520454341437,0.746125139092530,0.746728304346822,0.747329954281178,0.747930093059073,0.748528724830645,0.749125853732755,0.749721483889038,0.750315619409959,0.750908264392865,0.751499422922041,0.752089099068763,0.752677296891347,0.753264020435210,0.753849273732912,0.754433060804219,0.755015385656146,0.755596252283013,0.756175664666496,0.756753626775676,0.757330142567093,0.757905215984793,0.758478850960381,0.759051051413067,0.759621821249720,0.760191164364916,0.760759084640984,0.761325585948060,0.761890672144130,0.762454347075082,0.763016614574754,0.763577478464979,0.764136942555635,0.764695010644690,0.765251686518250,0.765806973950608,0.766360876704287,0.766913398530085,0.767464543167128,0.768014314342907,0.768562715773328,0.769109751162760,0.769655424204071,0.770199738578682,0.770742697956607,0.771284305996498,0.771824566345689,0.772363482640238,0.772901058504974,0.773437297553538,0.773972203388427,0.774505779601036,0.775038029771701,0.775568957469741,0.776098566253503,0.776626859670398,0.777153841256950,0.777679514538830,0.778203883030906,0.778726950237274,0.779248719651309,0.779769194755698,0.780288379022484,0.780806275913106,0.781322888878439,0.781838221358831,0.782352276784149,0.782865058573812,0.783376570136834,0.783886814871861,0.784395796167212,0.784903517400915,0.785409981940749,0.785915193144278,0.786419154358893,0.786921868921846,0.787423340160292,0.787923571391323,0.788422565922008,0.788920327049428,0.789416858060713,0.789912162233082,0.790406242833874,0.790899103120589,0.791390746340924,0.791881175732807,0.792370394524432,0.792858405934299,0.793345213171246,0.793830819434485,0.794315227913637,0.794798441788770,0.795280464230428,0.795761298399672,0.796240947448110,0.796719414517932,0.797196702741946,0.797672815243614,0.798147755137077,0.798621525527200,0.799094129509597,0.799565570170669,0.800035850587634,0.800504973828565,0.800972942952416,0.801439761009061,0.801905431039322,0.802369956075006,0.802833339138932,0.803295583244968,0.803756691398058,0.804216666594261,0.804675511820773,0.805133230055969,0.805589824269425,0.806045297421956,0.806499652465644,0.806952892343868,0.807405019991339,0.807856038334126,0.808305950289689,0.808754758766908,0.809202466666116,0.809649076879126,0.810094592289261,0.810539015771388,0.810982350191941,0.811424598408958,0.811865763272103,0.812305847622701,0.812744854293766,0.813182786110026,0.813619645887958,0.814055436435812,0.814490160553643,0.814923821033336,0.815356420658636,0.815787962205180,0.816218448440517,0.816647882124143,0.817076266007528,0.817503602834138,0.817929895339472,0.818355146251079,0.818779358288595,0.819202534163764,0.819624676580468,0.820045788234751,0.820465871814850,0.820884930001221,0.821302965466561,0.821719980875839,0.822135978886325,0.822550962147607,0.822964933301628,0.823377894982703,0.823789849817552,0.824200800425321,0.824610749417610,0.825019699398499,0.825427652964571,0.825834612704941,0.826240581201277,0.826645561027831,0.827049554751458,0.827452564931645,0.827854594120533,0.828255644862944,0.828655719696407,0.829054821151176,0.829452951750264,0.829850114009459,0.830246310437353,0.830641543535362,0.831035815797757,0.831429129711679,0.831821487757172,0.832212892407198,0.832603346127667,0.832992851377459,0.833381410608444,0.833769026265511,0.834155700786586,0.834541436602659,0.834926236137804,0.835310101809205,0.835693036027176,0.836075041195186,0.836456119709880,0.836836273961102,0.837215506331919,0.837593819198639,0.837971214930841,0.838347695891388,0.838723264436456,0.839097922915554,0.839471673671544,0.839844519040665,0.840216461352555,0.840587502930271,0.840957646090311,0.841326893142636,0.841695246390691,0.842062708131428,0.842429280655323,0.842794966246402,0.843159767182260,0.843523685734080,0.843886724166656,0.844248884738415,0.844610169701435,0.844970581301467,0.845330121777955,0.845688793364056,0.846046598286665,0.846403538766425,0.846759617017759,0.847114835248883,0.847469195661827,0.847822700452456,0.848175351810490,0.848527151919523,0.848878102957045,0.849228207094457,0.849577466497095,0.849925883324247,0.850273459729174,0.850620197859128,0.850966099855372,0.851311167853200,0.851655403981954,0.851998810365043,0.852341389119967,0.852683142358329,0.853024072185856,0.853364180702422,0.853703470002060,0.854041942172986,0.854379599297614,0.854716443452576,0.855052476708740,0.855387701131230,0.855722118779441,0.856055731707059,0.856388541962080,0.856720551586826,0.857051762617964,0.857382177086524,0.857711797017917,0.858040624431952,0.858368661342853,0.858695909759279,0.859022371684340
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
    97
};
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
    98
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
    99
double MI_map_qpsk_axis[MI_MAP_QPSK_SIZE] = {
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   100
  0.100000000000000,0.104000000000000,0.108000000000000,0.112000000000000,0.116000000000000,0.120000000000000,0.124000000000000,0.128000000000000,0.132000000000000,0.136000000000000,0.140000000000000,0.144000000000000,0.148000000000000,0.152000000000000,0.156000000000000,0.160000000000000,0.164000000000000,0.168000000000000,0.172000000000000,0.176000000000000,0.180000000000000,0.184000000000000,0.188000000000000,0.192000000000000,0.196000000000000,0.200000000000000,0.204000000000000,0.208000000000000,0.212000000000000,0.216000000000000,0.220000000000000,0.224000000000000,0.228000000000000,0.232000000000000,0.236000000000000,0.240000000000000,0.244000000000000,0.248000000000000,0.252000000000000,0.256000000000000,0.260000000000000,0.264000000000000,0.268000000000000,0.272000000000000,0.276000000000000,0.280000000000000,0.284000000000000,0.288000000000000,0.292000000000000,0.296000000000000,0.300000000000000,0.304000000000000,0.308000000000000,0.312000000000000,0.316000000000000,0.320000000000000,0.324000000000000,0.328000000000000,0.332000000000000,0.336000000000000,0.340000000000000,0.344000000000000,0.348000000000000,0.352000000000000,0.356000000000000,0.360000000000000,0.364000000000000,0.368000000000000,0.372000000000000,0.376000000000000,0.380000000000000,0.384000000000000,0.388000000000000,0.392000000000000,0.396000000000000,0.400000000000000,0.404000000000000,0.408000000000000,0.412000000000000,0.416000000000000,0.420000000000000,0.424000000000000,0.428000000000000,0.432000000000000,0.436000000000000,0.440000000000000,0.444000000000000,0.448000000000000,0.452000000000000,0.456000000000000,0.460000000000000,0.464000000000000,0.468000000000000,0.472000000000000,0.476000000000000,0.480000000000000,0.484000000000000,0.488000000000000,0.492000000000000,0.496000000000000,0.500000000000000,0.504000000000000,0.508000000000000,0.512000000000000,0.516000000000000,0.520000000000000,0.524000000000000,0.528000000000000,0.532000000000000,0.536000000000000,0.540000000000000,0.544000000000000,0.548000000000000,0.552000000000000,0.556000000000000,0.560000000000000,0.564000000000000,0.568000000000000,0.572000000000000,0.576000000000000,0.580000000000000,0.584000000000000,0.588000000000000,0.592000000000000,0.596000000000000,0.600000000000000,0.604000000000000,0.608000000000000,0.612000000000000,0.616000000000000,0.620000000000000,0.624000000000000,0.628000000000000,0.632000000000000,0.636000000000000,0.640000000000000,0.644000000000000,0.648000000000000,0.652000000000000,0.656000000000000,0.660000000000000,0.664000000000000,0.668000000000000,0.672000000000000,0.676000000000000,0.680000000000000,0.684000000000000,0.688000000000000,0.692000000000000,0.696000000000000,0.700000000000000,0.704000000000000,0.708000000000000,0.712000000000000,0.716000000000000,0.720000000000000,0.724000000000000,0.728000000000000,0.732000000000000,0.736000000000000,0.740000000000000,0.744000000000000,0.748000000000000,0.752000000000000,0.756000000000000,0.760000000000000,0.764000000000000,0.768000000000000,0.772000000000000,0.776000000000000,0.780000000000000,0.784000000000000,0.788000000000000,0.792000000000000,0.796000000000000,0.800000000000000,0.804000000000000,0.808000000000000,0.812000000000000,0.816000000000000,0.820000000000000,0.824000000000000,0.828000000000000,0.832000000000000,0.836000000000000,0.840000000000000,0.844000000000000,0.848000000000000,0.852000000000000,0.856000000000000,0.860000000000000,0.864000000000000,0.868000000000000,0.872000000000000,0.876000000000000,0.880000000000000,0.884000000000000,0.888000000000000,0.892000000000000,0.896000000000000,0.900000000000000,0.904000000000000,0.908000000000000,0.912000000000000,0.916000000000000,0.920000000000000,0.924000000000000,0.928000000000000,0.932000000000000,0.936000000000000,0.940000000000000,0.944000000000000,0.948000000000000,0.952000000000000,0.956000000000000,0.960000000000000,0.964000000000000,0.968000000000000,0.972000000000000,0.976000000000000,0.980000000000000,0.984000000000000,0.988000000000000,0.992000000000000,0.996000000000000,1,1.00400000000000,1.00800000000000,1.01200000000000,1.01600000000000,1.02000000000000,1.02400000000000,1.02800000000000,1.03200000000000,1.03600000000000,1.04000000000000,1.04400000000000,1.04800000000000,1.05200000000000,1.05600000000000,1.06000000000000,1.06400000000000,1.06800000000000,1.07200000000000,1.07600000000000,1.08000000000000,1.08400000000000,1.08800000000000,1.09200000000000,1.09600000000000,1.10000000000000,1.10400000000000,1.10800000000000,1.11200000000000,1.11600000000000,1.12000000000000,1.12400000000000,1.12800000000000,1.13200000000000,1.13600000000000,1.14000000000000,1.14400000000000,1.14800000000000,1.15200000000000,1.15600000000000,1.16000000000000,1.16400000000000,1.16800000000000,1.17200000000000,1.17600000000000,1.18000000000000,1.18400000000000,1.18800000000000,1.19200000000000,1.19600000000000,1.20000000000000,1.20400000000000,1.20800000000000,1.21200000000000,1.21600000000000,1.22000000000000,1.22400000000000,1.22800000000000,1.23200000000000,1.23600000000000,1.24000000000000,1.24400000000000,1.24800000000000,1.25200000000000,1.25600000000000,1.26000000000000,1.26400000000000,1.26800000000000,1.27200000000000,1.27600000000000,1.28000000000000,1.28400000000000,1.28800000000000,1.29200000000000,1.29600000000000,1.30000000000000,1.30400000000000,1.30800000000000,1.31200000000000,1.31600000000000,1.32000000000000,1.32400000000000,1.32800000000000,1.33200000000000,1.33600000000000,1.34000000000000,1.34400000000000,1.34800000000000,1.35200000000000,1.35600000000000,1.36000000000000,1.36400000000000,1.36800000000000,1.37200000000000,1.37600000000000,1.38000000000000,1.38400000000000,1.38800000000000,1.39200000000000,1.39600000000000,1.40000000000000,1.40400000000000,1.40800000000000,1.41200000000000,1.41600000000000,1.42000000000000,1.42400000000000,1.42800000000000,1.43200000000000,1.43600000000000,1.44000000000000,1.44400000000000,1.44800000000000,1.45200000000000,1.45600000000000,1.46000000000000,1.46400000000000,1.46800000000000,1.47200000000000,1.47600000000000,1.48000000000000,1.48400000000000,1.48800000000000,1.49200000000000,1.49600000000000,1.50000000000000,1.50400000000000,1.50800000000000,1.51200000000000,1.51600000000000,1.52000000000000,1.52400000000000,1.52800000000000,1.53200000000000,1.53600000000000,1.54000000000000,1.54400000000000,1.54800000000000,1.55200000000000,1.55600000000000,1.56000000000000,1.56400000000000,1.56800000000000,1.57200000000000,1.57600000000000,1.58000000000000,1.58400000000000,1.58800000000000,1.59200000000000,1.59600000000000,1.60000000000000,1.60400000000000,1.60800000000000,1.61200000000000,1.61600000000000,1.62000000000000,1.62400000000000,1.62800000000000,1.63200000000000,1.63600000000000,1.64000000000000,1.64400000000000,1.64800000000000,1.65200000000000,1.65600000000000,1.66000000000000,1.66400000000000,1.66800000000000,1.67200000000000,1.67600000000000,1.68000000000000,1.68400000000000,1.68800000000000,1.69200000000000,1.69600000000000,1.70000000000000,1.70400000000000,1.70800000000000,1.71200000000000,1.71600000000000,1.72000000000000,1.72400000000000,1.72800000000000,1.73200000000000,1.73600000000000,1.74000000000000,1.74400000000000,1.74800000000000,1.75200000000000,1.75600000000000,1.76000000000000,1.76400000000000,1.76800000000000,1.77200000000000,1.77600000000000,1.78000000000000,1.78400000000000,1.78800000000000,1.79200000000000,1.79600000000000,1.80000000000000,1.80400000000000,1.80800000000000,1.81200000000000,1.81600000000000,1.82000000000000,1.82400000000000,1.82800000000000,1.83200000000000,1.83600000000000,1.84000000000000,1.84400000000000,1.84800000000000,1.85200000000000,1.85600000000000,1.86000000000000,1.86400000000000,1.86800000000000,1.87200000000000,1.87600000000000,1.88000000000000,1.88400000000000,1.88800000000000,1.89200000000000,1.89600000000000,1.90000000000000,1.90400000000000,1.90800000000000,1.91200000000000,1.91600000000000,1.92000000000000,1.92400000000000,1.92800000000000,1.93200000000000,1.93600000000000,1.94000000000000,1.94400000000000,1.94800000000000,1.95200000000000,1.95600000000000,1.96000000000000,1.96400000000000,1.96800000000000,1.97200000000000,1.97600000000000,1.98000000000000,1.98400000000000,1.98800000000000,1.99200000000000,1.99600000000000,2,2.00400000000000,2.00800000000000,2.01200000000000,2.01600000000000,2.02000000000000,2.02400000000000,2.02800000000000,2.03200000000000,2.03600000000000,2.04000000000000,2.04400000000000,2.04800000000000,2.05200000000000,2.05600000000000,2.06000000000000,2.06400000000000,2.06800000000000,2.07200000000000,2.07600000000000,2.08000000000000,2.08400000000000,2.08800000000000,2.09200000000000,2.09600000000000,2.10000000000000,2.10400000000000,2.10800000000000,2.11200000000000,2.11600000000000,2.12000000000000,2.12400000000000,2.12800000000000,2.13200000000000,2.13600000000000,2.14000000000000,2.14400000000000,2.14800000000000,2.15200000000000,2.15600000000000,2.16000000000000,2.16400000000000,2.16800000000000,2.17200000000000,2.17600000000000,2.18000000000000,2.18400000000000,2.18800000000000,2.19200000000000,2.19600000000000,2.20000000000000,2.20400000000000,2.20800000000000,2.21200000000000,2.21600000000000,2.22000000000000,2.22400000000000,2.22800000000000,2.23200000000000,2.23600000000000,2.24000000000000,2.24400000000000,2.24800000000000,2.25200000000000,2.25600000000000,2.26000000000000,2.26400000000000,2.26800000000000,2.27200000000000,2.27600000000000,2.28000000000000,2.28400000000000,2.28800000000000,2.29200000000000,2.29600000000000,2.30000000000000,2.30400000000000,2.30800000000000,2.31200000000000,2.31600000000000,2.32000000000000,2.32400000000000,2.32800000000000,2.33200000000000,2.33600000000000,2.34000000000000,2.34400000000000,2.34800000000000,2.35200000000000,2.35600000000000,2.36000000000000,2.36400000000000,2.36800000000000,2.37200000000000,2.37600000000000,2.38000000000000,2.38400000000000,2.38800000000000,2.39200000000000,2.39600000000000,2.40000000000000,2.40400000000000,2.40800000000000,2.41200000000000,2.41600000000000,2.42000000000000,2.42400000000000,2.42800000000000,2.43200000000000,2.43600000000000,2.44000000000000,2.44400000000000,2.44800000000000,2.45200000000000,2.45600000000000,2.46000000000000,2.46400000000000,2.46800000000000,2.47200000000000,2.47600000000000,2.48000000000000,2.48400000000000,2.48800000000000,2.49200000000000,2.49600000000000,2.50000000000000,2.50400000000000,2.50800000000000,2.51200000000000,2.51600000000000,2.52000000000000,2.52400000000000,2.52800000000000,2.53200000000000,2.53600000000000,2.54000000000000,2.54400000000000,2.54800000000000,2.55200000000000,2.55600000000000,2.56000000000000,2.56400000000000,2.56800000000000,2.57200000000000,2.57600000000000,2.58000000000000,2.58400000000000,2.58800000000000,2.59200000000000,2.59600000000000,2.60000000000000,2.60400000000000,2.60800000000000,2.61200000000000,2.61600000000000,2.62000000000000,2.62400000000000,2.62800000000000,2.63200000000000,2.63600000000000,2.64000000000000,2.64400000000000,2.64800000000000,2.65200000000000,2.65600000000000,2.66000000000000,2.66400000000000,2.66800000000000,2.67200000000000,2.67600000000000,2.68000000000000,2.68400000000000,2.68800000000000,2.69200000000000,2.69600000000000,2.70000000000000,2.70400000000000,2.70800000000000,2.71200000000000,2.71600000000000,2.72000000000000,2.72400000000000,2.72800000000000,2.73200000000000,2.73600000000000,2.74000000000000,2.74400000000000,2.74800000000000,2.75200000000000,2.75600000000000,2.76000000000000,2.76400000000000,2.76800000000000,2.77200000000000,2.77600000000000,2.78000000000000,2.78400000000000,2.78800000000000,2.79200000000000,2.79600000000000,2.80000000000000,2.80400000000000,2.80800000000000,2.81200000000000,2.81600000000000,2.82000000000000,2.82400000000000,2.82800000000000,2.83200000000000,2.83600000000000,2.84000000000000,2.84400000000000,2.84800000000000,2.85200000000000,2.85600000000000,2.86000000000000,2.86400000000000,2.86800000000000,2.87200000000000,2.87600000000000,2.88000000000000,2.88400000000000,2.88800000000000,2.89200000000000,2.89600000000000,2.90000000000000,2.90400000000000,2.90800000000000,2.91200000000000,2.91600000000000,2.92000000000000,2.92400000000000,2.92800000000000,2.93200000000000,2.93600000000000,2.94000000000000,2.94400000000000,2.94800000000000,2.95200000000000,2.95600000000000,2.96000000000000,2.96400000000000,2.96800000000000,2.97200000000000,2.97600000000000,2.98000000000000,2.98400000000000,2.98800000000000,2.99200000000000,2.99600000000000,3,3.00400000000000,3.00800000000000,3.01200000000000,3.01600000000000,3.02000000000000,3.02400000000000,3.02800000000000,3.03200000000000,3.03600000000000,3.04000000000000,3.04400000000000,3.04800000000000,3.05200000000000,3.05600000000000,3.06000000000000,3.06400000000000,3.06800000000000,3.07200000000000,3.07600000000000,3.08000000000000,3.08400000000000,3.08800000000000,3.09200000000000,3.09600000000000,3.10000000000000,3.10400000000000,3.10800000000000,3.11200000000000,3.11600000000000,3.12000000000000,3.12400000000000,3.12800000000000,3.13200000000000,3.13600000000000,3.14000000000000,3.14400000000000,3.14800000000000,3.15200000000000,3.15600000000000,3.16000000000000 
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   101
};
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   102
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   103
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   104
double MI_map_16qam[MI_MAP_16QAM_SIZE] = {
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   105
  0.311657658918262,0.312950120539691,0.314237413971671,0.315519576122440,0.316796643531803,0.318068652376208,0.319335638473721,0.320597637288904,0.321854683937597,0.323106813191606,0.324354059483297,0.325596456910107,0.326834039238967,0.328066839910638,0.329294892043971,0.330518228440083,0.331736881586456,0.332950883660966,0.334160266535828,0.335365061781484,0.336565300670404,0.337761014180833,0.338952233000467,0.340138987530061,0.341321307886976,0.342499223908667,0.343672765156109,0.344841960917162,0.346006840209880,0.347167431785766,0.348323764132971,0.349475865479440,0.350623763796002,0.351767486799416,0.352907061955363,0.354042516481386,0.355173877349791,0.356301171290494,0.357424424793826,0.358543664113292,0.359658915268288,0.360770204046774,0.361877556007904,0.362980996484621,0.364080550586204,0.365176243200783,0.366268098997813,0.367356142430507,0.368440397738239,0.369520888948905,0.370597639881256,0.371670674147187,0.372740015154002,0.373805686106636,0.374867710009856,0.375926109670419,0.376980907699207,0.378032126513326,0.379079788338180,0.380123915209511,0.381164528975415,0.382201651298323,0.383235303656960,0.384265507348277,0.385292283489353,0.386315653019272,0.387335636700973,0.388352255123081,0.389365528701704,0.390375477682212,0.391382122140992,0.392385481987174,0.393385576964342,0.394382426652219,0.395376050468322,0.396366467669612,0.397353697354107,0.398337758462481,0.399318669779643,0.400296449936292,0.401271117410453,0.402242690528999,0.403211187469144,0.404176626259925,0.405139024783662,0.406098400777399,0.407054771834328,0.408008155405198,0.408958568799700,0.409906029187841,0.410850553601299,0.411792158934762,0.412730861947246,0.413666679263405,0.414599627374820,0.415529722641272,0.416456981292003,0.417381419426958,0.418303053018017,0.419221897910207,0.420137969822903,0.421051284351017,0.421961856966165,0.422869703017829,0.423774837734502,0.424677276224815,0.425577033478664,0.426474124368308,0.427368563649465,0.428260365962391,0.429149545832951,0.430036117673671,0.430920095784783,0.431801494355260,0.432680327463833,0.433556609080000,0.434430353065026,0.435301573172926,0.436170283051446,0.437036496243021,0.437900226185734,0.438761486214258,0.439620289560789,0.440476649355968,0.441330578629795,0.442182090312532,0.443031197235597,0.443877912132443,0.444722247639439,0.445564216296728,0.446241386800635,0.447078224576877,0.447912700343638,0.448744826834002,0.449574616685344,0.450402082440181,0.451227236547016,0.452050091361174,0.452870659145633,0.453688952071835,0.454504982220502,0.455318761582433,0.456130302059296,0.456939615464412,0.457746713523533,0.458551607875603,0.459354310073525,0.460154831584905,0.460953183792799,0.461749377996449,0.462543425412006,0.463335337173257,0.464125124332333,0.464912797860415,0.465698368648435,0.466481847507761,0.467263245170889,0.468042572292111,0.468819839448194,0.469595057139034,0.470368235788318,0.471139385744175,0.471908517279813,0.472675640594161,0.473440765812498,0.474203902987074,0.474965062097733,0.475724253052520,0.476481485688287,0.477236769771296,0.477990114997806,0.478741530994668,0.479491027319901,0.480238613463271,0.480984298846859,0.481728092825629,0.482470004687985,0.483210043656323,0.483948218887585,0.484684539473797,0.485419014442608,0.486151652757823,0.486882463319931,0.487611454966627,0.488338636473329,0.489064016553688,0.489787603860101,0.490509406984209,0.491229434457395,0.491947694751280,0.492664196278209,0.493378947391734,0.494091956387095,0.494803231501696,0.495512780915570,0.496220612751849,0.496926735077223,0.497631155902401,0.498333883182558,0.499034924817788,0.499734288653544,0.500431982481084,0.501128014037901,0.501822391008160,0.502515121023123,0.503206211661574,0.503895670450239,0.504583504864202,0.505269722327319,0.505954330212623,0.506637335842736,0.507318746490262,0.507998569378189,0.508676811680282,0.509353480521475,0.510028582978256,0.510702126079049,0.511374116804597,0.512044562088338,0.512713468816774,0.513380843829845,0.514046693921296,0.514711025839036,0.515373846285498,0.516035161918000,0.516694979349094,0.517353305146920,0.518010145835549,0.518665507895329,0.519319397763227,0.519971821833164,0.520622786456354,0.521272297941633,0.521920362555787,0.522566986523883,0.523212176029587,0.523855937215487,0.524498276183410,0.525139198994738,0.525778711670719,0.526416820192776,0.527053530502813,0.527688848503523,0.528322780058684,0.528955330993462,0.529586507094702,0.530216314111229,0.530844757754133,0.531471843697058,0.532097577576492,0.532721964992045,0.533345011506736,0.533966722647266,0.534587103904300,0.535206160732734,0.535823898551975,0.536440322746201,0.537055438664637,0.537669251621813,0.538281766897828,0.538892989738615,0.539178067273364,0.539786132274396,0.540392889758560,0.540998345208540,0.541602504072463,0.542205371764164,0.542806953663444,0.543407255116323,0.544006281435298,0.544604037899594,0.545200529755413,0.545795762216181,0.546389740462796,0.546982469643869,0.547573954875970,0.548164201243860,0.548753213800733,0.549340997568455,0.549927557537787,0.550512898668628,0.551097025890235,0.551679944101458,0.552261658170959,0.552842172937442,0.553421493209870,0.553999623767686,0.554576569361034,0.555152334710972,0.555726924509689,0.556300343420714,0.556872596079132,0.557443687091790,0.558013621037505,0.558582402467269,0.559150035904457,0.559716525845022,0.560281876757703,0.560846093084222,0.561409179239477,0.561971139611745,0.562531978562869,0.563091700428456,0.563650309518066,0.564207810115402,0.564764206478494,0.565319502839892,0.565873703406846,0.566426812361491,0.566978833861027,0.567529772037904,0.568079630999995,0.568628414830776,0.569176127589504,0.569722773311388,0.570268356007764,0.570812879666266,0.571356348250997,0.571898765702698,0.572440135938915,0.572980462854166,0.573519750320104,0.574058002185683,0.574595222277320,0.575131414399054,0.575666582332706,0.576200729838040,0.576733860652918,0.577265978493456,0.577797087054178,0.578327190008172,0.578856291007238,0.579384393682044,0.579911501642270,0.580437618476764,0.580962747753680,0.581486893020633,0.582010057804838,0.582532245613257,0.583053459932742,0.583573704230175,0.584092981952606,0.584611296527401,0.585128651362370,0.585645049845912,0.586160495347147,0.586674991216051,0.587188540783595,0.587701147361870,0.588212814244225,0.588723544705397,0.589233342001638,0.589742209370846,0.590250150032694,0.590757167188753,0.591263264022623,0.591768443700053,0.592272709369068,0.592776064160089,0.593278511186061,0.593780053542566,0.594280694307948,0.594780436543432,0.595279283293242,0.595777237584716,0.596274302428425,0.596770480818288,0.597265775731686,0.597760190129576,0.598253726956604,0.598746389141218,0.599238179595775,0.599729101216658,0.600219156884380,0.600708349463695,0.601196681803704,0.601684156737964,0.602170777084593,0.602656545646377,0.603141465210871,0.603625538550505,0.604108768422687,0.604591157569906,0.605072708719830,0.605553424585410,0.606033307864980,0.606512361242351,0.606990587386916,0.607467988953743,0.607944568583673,0.608420328903419,0.608895272525656,0.609369402049119,0.609842720058696,0.610315229125524,0.610786931807076,0.611257830647258,0.611727928176496,0.612197226911830,0.612665729357001,0.613133438002544,0.613600355325870,0.614066483791360,0.614531825850448,0.614996383941710,0.615460160490949,0.615923157911278,0.616385378603209,0.616846824954733,0.617307499341405,0.617767404126425,0.618226541660722,0.618684914283036,0.619142524319995,0.619599374086200,0.620055465884300,0.620510802005075,0.620965384727511,0.621419216318882,0.621872299034823,0.622324635119409,0.622776226805229,0.623227076313467,0.623677185853969,0.624126557625324,0.624575193814935,0.625023096599094,0.625470268143052,0.625916710601093,0.626362426116607,0.626807416822160,0.627251684839564,0.627695232279947,0.628138061243826,0.628580173821171,0.629021572091478,0.629462258123835,0.629902233976989,0.630341501699417,0.630780063329388,0.631217920895030,0.631655076414398,0.632091531895540,0.632527289336557,0.632962350725669,0.633396718041284,0.633830393252054,0.634263378316940,0.634695675185279,0.635127285796839,0.635558212081886,0.635988455961242,0.636418019346346,0.636846904139316,0.637275112233006,0.637702645511069,0.638129505848011,0.638555695109255,0.638981215151193,0.639406067821249,0.639830254957933,0.640253778390900,0.640676639941004,0.641098841420355,0.641520384632376,0.641941271371856,0.642361503425005,0.642781082569512,0.643200010574591,0.643618289201045,0.644035920201310,0.644452905319515,0.644869246291528,0.645284944845014,0.645700002699482,0.646114421566339,0.646528203148942,0.646941349142644,0.647353861234850,0.647765741105063,0.648176990424934,0.648587610858312,0.648997604061295,0.649406971682274,0.649815715361982,0.650223836733548,0.650631337422535,0.651038219046995,0.651444483217509,0.651850131537241,0.652255165601978,0.652659587000179,0.653063397313018,0.653466598114432,0.653869190971165,0.654271177442811,0.654672559081860,0.655073337433740,0.655473514036863,0.655873090422668,0.656272068115661,0.656670448633460,0.657068233486839,0.657465424179768,0.657862022209452,0.658258029066380,0.658653446234359,0.659048275190558,0.659442517405548,0.659836174343345,0.660229247461446,0.660621738210870,0.661013648036199,0.661404978375616,0.661795730660945,0.662185906317689,0.662575506765066,0.662964533416053,0.663352987677419,0.663740870949762,0.664128184627552,0.664514930099163,0.664901108746911,0.665286721947090,0.665671771070013,0.666056257480040,0.666440182535622,0.666823547589330,0.667206353987895,0.667588603072241,0.667970296177519,0.668351434633144,0.668732019762828,0.669112052884615,0.669491535310911,0.669870468348525,0.670248853298696,0.670626691457129,0.671003984114027,0.671380732554126,0.671756938056725,0.672132601895717,0.672507725339626,0.672882309651635,0.673256356089618,0.673629865906174,0.674002840348655,0.674375280659198,0.674747188074758,0.675118563827135,0.675489409143006,0.675859725243957,0.676229513346510,0.676598774662154,0.676967510397375,0.677335721753685,0.677703409927650,0.678070576110922,0.678437221490264,0.678803347247580,0.679168954559946,0.679534044599635,0.679898618534144,0.680262677526226,0.680626222733914,0.680989255310550,0.681351776404812,0.681713787160742,0.682075288717770,0.682436282210744,0.682796768769954,0.683156749521160,0.683516225585618,0.683875198080104,0.684233668116943,0.684591636804033,0.684949105244868,0.685306074538567,0.685662545779900,0.686018520059308,0.686373998462931,0.686728982072633,0.687083471966025,0.687437469216490,0.687790974893207,0.688143990061174,0.688496515781235,0.688848553110099,0.689200103100368,0.689551166800557,0.689901745255117,0.690251839504462,0.690601450584988,0.690950579529097,0.691299227365220,0.691647395117839,0.691995083807507,0.692342294450876,0.692689028060711,0.693035285645921,0.693381068211572,0.693726376758914,0.694071212285399,0.694415575784706,0.694759468246760,0.695102890657750,0.695445844000157,0.695788329252769,0.696130347390701,0.696471899385420,0.696812986204762,0.697153608812953,0.697493768170630,0.697833465234857,0.698172700959150,0.698511476293495,0.698849792184364,0.699187649574739,0.699525049404130,0.699861992608591,0.700198480120743,0.700534512869792,0.700870091781545,0.701205217778434,0.701539891779528,0.701874114700556,0.702207887453923,0.702541210948731,0.702874086090792,0.703206513782652,0.703538494923604,0.703870030409707,0.704201121133804,0.704531767985541,0.704861971851382,0.705191733614625,0.705521054155423,0.705849934350799,0.706178375074663,0.706506377197826,0.706833941588023,0.707161069109924,0.707487760625153,0.707814016992302,0.708139839066952,0.708465227701683,0.708790183746095,0.709114708046822,0.709438801447546,0.709762464789016,0.710085698909062,0.710408504642612,0.710730882821704,0.711052834275504,0.711374359830321,0.711695460309622,0.712016136534047,0.712336389321422,0.712656219486779,0.712975627842363,0.713294615197654,0.713613182359379,0.713931330131523,0.714249059315349,0.714566370709408,0.714883265109557,0.715199743308968,0.715515806098148,0.715831454264947,0.716146688594576,0.716461509869620,0.716775918870051,0.717089916373239,0.717403503153972,0.717716679984462,0.718029447634365,0.718341806870788,0.718653758458309,0.718965303158981,0.719276441732355,0.719587174935486,0.719897503522947,0.720207428246845,0.720516949856830,0.720826069100108,0.721134786721456,0.721443103463231,0.721751020065387,0.722058537265481,0.722365655798690,0.722672376397823,0.722978699793329,0.723284626713314,0.723590157883548,0.723895294027483,0.724200035866257,0.724504384118712,0.724808339501404,0.725111902728611,0.725415074512349,0.725717855562382,0.726020246586232,0.726322248289192,0.726623861374335,0.726925086542528,0.727225924492439,0.727526375920552,0.727826441521177,0.728126121986458,0.728425418006387,0.728724330268813,0.729022859459453,0.729321006261904,0.729618771357650,0.729916155426075,0.730213159144474,0.730509783188062,0.730806028229982,0.731101894941321,0.731397383991114,0.731692496046358,0.731987231772020,0.732281591831049,0.732575576884382,0.732869187590958,0.733162424607725,0.733455288589651,0.733747780189734,0.734039900059010,0.734331648846563,0.734623027199535,0.734914035763136,0.735204675180651,0.735494946093450,0.735784849141002,0.736074384960875,0.736363554188753,0.736652357458442,0.736940795401878,0.737228868649139,0.737516577828450,0.737803923566195,0.738090906486925,0.738377527213364,0.738663786366423,0.738949684565204,0.739235222427010,0.739520400567354,0.739805219599967,0.740089680136806,0.740373782788065,0.740657528162179,0.740940916865834,0.741223949503978,0.741506626679825,0.741788948994865,0.742070917048873,0.742352531439914,0.742633792764357,0.742914701616873,0.743195258590453,0.743475464276410,0.743755319264390,0.744034824142374,0.744313979496694,0.744592785912035,0.744871243971442,0.745149354256332,0.745427117346498,0.745704533820116,0.745981604253757,0.746258329222388,0.746534709299384,0.746810745056534,0.747086437064048,0.747361785890563,0.747636792103153,0.747911456267333,0.748185778947068,0.748459760704780,0.748733402101353,0.749006703696145,0.749279666046988,0.749552289710199,0.749824575240586,0.750096523191456,0.750368134114619,0.750639408560396,0.750910347077629,0.751180950213680,0.751451218514446,0.751721152524359,0.751990752786397,0.752260019842088,0.752528954231515,0.752797556493329,0.753065827164745,0.753333766781560,0.753601375878148,0.753868654987476,0.754135604641103,0.754402225369190,0.754668517700506,0.754934482162430,0.755200119280965,0.755465429580736,0.755730413584999,0.755995071815650,0.756259404793226,0.756523413036913,0.756787097064554,0.757050457392650,0.757313494536370,0.757576209009556,0.757838601324726,0.758100671993084,0.758362421524521,0.758623850427625,0.758884959209684,0.759145748376690,0.759406218433351,0.759666369883087,0.759926203228045,0.760185718969098,0.760444917605852,0.760703799636653,0.760962365558590,0.761220615867503,0.761478551057985,0.761736171623389,0.761993478055836,0.762250470846214,0.762507150484188,0.762763517458204,0.763019572255492,0.763275315362075,0.763530747262772,0.763785868441201,0.764040679379786,0.764295180559764,0.764549372461186,0.764803255562924,0.765056830342675
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   106
};
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   107
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   108
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   109
double MI_map_16qam_axis[MI_MAP_16QAM_SIZE] = {
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   110
  1.58000000000000,1.59000000000000,1.60000000000000,1.61000000000000,1.62000000000000,1.63000000000000,1.64000000000000,1.65000000000000,1.66000000000000,1.67000000000000,1.68000000000000,1.69000000000000,1.70000000000000,1.71000000000000,1.72000000000000,1.73000000000000,1.74000000000000,1.75000000000000,1.76000000000000,1.77000000000000,1.78000000000000,1.79000000000000,1.80000000000000,1.81000000000000,1.82000000000000,1.83000000000000,1.84000000000000,1.85000000000000,1.86000000000000,1.87000000000000,1.88000000000000,1.89000000000000,1.90000000000000,1.91000000000000,1.92000000000000,1.93000000000000,1.94000000000000,1.95000000000000,1.96000000000000,1.97000000000000,1.98000000000000,1.99000000000000,2,2.01000000000000,2.02000000000000,2.03000000000000,2.04000000000000,2.05000000000000,2.06000000000000,2.07000000000000,2.08000000000000,2.09000000000000,2.10000000000000,2.11000000000000,2.12000000000000,2.13000000000000,2.14000000000000,2.15000000000000,2.16000000000000,2.17000000000000,2.18000000000000,2.19000000000000,2.20000000000000,2.21000000000000,2.22000000000000,2.23000000000000,2.24000000000000,2.25000000000000,2.26000000000000,2.27000000000000,2.28000000000000,2.29000000000000,2.30000000000000,2.31000000000000,2.32000000000000,2.33000000000000,2.34000000000000,2.35000000000000,2.36000000000000,2.37000000000000,2.38000000000000,2.39000000000000,2.40000000000000,2.41000000000000,2.42000000000000,2.43000000000000,2.44000000000000,2.45000000000000,2.46000000000000,2.47000000000000,2.48000000000000,2.49000000000000,2.50000000000000,2.51000000000000,2.52000000000000,2.53000000000000,2.54000000000000,2.55000000000000,2.56000000000000,2.57000000000000,2.58000000000000,2.59000000000000,2.60000000000000,2.61000000000000,2.62000000000000,2.63000000000000,2.64000000000000,2.65000000000000,2.66000000000000,2.67000000000000,2.68000000000000,2.69000000000000,2.70000000000000,2.71000000000000,2.72000000000000,2.73000000000000,2.74000000000000,2.75000000000000,2.76000000000000,2.77000000000000,2.78000000000000,2.79000000000000,2.80000000000000,2.81000000000000,2.82000000000000,2.83000000000000,2.84000000000000,2.85000000000000,2.86000000000000,2.87000000000000,2.88000000000000,2.89000000000000,2.90000000000000,2.91000000000000,2.92000000000000,2.93000000000000,2.94000000000000,2.95000000000000,2.96000000000000,2.97000000000000,2.98000000000000,2.99000000000000,3,3.01000000000000,3.02000000000000,3.03000000000000,3.04000000000000,3.05000000000000,3.06000000000000,3.07000000000000,3.08000000000000,3.09000000000000,3.10000000000000,3.11000000000000,3.12000000000000,3.13000000000000,3.14000000000000,3.15000000000000,3.16000000000000,3.17000000000000,3.18000000000000,3.19000000000000,3.20000000000000,3.21000000000000,3.22000000000000,3.23000000000000,3.24000000000000,3.25000000000000,3.26000000000000,3.27000000000000,3.28000000000000,3.29000000000000,3.30000000000000,3.31000000000000,3.32000000000000,3.33000000000000,3.34000000000000,3.35000000000000,3.36000000000000,3.37000000000000,3.38000000000000,3.39000000000000,3.40000000000000,3.41000000000000,3.42000000000000,3.43000000000000,3.44000000000000,3.45000000000000,3.46000000000000,3.47000000000000,3.48000000000000,3.49000000000000,3.50000000000000,3.51000000000000,3.52000000000000,3.53000000000000,3.54000000000000,3.55000000000000,3.56000000000000,3.57000000000000,3.58000000000000,3.59000000000000,3.60000000000000,3.61000000000000,3.62000000000000,3.63000000000000,3.64000000000000,3.65000000000000,3.66000000000000,3.67000000000000,3.68000000000000,3.69000000000000,3.70000000000000,3.71000000000000,3.72000000000000,3.73000000000000,3.74000000000000,3.75000000000000,3.76000000000000,3.77000000000000,3.78000000000000,3.79000000000000,3.80000000000000,3.81000000000000,3.82000000000000,3.83000000000000,3.84000000000000,3.85000000000000,3.86000000000000,3.87000000000000,3.88000000000000,3.89000000000000,3.90000000000000,3.91000000000000,3.92000000000000,3.93000000000000,3.94000000000000,3.95000000000000,3.96000000000000,3.97000000000000,3.98000000000000,3.99000000000000,4,4.01000000000000,4.02000000000000,4.03000000000000,4.04000000000000,4.05000000000000,4.06000000000000,4.07000000000000,4.08000000000000,4.09000000000000,4.10000000000000,4.11000000000000,4.12000000000000,4.13000000000000,4.14000000000000,4.15000000000000,4.16000000000000,4.17000000000000,4.18000000000000,4.19000000000000,4.20000000000000,4.21000000000000,4.22000000000000,4.23000000000000,4.24000000000000,4.25000000000000,4.26000000000000,4.27000000000000,4.28000000000000,4.29000000000000,4.30000000000000,4.31000000000000,4.32000000000000,4.33000000000000,4.34000000000000,4.35000000000000,4.36000000000000,4.37000000000000,4.38000000000000,4.39000000000000,4.40000000000000,4.41000000000000,4.42000000000000,4.43000000000000,4.44000000000000,4.45000000000000,4.46000000000000,4.47000000000000,4.48000000000000,4.49000000000000,4.50000000000000,4.51000000000000,4.52000000000000,4.53000000000000,4.54000000000000,4.55000000000000,4.56000000000000,4.57000000000000,4.58000000000000,4.59000000000000,4.60000000000000,4.61000000000000,4.62000000000000,4.63000000000000,4.64000000000000,4.65000000000000,4.66000000000000,4.67000000000000,4.68000000000000,4.69000000000000,4.70000000000000,4.71000000000000,4.72000000000000,4.73000000000000,4.74000000000000,4.75000000000000,4.76000000000000,4.77000000000000,4.78000000000000,4.79000000000000,4.80000000000000,4.81000000000000,4.82000000000000,4.83000000000000,4.84000000000000,4.85000000000000,4.86000000000000,4.87000000000000,4.88000000000000,4.89000000000000,4.90000000000000,4.91000000000000,4.92000000000000,4.93000000000000,4.94000000000000,4.95000000000000,4.96000000000000,4.97000000000000,4.98000000000000,4.99000000000000,5,5.01000000000000,5.02000000000000,5.03000000000000,5.04000000000000,5.05000000000000,5.06000000000000,5.07000000000000,5.08000000000000,5.09000000000000,5.10000000000000,5.11000000000000,5.12000000000000,5.13000000000000,5.14000000000000,5.15000000000000,5.16000000000000,5.17000000000000,5.18000000000000,5.19000000000000,5.20000000000000,5.21000000000000,5.22000000000000,5.23000000000000,5.24000000000000,5.25000000000000,5.26000000000000,5.27000000000000,5.28000000000000,5.29000000000000,5.30000000000000,5.31000000000000,5.32000000000000,5.33000000000000,5.34000000000000,5.35000000000000,5.36000000000000,5.37000000000000,5.38000000000000,5.39000000000000,5.40000000000000,5.41000000000000,5.42000000000000,5.43000000000000,5.44000000000000,5.45000000000000,5.46000000000000,5.47000000000000,5.48000000000000,5.49000000000000,5.50000000000000,5.51000000000000,5.52000000000000,5.53000000000000,5.54000000000000,5.55000000000000,5.56000000000000,5.57000000000000,5.58000000000000,5.59000000000000,5.60000000000000,5.61000000000000,5.62000000000000,5.63000000000000,5.64000000000000,5.65000000000000,5.66000000000000,5.67000000000000,5.68000000000000,5.69000000000000,5.70000000000000,5.71000000000000,5.72000000000000,5.73000000000000,5.74000000000000,5.75000000000000,5.76000000000000,5.77000000000000,5.78000000000000,5.79000000000000,5.80000000000000,5.81000000000000,5.82000000000000,5.83000000000000,5.84000000000000,5.85000000000000,5.86000000000000,5.87000000000000,5.88000000000000,5.89000000000000,5.90000000000000,5.91000000000000,5.92000000000000,5.93000000000000,5.94000000000000,5.95000000000000,5.96000000000000,5.97000000000000,5.98000000000000,5.99000000000000,6,6.01000000000000,6.02000000000000,6.03000000000000,6.04000000000000,6.05000000000000,6.06000000000000,6.07000000000000,6.08000000000000,6.09000000000000,6.10000000000000,6.11000000000000,6.12000000000000,6.13000000000000,6.14000000000000,6.15000000000000,6.16000000000000,6.17000000000000,6.18000000000000,6.19000000000000,6.20000000000000,6.21000000000000,6.22000000000000,6.23000000000000,6.24000000000000,6.25000000000000,6.26000000000000,6.27000000000000,6.28000000000000,6.29000000000000,6.30000000000000,6.31000000000000,6.32000000000000,6.33000000000000,6.34000000000000,6.35000000000000,6.36000000000000,6.37000000000000,6.38000000000000,6.39000000000000,6.40000000000000,6.41000000000000,6.42000000000000,6.43000000000000,6.44000000000000,6.45000000000000,6.46000000000000,6.47000000000000,6.48000000000000,6.49000000000000,6.50000000000000,6.51000000000000,6.52000000000000,6.53000000000000,6.54000000000000,6.55000000000000,6.56000000000000,6.57000000000000,6.58000000000000,6.59000000000000,6.60000000000000,6.61000000000000,6.62000000000000,6.63000000000000,6.64000000000000,6.65000000000000,6.66000000000000,6.67000000000000,6.68000000000000,6.69000000000000,6.70000000000000,6.71000000000000,6.72000000000000,6.73000000000000,6.74000000000000,6.75000000000000,6.76000000000000,6.77000000000000,6.78000000000000,6.79000000000000,6.80000000000000,6.81000000000000,6.82000000000000,6.83000000000000,6.84000000000000,6.85000000000000,6.86000000000000,6.87000000000000,6.88000000000000,6.89000000000000,6.90000000000000,6.91000000000000,6.92000000000000,6.93000000000000,6.94000000000000,6.95000000000000,6.96000000000000,6.97000000000000,6.98000000000000,6.99000000000000,7,7.01000000000000,7.02000000000000,7.03000000000000,7.04000000000000,7.05000000000000,7.06000000000000,7.07000000000000,7.08000000000000,7.09000000000000,7.10000000000000,7.11000000000000,7.12000000000000,7.13000000000000,7.14000000000000,7.15000000000000,7.16000000000000,7.17000000000000,7.18000000000000,7.19000000000000,7.20000000000000,7.21000000000000,7.22000000000000,7.23000000000000,7.24000000000000,7.25000000000000,7.26000000000000,7.27000000000000,7.28000000000000,7.29000000000000,7.30000000000000,7.31000000000000,7.32000000000000,7.33000000000000,7.34000000000000,7.35000000000000,7.36000000000000,7.37000000000000,7.38000000000000,7.39000000000000,7.40000000000000,7.41000000000000,7.42000000000000,7.43000000000000,7.44000000000000,7.45000000000000,7.46000000000000,7.47000000000000,7.48000000000000,7.49000000000000,7.50000000000000,7.51000000000000,7.52000000000000,7.53000000000000,7.54000000000000,7.55000000000000,7.56000000000000,7.57000000000000,7.58000000000000,7.59000000000000,7.60000000000000,7.61000000000000,7.62000000000000,7.63000000000000,7.64000000000000,7.65000000000000,7.66000000000000,7.67000000000000,7.68000000000000,7.69000000000000,7.70000000000000,7.71000000000000,7.72000000000000,7.73000000000000,7.74000000000000,7.75000000000000,7.76000000000000,7.77000000000000,7.78000000000000,7.79000000000000,7.80000000000000,7.81000000000000,7.82000000000000,7.83000000000000,7.84000000000000,7.85000000000000,7.86000000000000,7.87000000000000,7.88000000000000,7.89000000000000,7.90000000000000,7.91000000000000,7.92000000000000,7.93000000000000,7.94000000000000,7.95000000000000,7.96000000000000,7.97000000000000,7.98000000000000,7.99000000000000,8,8.01000000000000,8.02000000000000,8.03000000000000,8.04000000000000,8.05000000000000,8.06000000000000,8.07000000000000,8.08000000000000,8.09000000000000,8.10000000000000,8.11000000000000,8.12000000000000,8.13000000000000,8.14000000000000,8.15000000000000,8.16000000000000,8.17000000000000,8.18000000000000,8.19000000000000,8.20000000000000,8.21000000000000,8.22000000000000,8.23000000000000,8.24000000000000,8.25000000000000,8.26000000000000,8.27000000000000,8.28000000000000,8.29000000000000,8.30000000000000,8.31000000000000,8.32000000000000,8.33000000000000,8.34000000000000,8.35000000000000,8.36000000000000,8.37000000000000,8.38000000000000,8.39000000000000,8.40000000000000,8.41000000000000,8.42000000000000,8.43000000000000,8.44000000000000,8.45000000000000,8.46000000000000,8.47000000000000,8.48000000000000,8.49000000000000,8.50000000000000,8.51000000000000,8.52000000000000,8.53000000000000,8.54000000000000,8.55000000000000,8.56000000000000,8.57000000000000,8.58000000000000,8.59000000000000,8.60000000000000,8.61000000000000,8.62000000000000,8.63000000000000,8.64000000000000,8.65000000000000,8.66000000000000,8.67000000000000,8.68000000000000,8.69000000000000,8.70000000000000,8.71000000000000,8.72000000000000,8.73000000000000,8.74000000000000,8.75000000000000,8.76000000000000,8.77000000000000,8.78000000000000,8.79000000000000,8.80000000000000,8.81000000000000,8.82000000000000,8.83000000000000,8.84000000000000,8.85000000000000,8.86000000000000,8.87000000000000,8.88000000000000,8.89000000000000,8.90000000000000,8.91000000000000,8.92000000000000,8.93000000000000,8.94000000000000,8.95000000000000,8.96000000000000,8.97000000000000,8.98000000000000,8.99000000000000,9,9.01000000000000,9.02000000000000,9.03000000000000,9.04000000000000,9.05000000000000,9.06000000000000,9.07000000000000,9.08000000000000,9.09000000000000,9.10000000000000,9.11000000000000,9.12000000000000,9.13000000000000,9.14000000000000,9.15000000000000,9.16000000000000,9.17000000000000,9.18000000000000,9.19000000000000,9.20000000000000,9.21000000000000,9.22000000000000,9.23000000000000,9.24000000000000,9.25000000000000,9.26000000000000,9.27000000000000,9.28000000000000,9.29000000000000,9.30000000000000,9.31000000000000,9.32000000000000,9.33000000000000,9.34000000000000,9.35000000000000,9.36000000000000,9.37000000000000,9.38000000000000,9.39000000000000,9.40000000000000,9.41000000000000,9.42000000000000,9.43000000000000,9.44000000000000,9.45000000000000,9.46000000000000,9.47000000000000,9.48000000000000,9.49000000000000,9.50000000000000,9.51000000000000,9.52000000000000,9.53000000000000,9.54000000000000,9.55000000000000,9.56000000000000,9.57000000000000,9.58000000000000,9.59000000000000,9.60000000000000,9.61000000000000,9.62000000000000,9.63000000000000,9.64000000000000,9.65000000000000,9.66000000000000,9.67000000000000,9.68000000000000,9.69000000000000,9.70000000000000,9.71000000000000,9.72000000000000,9.73000000000000,9.74000000000000,9.75000000000000,9.76000000000000,9.77000000000000,9.78000000000000,9.79000000000000,9.80000000000000,9.81000000000000,9.82000000000000,9.83000000000000,9.84000000000000,9.85000000000000,9.86000000000000,9.87000000000000,9.88000000000000,9.89000000000000,9.90000000000000,9.91000000000000,9.92000000000000,9.93000000000000,9.94000000000000,9.95000000000000,9.96000000000000,9.97000000000000,9.98000000000000,9.99000000000000,10
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   111
};
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   112
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   113
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   114
double MI_map_64qam[MI_MAP_64QAM_SIZE] = {
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   115
  0.425799529860325,0.432152765542146,0.438303333109796,0.444263205182515,0.450043499926380,0.455654548839940,0.461105958376616,0.466406666073195,0.471564991764758,0.476588684391735,0.481484964841807,0.486260565215892,0.490921764861760,0.495474423479624,0.499924011570203,0.504275638466426,0.508316095962828,0.512480868968701,0.516559604267418,0.520556384497397,0.524475035168484,0.528319142485428,0.532092069836711,0.535796973058398,0.539436814572552,0.543014376490667,0.546532272764480,0.549992960459215,0.553398750217790,0.556751815978591,0.560054204004096,0.563307841272820,0.566514543282682,0.569676021309938,0.572793889164217,0.575869669476956,0.578904799557506,0.581900636848503,0.584858464009598,0.587779493656374,0.590664872779198,0.593515686864887,0.596332963742270,0.599117677171195,0.601870750193001,0.604593058259183,0.607285432153689,0.609948660723186,0.612583493428562,0.615190642729957,0.617770786316747,0.620324569193049,0.622852605628593,0.625355480984068,0.627833753419418,0.630287955492967,0.632718595658690,0.635126159668431,0.637511111885396,0.639873896514816,0.642214938757252,0.644534645889648,0.646833408278874,0.649111600332195,0.651369581388777,0.653607696556073,0.655608484392638,0.657805717412332,0.659983677718680,0.662142681139671,0.664283032363931,0.666405025526737,0.668508944760826,0.670595064714242,0.672663651037313,0.674714960840703,0.676749243126363,0.678766739193092,0.680767683018287,0.682752301617383,0.684720815382362,0.686673438400645,0.688610378755565,0.690531838809586,0.692438015471299,0.694329100447223,0.696205280479322,0.698066737569122,0.699913649189236,0.701746188483077,0.703564524453455,0.705368822140750,0.707159242791271,0.708935944016411,0.710699079943126,0.712448801356279,0.714185255833317,0.715908587871746,0.717618939009822,0.719316447940871,0.721001250621597,0.722673480374747,0.724333267986447,0.725980741798532,0.727616027796153,0.729239249690943,0.730850528999982,0.732449985120826,0.734037735402802,0.735613895214796,0.737178578009731,0.738731895385921,0.740273957145479,0.741804871349938,0.743324744373253,0.744833680952319,0.746331784235150,0.747819155826846,0.749295895833466,0.750762102903929,0.752217874270045,0.753663305784784,0.755098491958862,0.756523525995766,0.757938499825260,0.759343504135493,0.760738628403754,0.762123960925963,0.763499588844953,0.764865598177612,0.766222073840946,0.767569099677114,0.768906758477484,0.770235132005777,0.771554301020318,0.772864345295472,0.774165343642269,0.775457373928296,0.776740513096859,0.778014837185474,0.779280421343709,0.780537339850405,0.781785666130325,0.783025472770225,0.784256831534413,0.785479813379787,0.786694488470398,0.787900926191545,0.789099195163442,0.790289363254448,0.791471497593914,0.792645664584633,0.793811929914931,0.794970358570407,0.796121014845337,0.797263962353755,0.798399264040234,0.799526982190367,0.800647178440967,0.801759913789999,0.802865248606254,0.803963242638769,0.805053955026016,0.806137444304855,0.807213768419270,0.808282984728894,0.809345150017332,0.810400320500280,0.811448551833468,0.812489899120409,0.813524416919983,0.814552159253849,0.815573179613692,0.816587530968313,0.817595265770578,0.818596435964203,0.819591092990417,0.820579287794472,0.821561070832035,0.822536492075441,0.823505601019831,0.824468446689165,0.825425077642123,0.826375541977893,0.827319887341849,0.828258160931124,0.829190409500083,0.830116679365692,0.831037016412797,0.831951466099307,0.832860073461282,0.833762883117939,0.834659939276567,0.835551285737364,0.836436965898189,0.837317022759230,0.838191498927611,0.839060436621904,0.839923877676581,0.840781863546392,0.841634435310673,0.842481633677584,0.843323498988284,0.844160071221040,0.844991389995275,0.845817494575551,0.846638423875496,0.847454216461666,0.848264910557361,0.849070544046372,0.849871154476679,0.850666779064099,0.851457454695876,0.852243217934223,0.853024105019807,0.853800151875197,0.854571394108254,0.855337867015476,0.856099605585298,0.856856644501345,0.857609018145645,0.858356760601792,0.859099905658072,0.859838486810540,0.860572537266066,0.861302089945333,0.862027177485795,0.862747832244604,0.863464086301487,0.864175971461601,0.864883519258332,0.865586760956078,0.866285727552980,0.866980449783629,0.867670958121734,0.868357282782756,0.869039453726513,0.869717500659743,0.870391453038652,0.871061340071411,0.871727190720637,0.872389033705835,0.873046897505813,0.873700810361071,0.874350800276154,0.874996895021982,0.875639122138150,0.876277508935201,0.876912082496870,0.877542869682304,0.878169897128256,0.878793191251247,0.879412778249713,0.880028684106114,0.880640934589032,0.881249555255233,0.881854571451712,0.882456008317711,0.883053890786716,0.883648243588427,0.884239091250713,0.884826458101536,0.885410368270855,0.885990845692519,0.886567914106118,0.887141597058834,0.887711917907260,0.888278899819195,0.888842565775432,0.889402938571516,0.889960040819480,0.890513894949575,0.891064523211966,0.891611947678416,0.892156190243955,0.892697272628524,0.893235216378603,0.893770042868823,0.894301773303559,0.894830428718505,0.895356029982234,0.895878597797741,0.896398152703964,0.896914715077295,0.897428305133075,0.897938942927067,0.898446648356916,0.898951441163598,0.899453340932846,0.899952367096565,0.900448538934234,0.900941875574287,0.901432395995483,0.901920119028266,0.902405063356100,0.902887247516799,0.903366689903843,0.903843408767670,0.904317422216969,0.904788748219949,0.905257404605599,0.905723409064933,0.906186779152225,0.906647532286227,0.907105685751380,0.907561256699007,0.908014262148496,0.908464718988472,0.908912643977957,0.909358053747514,0.909800964800386,0.910241393513615,0.910679356139161,0.911114868804997,0.911547947516201,0.911978608156038,0.912406866487023,0.912832738151982,0.913256238675097,0.913677383462941,0.914096187805506,0.914512666877219,0.914926835737943,0.915338709333977,0.915748302499040,0.916155629955243,0.916560706314060,0.916963546077282,0.917364163637964,0.917762573281363,0.918158789185863,0.918552825423898,0.918944695962863,0.919334414666011,0.919721995293345,0.920107451502508,0.920490796849650,0.920872044790299,0.921251208680219,0.921628301776257,0.922003337237186,0.922376328124537,0.922747287403428,0.923116227943374,0.923483162519103,0.923848103811354,0.924211064407671,0.924572056803190,0.924931093401418,0.925288186515000,0.925643348366488,0.925996591089095,0.926347926727443,0.926697367238308,0.927044924491352,0.927390610269852,0.927734436271422,0.928076414108724,0.928416555310182,0.928754871320675,0.929091373502235,0.929426073134737,0.929758981416575,0.930090109465339,0.930419468318485,0.930747068933993,0.931072922191030,0.931397038890590,0.931719429756146,0.932040105434284,0.932359076495335,0.932676353434002,0.932991946669978,0.933305866548562,0.933618123341268,0.933928727246427,0.934237688389781,0.934545016825084,0.934850722534678,0.935154815430080,0.935457305352558,0.935758202073696,0.936057515295968,0.936355254653287,0.936651429711569,0.936946049969278,0.937239124857973,0.937530663742845,0.937820675923255,0.938109170633261,0.938396157042145,0.938681644254934,0.938965641312914,0.939248157194139,0.939529200813942,0.939808781025436,0.940086906620007,0.940363586327811,0.940638828818259,0.940912642700505,0.941185036523922,0.941456018778579,0.941725597895711,0.941993782248186,0.942260580150969,0.942525999861578,0.942790049580541,0.943052737451843,0.943314071563375,0.943574059947377,0.943832710580874,0.944090031386110,0.944346030230983,0.944600714929465,0.944854093242033,0.945106172876082,0.945356961486342,0.945606466675294,0.945854695993572,0.946101656940372,0.946347356963852,0.946591803461529,0.946835003780675,0.947076965218706,0.947317695023567,0.947557200394124,0.947795488480533,0.948032566384627,0.948268441160285,0.948503119813805,0.948736609304268,0.948968916543906,0.949200048398461,0.949430011687544,0.949658813184989,0.949886459619203,0.950112957673521,0.950338313986543,0.950562535152485,0.950785627721511,0.951007598200077,0.951228453051260,0.951448198695091,0.951666841508883,0.951884387827557,0.952100843943963,0.952316216109200,0.952530510532938,0.952743733383722,0.952955890789296,0.953166988836902,0.953377033573592,0.953586031006531,0.953793987103297,0.954000907792180,0.954206798962479,0.954411666464793,0.954615516111316,0.954818353676125,0.955020184895462,0.955221015468023,0.955420851055236,0.955619697281543,0.955817559734673,0.956014443965919,0.956210355490410,0.956405299787380,0.956599282300436,0.956792308437822,0.956984383572683,0.957175513043328,0.957365702153483,0.957554956172555,0.957743280335878,0.957930679844975,0.958117159867796,0.958302725538980,0.958487381960088,0.958671134199857,0.958853987294433,0.959035946247621,0.959217016031113,0.959397201584732,0.959576507816660,0.959754939603674,0.959932501791373,0.960109199194410,0.960285036596717,0.960460018751725,0.960634150382595,0.960807436182432,0.960979880814507,0.961151488912474,0.961322265080584,0.961492213893903,0.961661339898516,0.961829647611747,0.961997141522358,0.962163826090764,0.962329705749233,0.962494784902090,0.962659067925920,0.962822559169769,0.962985262955340,0.963147183577191,0.963308325302933,0.963468692373418,0.963628289002937,0.963787119379405,0.963945187664557,0.964102497994129,0.964259054478047,0.964414861200612,0.964569922220681,0.964724241571851,0.964877823262637,0.965030671276653,0.965182789572787,0.965334182085377,0.965484852724386,0.965634805375577,0.965784043900681,0.965932572137569,0.966080393900422,0.966227512979896,0.966373933143291,0.966519658134713,0.966664691675240,0.966809037463084,0.966952699173750,0.967095680460197,0.967237984953000,0.967379616260498,0.967520577968961,0.967660873642736,0.967800506824406,0.967939481034939,0.968077799773840,0.968215466519302,0.968352484728355,0.968488857837010,0.968624589260409,0.968759682392970,0.968894140608528,0.969027967260483,0.969161165681936,0.969293739185835,0.969425691065112,0.969557024592820,0.969687743022276,0.969817849587190,0.969947347501806,0.970076239961035,0.970204530140587,0.970332221197102,0.970459316268287,0.970585818473037,0.970711730911575,0.970837056665570,0.970961798798270,0.971085960354628,0.971209544361425,0.971332553827393,0.971454991743346,0.971576861082290,0.971698164799557,0.971818905832916,0.971939087102697,0.972058711511910,0.972177781946360,0.972296301274765,0.972414272348874,0.972531698003577,0.972648581057026,0.972764924310741,0.972880730549728,0.972996002542588,0.973110743041627,0.973224954782968,0.973338640486660,0.973451802856782,0.973564444581555,0.973676568333449,0.973788176769283,0.973899272530336,0.974009858242448,0.974119936516125,0.974229509946639,0.974338581114133,0.974447152583720,0.974555226905582,0.974662806615074,0.974769894232819,0.974876492264805,0.974982603202487,0.975088229522879,0.975193373688653,0.975298038148231,0.975402225335882,0.975505937671815,0.975609177562271,0.975711947399617,0.975814249562435,0.975916086415616,0.976017460310448,0.976118373584707,0.976218828562744,0.976318827555575,0.976418372860967,0.976517466763529,0.976616111534792,0.976714309433298,0.976812062704687,0.976909373581777,0.977006244284652,0.977102677020741,0.977198673984903,0.977294237359509,0.977389369314524,0.977484072007585,0.977578347584082,0.977672198177240,0.977765625908194,0.977858632886072,0.977951221208068,0.978043392959523,0.978135150213998,0.978226495033355,0.978317429467828,0.978407955556099,0.978498075325375,0.978587790791458,0.978677103958823,0.978766016820685,0.978854531359077,0.978942649544919,0.979030373338087,0.979117704687488,0.979204645531130,0.979291197796188,0.979377363399073,0.979463144245509,0.979548542230591,0.979633559238856,0.979718197144355,0.979802457810712,0.979886343091196,0.979969854828785,0.980052994856231,0.980135764996123,0.980218167060957,0.980300202853193,0.980381874165323,0.980463182779933,0.980544130469765,0.980624718997779,0.980704950117214,0.980784825571653,0.980864347095078,0.980943516411935,0.981022335237191,0.981100805276397,0.981178928225740,0.981256705772112,0.981334139593159,0.981411231357343,0.981487982723999,0.981564395343393,0.981640470856775,0.981716210896438,0.981791617085776,0.981866691039334,0.981941434362866,0.982015848653390,0.982089935499241,0.982163696480127,0.982237133167180,0.982310247123007,0.982383039901752,0.982455513049136,0.982527668102518,0.982599506590944,0.982671030035196,0.982742239947848,0.982813137833309,0.982883725187881,0.982954003499805,0.983023974249309,0.983093638908661,0.983162998942216,0.983232055806461,0.983300810950072,0.983369265813951,0.983437421831281,0.983505280427573,0.983572843020706,0.983640111020982,0.983707085831166,0.983773768846536,0.983840161454926,0.983906265036770,0.983972080965153,0.984037610605846,0.984102855317361,0.984167816450986,0.984232495350835,0.984296893353885,0.984361011790027,0.984424851982101,0.984488415245946,0.984551702890434,0.984614716217520,0.984677456522277,0.984739925092941,0.984802123210953,0.984864052150994,0.984925713181035,0.984987107562366,0.985048236549646,0.985109101390936,0.985169703327743,0.985230043595053,0.985290123421378,0.985349944028789,0.985409506632955
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   116
};
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   117
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   118
double MI_map_64qam_axis[MI_MAP_64QAM_SIZE] = {
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   119
  6.30000000000000,6.51000000000000,6.72000000000000,6.93000000000000,7.14000000000000,7.35000000000000,7.56000000000000,7.77000000000000,7.98000000000000,8.19000000000000,8.40000000000000,8.61000000000000,8.82000000000000,9.03000000000000,9.24000000000000,9.45000000000000,9.66000000000000,9.87000000000000,10.0800000000000,10.2900000000000,10.5000000000000,10.7100000000000,10.9200000000000,11.1300000000000,11.3400000000000,11.5500000000000,11.7600000000000,11.9700000000000,12.1800000000000,12.3900000000000,12.6000000000000,12.8100000000000,13.0200000000000,13.2300000000000,13.4400000000000,13.6500000000000,13.8600000000000,14.0700000000000,14.2800000000000,14.4900000000000,14.7000000000000,14.9100000000000,15.1200000000000,15.3300000000000,15.5400000000000,15.7500000000000,15.9600000000000,16.1700000000000,16.3800000000000,16.5900000000000,16.8000000000000,17.0100000000000,17.2200000000000,17.4300000000000,17.6400000000000,17.8500000000000,18.0600000000000,18.2700000000000,18.4800000000000,18.6900000000000,18.9000000000000,19.1100000000000,19.3200000000000,19.5300000000000,19.7400000000000,19.9500000000000,20.1600000000000,20.3700000000000,20.5800000000000,20.7900000000000,21,21.2100000000000,21.4200000000000,21.6300000000000,21.8400000000000,22.0500000000000,22.2600000000000,22.4700000000000,22.6800000000000,22.8900000000000,23.1000000000000,23.3100000000000,23.5200000000000,23.7300000000000,23.9400000000000,24.1500000000000,24.3600000000000,24.5700000000000,24.7800000000000,24.9900000000000,25.2000000000000,25.4100000000000,25.6200000000000,25.8300000000000,26.0400000000000,26.2500000000000,26.4600000000000,26.6700000000000,26.8800000000000,27.0900000000000,27.3000000000000,27.5100000000000,27.7200000000000,27.9300000000000,28.1400000000000,28.3500000000000,28.5600000000000,28.7700000000000,28.9800000000000,29.1900000000000,29.4000000000000,29.6100000000000,29.8200000000000,30.0300000000000,30.2400000000000,30.4500000000000,30.6600000000000,30.8700000000000,31.0800000000000,31.2900000000000,31.5000000000000,31.7100000000000,31.9200000000000,32.1300000000000,32.3400000000000,32.5500000000000,32.7600000000000,32.9700000000000,33.1800000000000,33.3900000000000,33.6000000000000,33.8100000000000,34.0200000000000,34.2300000000000,34.4400000000000,34.6500000000000,34.8600000000000,35.0700000000000,35.2800000000000,35.4900000000000,35.7000000000000,35.9100000000000,36.1200000000000,36.3300000000000,36.5400000000000,36.7500000000000,36.9600000000000,37.1700000000000,37.3800000000000,37.5900000000000,37.8000000000000,38.0100000000000,38.2200000000000,38.4300000000000,38.6400000000000,38.8500000000000,39.0600000000000,39.2700000000000,39.4800000000000,39.6900000000000,39.9000000000000,40.1100000000000,40.3200000000000,40.5300000000000,40.7400000000000,40.9500000000000,41.1600000000000,41.3700000000000,41.5800000000000,41.7900000000000,42.0000000000000,42.2100000000000,42.4200000000000,42.6300000000000,42.8400000000000,43.0500000000000,43.2600000000000,43.4700000000000,43.6800000000000,43.8900000000000,44.1000000000000,44.3100000000000,44.5200000000000,44.7300000000000,44.9400000000000,45.1500000000000,45.3600000000000,45.5700000000000,45.7800000000000,45.9900000000000,46.2000000000000,46.4100000000000,46.6200000000000,46.8300000000000,47.0400000000000,47.2500000000000,47.4600000000000,47.6700000000000,47.8800000000000,48.0900000000000,48.3000000000000,48.5100000000000,48.7200000000000,48.9300000000000,49.1400000000000,49.3500000000000,49.5600000000000,49.7700000000000,49.9800000000000,50.1900000000000,50.4000000000000,50.6100000000000,50.8200000000000,51.0300000000000,51.2400000000000,51.4500000000000,51.6600000000000,51.8700000000000,52.0800000000000,52.2900000000000,52.5000000000000,52.7100000000000,52.9200000000000,53.1300000000000,53.3400000000000,53.5500000000000,53.7600000000000,53.9700000000000,54.1800000000000,54.3900000000000,54.6000000000000,54.8100000000000,55.0200000000000,55.2300000000000,55.4400000000000,55.6500000000000,55.8600000000000,56.0700000000000,56.2800000000000,56.4900000000000,56.7000000000000,56.9100000000000,57.1200000000000,57.3300000000000,57.5400000000000,57.7500000000000,57.9600000000000,58.1700000000000,58.3800000000000,58.5900000000000,58.8000000000000,59.0100000000000,59.2200000000000,59.4300000000000,59.6400000000000,59.8500000000000,60.0600000000000,60.2700000000000,60.4800000000000,60.6900000000000,60.9000000000000,61.1100000000000,61.3200000000000,61.5300000000000,61.7400000000000,61.9500000000000,62.1600000000000,62.3700000000000,62.5800000000000,62.7900000000000,63.0000000000000,63.2100000000000,63.4200000000000,63.6300000000000,63.8400000000000,64.0500000000000,64.2600000000000,64.4700000000000,64.6800000000000,64.8900000000000,65.1000000000000,65.3100000000000,65.5200000000000,65.7300000000000,65.9400000000000,66.1500000000000,66.3600000000000,66.5700000000000,66.7800000000000,66.9900000000000,67.2000000000000,67.4100000000000,67.6200000000000,67.8300000000000,68.0400000000000,68.2500000000000,68.4600000000000,68.6700000000000,68.8800000000000,69.0900000000000,69.3000000000000,69.5100000000000,69.7200000000000,69.9300000000000,70.1400000000000,70.3500000000000,70.5600000000000,70.7700000000000,70.9800000000000,71.1900000000000,71.4000000000000,71.6100000000000,71.8200000000000,72.0300000000000,72.2400000000000,72.4500000000000,72.6600000000000,72.8700000000000,73.0800000000000,73.2900000000000,73.5000000000000,73.7100000000000,73.9200000000000,74.1300000000000,74.3400000000000,74.5500000000000,74.7600000000000,74.9700000000000,75.1800000000000,75.3900000000000,75.6000000000000,75.8100000000000,76.0200000000000,76.2300000000000,76.4400000000000,76.6500000000000,76.8600000000000,77.0700000000000,77.2800000000000,77.4900000000000,77.7000000000000,77.9100000000000,78.1200000000000,78.3300000000000,78.5400000000000,78.7500000000000,78.9600000000000,79.1700000000000,79.3800000000000,79.5900000000000,79.8000000000000,80.0100000000000,80.2200000000000,80.4300000000000,80.6400000000000,80.8500000000000,81.0600000000000,81.2700000000000,81.4800000000000,81.6900000000000,81.9000000000000,82.1100000000000,82.3200000000000,82.5300000000000,82.7400000000000,82.9500000000000,83.1600000000000,83.3700000000000,83.5800000000000,83.7900000000000,84,84.2100000000000,84.4200000000000,84.6300000000000,84.8400000000000,85.0500000000000,85.2600000000000,85.4700000000000,85.6800000000000,85.8900000000000,86.1000000000000,86.3100000000000,86.5200000000000,86.7300000000000,86.9400000000000,87.1500000000000,87.3600000000000,87.5700000000000,87.7800000000000,87.9900000000000,88.2000000000000,88.4100000000000,88.6200000000000,88.8300000000000,89.0400000000000,89.2500000000000,89.4600000000000,89.6700000000000,89.8800000000000,90.0900000000000,90.3000000000000,90.5100000000000,90.7200000000000,90.9300000000000,91.1400000000000,91.3500000000000,91.5600000000000,91.7700000000000,91.9800000000000,92.1900000000000,92.4000000000000,92.6100000000000,92.8200000000000,93.0300000000000,93.2400000000000,93.4500000000000,93.6600000000000,93.8700000000000,94.0800000000000,94.2900000000000,94.5000000000000,94.7100000000000,94.9200000000000,95.1300000000000,95.3400000000000,95.5500000000000,95.7600000000000,95.9700000000000,96.1800000000000,96.3900000000000,96.6000000000000,96.8100000000000,97.0200000000000,97.2300000000000,97.4400000000000,97.6500000000000,97.8600000000000,98.0700000000000,98.2800000000000,98.4900000000000,98.7000000000000,98.9100000000000,99.1200000000000,99.3300000000000,99.5400000000000,99.7500000000000,99.9600000000000,100.170000000000,100.380000000000,100.590000000000,100.800000000000,101.010000000000,101.220000000000,101.430000000000,101.640000000000,101.850000000000,102.060000000000,102.270000000000,102.480000000000,102.690000000000,102.900000000000,103.110000000000,103.320000000000,103.530000000000,103.740000000000,103.950000000000,104.160000000000,104.370000000000,104.580000000000,104.790000000000,105,105.210000000000,105.420000000000,105.630000000000,105.840000000000,106.050000000000,106.260000000000,106.470000000000,106.680000000000,106.890000000000,107.100000000000,107.310000000000,107.520000000000,107.730000000000,107.940000000000,108.150000000000,108.360000000000,108.570000000000,108.780000000000,108.990000000000,109.200000000000,109.410000000000,109.620000000000,109.830000000000,110.040000000000,110.250000000000,110.460000000000,110.670000000000,110.880000000000,111.090000000000,111.300000000000,111.510000000000,111.720000000000,111.930000000000,112.140000000000,112.350000000000,112.560000000000,112.770000000000,112.980000000000,113.190000000000,113.400000000000,113.610000000000,113.820000000000,114.030000000000,114.240000000000,114.450000000000,114.660000000000,114.870000000000,115.080000000000,115.290000000000,115.500000000000,115.710000000000,115.920000000000,116.130000000000,116.340000000000,116.550000000000,116.760000000000,116.970000000000,117.180000000000,117.390000000000,117.600000000000,117.810000000000,118.020000000000,118.230000000000,118.440000000000,118.650000000000,118.860000000000,119.070000000000,119.280000000000,119.490000000000,119.700000000000,119.910000000000,120.120000000000,120.330000000000,120.540000000000,120.750000000000,120.960000000000,121.170000000000,121.380000000000,121.590000000000,121.800000000000,122.010000000000,122.220000000000,122.430000000000,122.640000000000,122.850000000000,123.060000000000,123.270000000000,123.480000000000,123.690000000000,123.900000000000,124.110000000000,124.320000000000,124.530000000000,124.740000000000,124.950000000000,125.160000000000,125.370000000000,125.580000000000,125.790000000000,126,126.210000000000,126.420000000000,126.630000000000,126.840000000000,127.050000000000,127.260000000000,127.470000000000,127.680000000000,127.890000000000,128.100000000000,128.310000000000,128.520000000000,128.730000000000,128.940000000000,129.150000000000,129.360000000000,129.570000000000,129.780000000000,129.990000000000,130.200000000000,130.410000000000,130.620000000000,130.830000000000,131.040000000000,131.250000000000,131.460000000000,131.670000000000,131.880000000000,132.090000000000,132.300000000000,132.510000000000,132.720000000000,132.930000000000,133.140000000000,133.350000000000,133.560000000000,133.770000000000,133.980000000000,134.190000000000,134.400000000000,134.610000000000,134.820000000000,135.030000000000,135.240000000000,135.450000000000,135.660000000000,135.870000000000,136.080000000000,136.290000000000,136.500000000000,136.710000000000,136.920000000000,137.130000000000,137.340000000000,137.550000000000,137.760000000000,137.970000000000,138.180000000000,138.390000000000,138.600000000000,138.810000000000,139.020000000000,139.230000000000,139.440000000000,139.650000000000,139.860000000000,140.070000000000,140.280000000000,140.490000000000,140.700000000000,140.910000000000,141.120000000000,141.330000000000,141.540000000000,141.750000000000,141.960000000000,142.170000000000,142.380000000000,142.590000000000,142.800000000000,143.010000000000,143.220000000000,143.430000000000,143.640000000000,143.850000000000,144.060000000000,144.270000000000,144.480000000000,144.690000000000,144.900000000000,145.110000000000,145.320000000000,145.530000000000,145.740000000000,145.950000000000,146.160000000000,146.370000000000,146.580000000000,146.790000000000,147,147.210000000000,147.420000000000,147.630000000000,147.840000000000,148.050000000000,148.260000000000,148.470000000000,148.680000000000,148.890000000000,149.100000000000,149.310000000000,149.520000000000,149.730000000000,149.940000000000,150.150000000000,150.360000000000,150.570000000000,150.780000000000,150.990000000000,151.200000000000,151.410000000000,151.620000000000,151.830000000000,152.040000000000,152.250000000000,152.460000000000,152.670000000000,152.880000000000,153.090000000000,153.300000000000,153.510000000000,153.720000000000,153.930000000000,154.140000000000,154.350000000000,154.560000000000,154.770000000000,154.980000000000,155.190000000000,155.400000000000,155.610000000000,155.820000000000,156.030000000000,156.240000000000,156.450000000000,156.660000000000,156.870000000000,157.080000000000,157.290000000000,157.500000000000,157.710000000000,157.920000000000,158.130000000000,158.340000000000
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   120
};
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   121
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   122
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   123
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   124
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   125
double bEcrTable [9][29] = {
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   126
  // CB of 40 bits
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   127
  {
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   128
    0.1777, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   129
    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   130
    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   131
    -1.000, -1.000
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   132
  },  
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   133
  // CB of 104 bits
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   134
  {
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   135
    0.1423, 0.1753, 0.1882, 0.2499, -1.000, -1.000, -1.000, -1.000, -1.000,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   136
    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   137
    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   138
    -1.000, -1.000    
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   139
  },
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   140
  // CB of 160
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   141
  {
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   142
    0.1354, 0.1655, 0.1812, 0.2351, 0.2873, 0.3462, -1.000, -1.000, -1.000,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   143
    -1.0000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, 
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   144
    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   145
    -1.000, -1.000        
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   146
  },
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   147
  // CB of 256
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   148
  {
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   149
    0.1304, 0.1584, 0.1735, 0.2265, 0.2782, 0.3340, 0.3927, 0.4785, 0.5566,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   150
    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, 
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   151
    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   152
    -1.000, -1.000        
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   153
  },
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   154
  // CB of 512
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   155
  {
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   156
    0.1257, 0.1528, 0.1667, 0.2188, 0.2680, 0.3229, 0.3818, 0.4607, 0.5373,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   157
    0.6081, 0.7451, 0.4049, 0.4472, 0.4975, -1.000, -1.000, -1.000, -1.000,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   158
    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   159
    -1.000, -1.000        
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   160
  },
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   161
  // CB of 1024
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   162
  {
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   163
    0.1224, 0.1497, 0.1638, 0.2139, 0.2636, 0.3195, 0.3768, 0.4520, 0.5269,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   164
    0.5963, 0.7412, 0.3979, 0.4399, 0.4894, 0.6422, 0.6034, 0.6619, 0.7538,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   165
    0.7743, 0.5627, 0.6089, 0.6577, 0.7049, 0.7508, -1.000, -1.000, -1.000,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   166
    -1.000, -1.000            
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   167
  },
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   168
  // CB of 2560
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   169
  {
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   170
    0.1211, 0.1480, 0.1615, 0.2119, 0.2611, 0.3157, 0.3735, 0.4458, 0.5205,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   171
    0.5902, 0.7376, 0.3939, 0.4351, 0.4851, 0.6365, 0.5976, 0.6554, 0.7442, 
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   172
    0.7701, 0.5619, 0.6056, 0.6521, 0.6982, 0.7441, 0.7874, 0.8315, 0.8735,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   173
    0.9089, 0.9369            
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   174
  },
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   175
  // CB of 4032
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   176
  {
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   177
    0.1208, 0.1477, 0.1612, 0.2112, 0.2606, 0.3153, 0.3728, 0.4441, 0.5185,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   178
    0.5882, 0.7349, 0.3921, 0.4338, 0.4871, 0.6535, 0.5940, 0.6527, 0.7430, 
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   179
    0.7699, 0.5591, 0.6027, 0.6512, 0.6981, 0.7437, 0.7873, 0.8301, 0.8702,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   180
    0.9082, 0.9339            
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   181
  },
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   182
  // CB of 6144
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   183
  {
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   184
    0.1207, 0.1474, 0.1612, 0.2111, 0.2605, 0.3153, 0.3726, 0.4439, 0.5193,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   185
    0.5882, 0.7369, 0.3921, 0.4339, 0.4833, 0.6339, 0.5952, 0.6528, 0.7420, 
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   186
    0.7664, 0.5600, 0.6027, 0.6494, 0.6948, 0.7407, 0.7842, 0.8284, 0.8692,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   187
    0.9058, 0.9325            
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   188
  },
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   189
};
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   190
  
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   191
  
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   192
double cEcrTable [9][29] = {
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   193
  // CB of 40 bits
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   194
  {
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   195
    0.0342, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   196
    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   197
    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   198
    -1.000, -1.000            
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   199
  },
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   200
  // CB of 104 bits
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   201
  {
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   202
    0.0198, 0.0239, 0.0248, 0.0320, -1.000, -1.000, -1.000, -1.000, -1.000,
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   203
    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   204
    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   205
    -1.000, -1.000            
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   206
  },
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   207
  // CB of 160 bits
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   208
  {
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   209
    0.0157, 0.0190, 0.0204, 0.0252, 0.0310, 0.0348, -1.0000, -1.000, -1.000,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   210
    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, 
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   211
    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   212
    -1.000, -1.000            
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   213
  },
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   214
  // CB of 256 bits
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   215
  {
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   216
    0.0123, 0.0149, 0.0163, 0.0212, 0.0252, 0.0298, 0.0304, 0.0341, 0.0382,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   217
    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, 
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   218
    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   219
    -1.000, -1.000            
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   220
  },
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   221
  // CB of 512 bits
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   222
  {
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   223
    0.0085, 0.0106, 0.0109, 0.0140, 0.0178, 0.0217, 0.0219, 0.0249, 0.0270, 
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   224
    0.0292, 0.0293, 0.0206, 0.0220, 0.0235, 0.0257, -1.000, -1.000, -1.000,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   225
    -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000, -1.000,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   226
    -1.000, -1.000            
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   227
  },
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   228
  // CB of 1024 bits
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   229
  {
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   230
    0.0061, 0.0074, 0.0078, 0.0102, 0.0121, 0.0138, 0.0163, 0.0178, 0.0207,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   231
    0.0198, 0.0203, 0.0137, 0.0154, 0.0164, 0.0183, 0.0188, 0.0188, 0.0220,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   232
    0.0215, 0.0157, 0.0169, 0.0185, 0.0189, 0.0200, -1.000, -1.000, -1.000,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   233
    -1.000, -1.000            
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   234
  },
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   235
  // CB of 2560 bits
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   236
  {
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   237
    0.0040, 0.0047, 0.0050, 0.0063, 0.0079, 0.0091, 0.0101, 0.0117, 0.0123,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   238
    0.0129, 0.0123, 0.0091, 0.0095, 0.0102, 0.0116, 0.0114, 0.0119, 0.0116,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   239
    0.0123, 0.0096, 0.0104, 0.0109, 0.0108, 0.0118, 0.0122, 0.0117, 0.0110,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   240
    0.0097, 0.0085            
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   241
  },
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   242
  // CB of 4032 bits
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   243
  {
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   244
    0.0032, 0.0038, 0.0039, 0.0051, 0.0063, 0.0072, 0.0079, 0.0084, 0.0100,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   245
    0.0106, 0.0106, 0.0074, 0.0078, 0.0090, 0.0095, 0.0089, 0.0092, 0.0101,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   246
    0.0096, 0.0080, 0.0081, 0.0090, 0.0091, 0.0095, 0.0096, 0.0094, 0.0086,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   247
    0.0078, 0.0071            
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   248
  },
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   249
  // CB of 6144 bits
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   250
  {
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   251
    0.0025, 0.0032, 0.0032, 0.0042, 0.0054, 0.0059, 0.0064, 0.0073, 0.0081,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   252
    0.0076, 0.0083, 0.0058, 0.0064, 0.0070, 0.0077, 0.0074, 0.0080, 0.0080,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   253
    0.0080, 0.0061, 0.0066, 0.0069, 0.0080, 0.0081, 0.0080, 0.0077, 0.0068,
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   254
    0.0066, 0.0058            
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   255
  }
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   256
    
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   257
};
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   258
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   259
8595
5d193f3e4195 minor implementation refinements for LteMiErrorModel
Nicola Baldo <nbaldo@cttc.es>
parents: 8593
diff changeset
   260
double 
8646
4b341d8f2f61 Add new UE CQI Measurement and AMC module based on LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8595
diff changeset
   261
LteMiErrorModel::Mib (const SpectrumValue& sinr, const std::vector<int>& map, uint8_t mcs)
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   262
{
8595
5d193f3e4195 minor implementation refinements for LteMiErrorModel
Nicola Baldo <nbaldo@cttc.es>
parents: 8593
diff changeset
   263
  NS_LOG_FUNCTION (sinr << &map << (uint32_t) mcs);
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   264
  
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   265
  double MI;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   266
  double MIsum = 0.0;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   267
  
8760
8ccb0c2badc1 portable types for loop variables
Tom Henderson <tomh@tomh.org>
parents: 8662
diff changeset
   268
  for (uint32_t i = 0; i < map.size (); i++)
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   269
    {
8646
4b341d8f2f61 Add new UE CQI Measurement and AMC module based on LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8595
diff changeset
   270
      SpectrumValue sinrCopy = sinr;
4b341d8f2f61 Add new UE CQI Measurement and AMC module based on LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8595
diff changeset
   271
      double sinrLin = sinrCopy[map.at (i)];
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   272
      if (mcs <= 10) // QPSK
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   273
        {
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   274
          int tr = 0;
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   275
          while ((tr<MI_MAP_QPSK_SIZE)&&(MI_map_qpsk_axis[tr] < sinrLin))
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   276
            {
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   277
              tr++;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   278
            }
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   279
          if (sinrLin > MI_map_qpsk_axis[MI_MAP_QPSK_SIZE-1])
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   280
            {
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   281
              MI = 1;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   282
            }
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   283
          else 
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   284
            {
8593
604d49e2c809 Add lack assert test on vectors in LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8576
diff changeset
   285
              NS_ASSERT_MSG (tr<MI_MAP_QPSK_SIZE, "MI map out of data");
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   286
              MI = MI_map_qpsk[tr];
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   287
            }
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   288
        }
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   289
      else
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   290
        {
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   291
          if (mcs > 10 && mcs < 20 )	// 16-QAM
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   292
            {
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   293
              int tr = 0;
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   294
              while ((tr<MI_MAP_16QAM_SIZE)&&(MI_map_16qam_axis[tr] < sinrLin))
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   295
                {
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   296
                  tr++;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   297
                }
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   298
              if (sinrLin > MI_map_16qam_axis[MI_MAP_16QAM_SIZE-1])
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   299
                {
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   300
                  MI = 1;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   301
                }
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   302
              else 
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   303
                {
8593
604d49e2c809 Add lack assert test on vectors in LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8576
diff changeset
   304
                  NS_ASSERT_MSG (tr<MI_MAP_16QAM_SIZE, "MI map out of data");
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   305
                  MI = MI_map_16qam[tr];
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   306
                }
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   307
            }
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   308
          else // 64-QAM
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   309
            {
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   310
              int tr = 0;
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   311
              while ((tr<MI_MAP_64QAM_SIZE)&&(MI_map_64qam_axis[tr] < sinrLin))
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   312
                {
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   313
                  tr++;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   314
                }
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   315
              if (sinrLin > MI_map_64qam_axis[MI_MAP_64QAM_SIZE-1])
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   316
                {
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   317
                  MI = 1;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   318
                }
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   319
              else
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   320
                {
8593
604d49e2c809 Add lack assert test on vectors in LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8576
diff changeset
   321
                  NS_ASSERT_MSG (tr<MI_MAP_64QAM_SIZE, "MI map out of data");
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   322
                  MI = MI_map_64qam[tr];
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   323
                }
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   324
            }
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   325
        }
8802
7c181f5368bc fix logging code for optimized builds
Tom Henderson <tomh@tomh.org>
parents: 8796
diff changeset
   326
      NS_LOG_LOGIC (" RB " << map.at (i) << "Minimum SNR = " << 10*log10 (sinrLin) << " V, MCS = " << (uint16_t)mcs << ", MI = " << MI);
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   327
      MIsum += MI;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   328
    }
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   329
  MI = MIsum / map.size ();
8595
5d193f3e4195 minor implementation refinements for LteMiErrorModel
Nicola Baldo <nbaldo@cttc.es>
parents: 8593
diff changeset
   330
  NS_LOG_LOGIC (" MI = " << MI);
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   331
  return MI;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   332
}
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   333
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   334
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   335
double 
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   336
LteMiErrorModel::MappingMiBler (double mib, uint8_t mcs, uint16_t cbSize)
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   337
{
8595
5d193f3e4195 minor implementation refinements for LteMiErrorModel
Nicola Baldo <nbaldo@cttc.es>
parents: 8593
diff changeset
   338
  NS_LOG_FUNCTION (mib << (uint32_t) mcs << (uint32_t) cbSize);
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   339
  double b = 0;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   340
  double c = 0;
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   341
  NS_ASSERT_MSG (mcs < 29, "MCS out of range [0..28]");
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   342
  int cbIndex = 1;
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   343
  while ((cbIndex < 9)&&(cbMiSizeTable[cbIndex]<= cbSize))
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   344
    {
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   345
      cbIndex++;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   346
    }
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   347
  cbIndex--;
8802
7c181f5368bc fix logging code for optimized builds
Tom Henderson <tomh@tomh.org>
parents: 8796
diff changeset
   348
  NS_LOG_LOGIC (" MCS " << (uint16_t)mcs << " TBS " << TbsIndex[mcs] << " CB size " << cbSize << " CB size curve " << cbMiSizeTable[cbIndex]);
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   349
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   350
  b = bEcrTable[cbIndex][mcs];
8533
a22d076f13de Remove CB size quantization error in evaluating the error distribution
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8524
diff changeset
   351
  if (b<0.0)
a22d076f13de Remove CB size quantization error in evaluating the error distribution
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8524
diff changeset
   352
    {
a22d076f13de Remove CB size quantization error in evaluating the error distribution
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8524
diff changeset
   353
      //take the lowest CB size including this CB for removing CB size
a22d076f13de Remove CB size quantization error in evaluating the error distribution
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8524
diff changeset
   354
      //quatization errors
a22d076f13de Remove CB size quantization error in evaluating the error distribution
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8524
diff changeset
   355
      int i = cbIndex;
8593
604d49e2c809 Add lack assert test on vectors in LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8576
diff changeset
   356
      while ((i<9)&&(b<0))
8533
a22d076f13de Remove CB size quantization error in evaluating the error distribution
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8524
diff changeset
   357
        {
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   358
          b = bEcrTable[i++][mcs];
8533
a22d076f13de Remove CB size quantization error in evaluating the error distribution
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8524
diff changeset
   359
        }
a22d076f13de Remove CB size quantization error in evaluating the error distribution
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8524
diff changeset
   360
    }
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   361
  c = cEcrTable[cbIndex][mcs];
8533
a22d076f13de Remove CB size quantization error in evaluating the error distribution
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8524
diff changeset
   362
  if (c<0.0)
a22d076f13de Remove CB size quantization error in evaluating the error distribution
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8524
diff changeset
   363
    {
a22d076f13de Remove CB size quantization error in evaluating the error distribution
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8524
diff changeset
   364
      //take the lowest CB size including this CB for removing CB size
a22d076f13de Remove CB size quantization error in evaluating the error distribution
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8524
diff changeset
   365
      //quatization errors
a22d076f13de Remove CB size quantization error in evaluating the error distribution
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8524
diff changeset
   366
      int i = cbIndex;
8593
604d49e2c809 Add lack assert test on vectors in LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8576
diff changeset
   367
      while ((i<9)&&(c<0))
8533
a22d076f13de Remove CB size quantization error in evaluating the error distribution
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8524
diff changeset
   368
        {
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   369
          c = cEcrTable[i++][mcs];
8533
a22d076f13de Remove CB size quantization error in evaluating the error distribution
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8524
diff changeset
   370
        }
a22d076f13de Remove CB size quantization error in evaluating the error distribution
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8524
diff changeset
   371
    }
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   372
  // see IEEE802.16m EMD formula 55 of section 4.3.2.1
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   373
  double bler = 0.5*( 1 - erf((mib-b)/(sqrt(2)*c)) );
8794
a68aeda2d85b Update PEM model with new BLER curves based on standard ECR
mmiozzo
parents: 8762
diff changeset
   374
  NS_LOG_LOGIC ("MIB: " << mib << " BLER:" << bler << " b:" << b << " c:" << c);
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   375
  return bler;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   376
}
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   377
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   378
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   379
double
8646
4b341d8f2f61 Add new UE CQI Measurement and AMC module based on LteMiErrorModel
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8595
diff changeset
   380
LteMiErrorModel::GetTbError (const SpectrumValue& sinr, const std::vector<int>& map, uint16_t size, uint8_t mcs)
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   381
{
8595
5d193f3e4195 minor implementation refinements for LteMiErrorModel
Nicola Baldo <nbaldo@cttc.es>
parents: 8593
diff changeset
   382
  NS_LOG_FUNCTION (sinr << &map << (uint32_t) size << (uint32_t) mcs);
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   383
  
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   384
  double MI = Mib(sinr, map, mcs);
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   385
  // estimate CB size (according to sec 5.1.2 of TS 36.212)
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   386
  uint16_t Z = 6144; // max size of a codeblock (including CRC)
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   387
  uint32_t B = size * 8;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   388
//   B = 1234;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   389
  uint32_t L = 0;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   390
  uint32_t C = 0; // no. of codeblocks
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   391
  uint32_t Cplus = 0; // no. of codeblocks with size K+
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   392
  uint32_t Kplus = 0; // no. of codeblocks with size K+
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   393
  uint32_t Cminus = 0; // no. of codeblocks with size K+
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   394
  uint32_t Kminus = 0; // no. of codeblocks with size K+
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   395
  uint32_t B1 = 0;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   396
  uint32_t deltaK = 0;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   397
  if (B <= Z)
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   398
    {
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   399
      // only one codeblock
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   400
      L = 0;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   401
      C = 1;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   402
      B1 = B;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   403
    }
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   404
  else
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   405
    {
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   406
      L = 24;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   407
      C = ceil ((double)B / ((double)(Z-L)));
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   408
      B1 = B + C * L;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   409
    }
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   410
  // first segmentation: K+ = minimum K in table such that C * K >= B1
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   411
//   uint i = 0;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   412
//   while (B1 > cbSizeTable[i] * C)
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   413
//     {
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   414
// //       NS_LOG_INFO (" K+ " << cbSizeTable[i] << " means " << cbSizeTable[i] * C);
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   415
//       i++;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   416
//     }
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   417
//   uint16_t KplusId = i;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   418
//   Kplus = cbSizeTable[i];
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   419
  
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   420
  // implement a modified binary search
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   421
  int min = 0;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   422
  int max = 187;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   423
  int mid = 0;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   424
  do
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   425
    {
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   426
      mid = (min+max) / 2;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   427
      if (B1 > cbSizeTable[mid]*C)
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   428
        {
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   429
          if (B1 < cbSizeTable[mid+1]*C)
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   430
            {
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   431
              break;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   432
            }
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   433
          else
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   434
            {
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   435
              min = mid + 1;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   436
            }
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   437
        }
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   438
      else
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   439
        {
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   440
          if (B1 > cbSizeTable[mid-1]*C)
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   441
            {
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   442
              break;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   443
            }
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   444
          else
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   445
            {
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   446
              max = mid - 1;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   447
            }
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   448
        }
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   449
  } while ((cbSizeTable[mid]*C != B1) && (min < max));
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   450
  // adjust binary search to the largest integer value of K containing B1
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   451
  if (B1 > cbSizeTable[mid]*C)
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   452
    {
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   453
      mid ++;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   454
    }
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   455
  
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   456
  uint16_t KplusId = mid;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   457
  Kplus = cbSizeTable[mid];
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   458
  
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   459
  
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   460
  if (C==1)
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   461
    {
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   462
      Cplus = 1;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   463
      Cminus = 0;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   464
      Kminus = 0;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   465
    }
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   466
  else
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   467
    {
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   468
      // second segmentation size: K- = maximum K in table such that K < K+
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   469
      Kminus = cbSizeTable[KplusId-1 > 0 ? KplusId-1 : 0];
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   470
      deltaK = Kplus - Kminus;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   471
      Cminus = floor ((((double) C * Kplus) - (double)B1) / (double)deltaK);
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   472
      Cplus = C - Cminus;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   473
    }
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   474
  NS_LOG_INFO ("--------------------LteMiErrorModel: TB size of " << B << " needs of " << B1 << " bits reparted in " << C << " CBs as "<< Cplus << " block(s) of " << Kplus << " and " << Cminus << " of " << Kminus);
8524
5a9df7c4e553 Update error model support for multiple CBs per TB
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8521
diff changeset
   475
  
5a9df7c4e553 Update error model support for multiple CBs per TB
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8521
diff changeset
   476
  double errorRate = 1.0;
5a9df7c4e553 Update error model support for multiple CBs per TB
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8521
diff changeset
   477
  if (C!=1)
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   478
    {
8796
c053291689b2 Modify LteMiErrorModel::GetTbError for working with pow() instead of successive multiplications
mmiozzo
parents: 8794
diff changeset
   479
      double cbler = MappingMiBler (MI, mcs, Kplus);
c053291689b2 Modify LteMiErrorModel::GetTbError for working with pow() instead of successive multiplications
mmiozzo
parents: 8794
diff changeset
   480
      errorRate *= pow (1.0 - cbler, Cplus);
c053291689b2 Modify LteMiErrorModel::GetTbError for working with pow() instead of successive multiplications
mmiozzo
parents: 8794
diff changeset
   481
      cbler = MappingMiBler (MI, mcs, Kminus);
c053291689b2 Modify LteMiErrorModel::GetTbError for working with pow() instead of successive multiplications
mmiozzo
parents: 8794
diff changeset
   482
      errorRate *= pow (1.0 - cbler, Cminus);
8524
5a9df7c4e553 Update error model support for multiple CBs per TB
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8521
diff changeset
   483
      errorRate = 1.0 - errorRate;
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   484
    }
8524
5a9df7c4e553 Update error model support for multiple CBs per TB
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8521
diff changeset
   485
  else
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   486
    {
8524
5a9df7c4e553 Update error model support for multiple CBs per TB
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8521
diff changeset
   487
      errorRate = MappingMiBler (MI, mcs, Kplus);
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   488
    }
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   489
  
8595
5d193f3e4195 minor implementation refinements for LteMiErrorModel
Nicola Baldo <nbaldo@cttc.es>
parents: 8593
diff changeset
   490
  NS_LOG_LOGIC (" Error rate " << errorRate);
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   491
  
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   492
  return errorRate;
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   493
}
9043
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   494
9351
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   495
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   496
TbStats_t
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   497
LteMiErrorModel::GetTbDecodificationStats (const SpectrumValue& sinr, const std::vector<int>& map, uint16_t size, uint8_t mcs, double mi)
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   498
{
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   499
  NS_LOG_FUNCTION (sinr << &map << (uint32_t) size << (uint32_t) mcs);
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   500
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   501
  double MI = Mib(sinr, map, mcs) + mi;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   502
  // estimate CB size (according to sec 5.1.2 of TS 36.212)
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   503
  uint16_t Z = 6144; // max size of a codeblock (including CRC)
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   504
  uint32_t B = size * 8;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   505
//   B = 1234;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   506
  uint32_t L = 0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   507
  uint32_t C = 0; // no. of codeblocks
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   508
  uint32_t Cplus = 0; // no. of codeblocks with size K+
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   509
  uint32_t Kplus = 0; // no. of codeblocks with size K+
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   510
  uint32_t Cminus = 0; // no. of codeblocks with size K+
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   511
  uint32_t Kminus = 0; // no. of codeblocks with size K+
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   512
  uint32_t B1 = 0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   513
  uint32_t deltaK = 0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   514
  if (B <= Z)
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   515
    {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   516
      // only one codeblock
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   517
      L = 0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   518
      C = 1;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   519
      B1 = B;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   520
    }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   521
  else
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   522
    {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   523
      L = 24;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   524
      C = ceil ((double)B / ((double)(Z-L)));
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   525
      B1 = B + C * L;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   526
    }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   527
  // first segmentation: K+ = minimum K in table such that C * K >= B1
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   528
//   uint i = 0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   529
//   while (B1 > cbSizeTable[i] * C)
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   530
//     {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   531
// //       NS_LOG_INFO (" K+ " << cbSizeTable[i] << " means " << cbSizeTable[i] * C);
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   532
//       i++;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   533
//     }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   534
//   uint16_t KplusId = i;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   535
//   Kplus = cbSizeTable[i];
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   536
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   537
  // implement a modified binary search
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   538
  int min = 0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   539
  int max = 187;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   540
  int mid = 0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   541
  do
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   542
    {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   543
      mid = (min+max) / 2;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   544
      if (B1 > cbSizeTable[mid]*C)
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   545
        {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   546
          if (B1 < cbSizeTable[mid+1]*C)
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   547
            {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   548
              break;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   549
            }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   550
          else
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   551
            {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   552
              min = mid + 1;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   553
            }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   554
        }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   555
      else
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   556
        {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   557
          if (B1 > cbSizeTable[mid-1]*C)
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   558
            {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   559
              break;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   560
            }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   561
          else
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   562
            {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   563
              max = mid - 1;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   564
            }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   565
        }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   566
  } while ((cbSizeTable[mid]*C != B1) && (min < max));
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   567
  // adjust binary search to the largest integer value of K containing B1
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   568
  if (B1 > cbSizeTable[mid]*C)
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   569
    {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   570
      mid ++;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   571
    }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   572
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   573
  uint16_t KplusId = mid;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   574
  Kplus = cbSizeTable[mid];
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   575
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   576
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   577
  if (C==1)
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   578
    {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   579
      Cplus = 1;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   580
      Cminus = 0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   581
      Kminus = 0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   582
    }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   583
  else
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   584
    {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   585
      // second segmentation size: K- = maximum K in table such that K < K+
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   586
      Kminus = cbSizeTable[KplusId-1 > 0 ? KplusId-1 : 0];
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   587
      deltaK = Kplus - Kminus;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   588
      Cminus = floor ((((double) C * Kplus) - (double)B1) / (double)deltaK);
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   589
      Cplus = C - Cminus;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   590
    }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   591
  NS_LOG_INFO ("--------------------LteMiErrorModel: TB size of " << B << " needs of " << B1 << " bits reparted in " << C << " CBs as "<< Cplus << " block(s) of " << Kplus << " and " << Cminus << " of " << Kminus);
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   592
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   593
  double errorRate = 1.0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   594
  if (C!=1)
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   595
    {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   596
      double cbler = MappingMiBler (MI, mcs, Kplus);
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   597
      errorRate *= pow (1.0 - cbler, Cplus);
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   598
      cbler = MappingMiBler (MI, mcs, Kminus);
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   599
      errorRate *= pow (1.0 - cbler, Cminus);
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   600
      errorRate = 1.0 - errorRate;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   601
    }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   602
  else
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   603
    {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   604
      errorRate = MappingMiBler (MI, mcs, Kplus);
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   605
    }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   606
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   607
  NS_LOG_LOGIC (" Error rate " << errorRate);
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   608
  TbStats_t ret;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   609
  ret.error = errorRate;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   610
  ret.mi = MI;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   611
  return ret;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   612
}
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   613
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   614
9043
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   615
double
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   616
LteMiErrorModel::GetPcfichPdcchError (const SpectrumValue& sinr)
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   617
{
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   618
  NS_LOG_FUNCTION (sinr);
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   619
  double MI;
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   620
  double MIsum = 0.0;
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   621
  SpectrumValue sinrCopy = sinr;
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   622
  Values::iterator sinrIt = sinrCopy.ValuesBegin ();
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   623
  uint16_t rb = 0;
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   624
  NS_ASSERT (sinrIt!=sinrCopy.ValuesEnd ());
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   625
  while (sinrIt!=sinrCopy.ValuesEnd ())
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   626
    {
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   627
      double sinrLin = *sinrIt;
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   628
      int tr = 0;
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   629
      while ((tr<MI_MAP_QPSK_SIZE)&&(MI_map_qpsk_axis[tr] < sinrLin))
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   630
        {
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   631
          tr++;
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   632
        }
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   633
      if (sinrLin > MI_map_qpsk_axis[MI_MAP_QPSK_SIZE-1])
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   634
        {
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   635
          MI = 1;
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   636
        }
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   637
      else 
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   638
        {
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   639
          NS_ASSERT_MSG (tr<MI_MAP_QPSK_SIZE, "MI map out of data");
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   640
          MI = MI_map_qpsk[tr];
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   641
        }
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   642
//       NS_LOG_DEBUG (" RB " << rb << " SINR " << 10*log10 (sinrLin) << " MI " << MI);
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   643
      MIsum += MI;
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   644
      sinrIt++;
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   645
      rb++;
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   646
    }
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   647
  MI = MIsum / rb;
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   648
  // return to the effective SINR value
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   649
  int j = 0;
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   650
  double esinr = 0.0;
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   651
  while ((j<MI_MAP_QPSK_SIZE)&&(MI_map_qpsk[j] < MI))
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   652
    {
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   653
      j++;
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   654
    }
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   655
  if (MI > MI_map_qpsk[MI_MAP_QPSK_SIZE-1])
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   656
    {
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   657
      esinr = MI_map_qpsk_axis[MI_MAP_QPSK_SIZE-1];
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   658
    }
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   659
  else 
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   660
    {
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   661
      NS_ASSERT_MSG (j<MI_MAP_QPSK_SIZE, "MI map out of data");
9044
e8595c3ac95b Add testcase for DL control channels (PCFICH+PDCCH) to lte-phy-error-model test suite
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9043
diff changeset
   662
      // take the closest value (when possible)  
e8595c3ac95b Add testcase for DL control channels (PCFICH+PDCCH) to lte-phy-error-model test suite
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9043
diff changeset
   663
      if (j>0)
e8595c3ac95b Add testcase for DL control channels (PCFICH+PDCCH) to lte-phy-error-model test suite
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9043
diff changeset
   664
        {
e8595c3ac95b Add testcase for DL control channels (PCFICH+PDCCH) to lte-phy-error-model test suite
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9043
diff changeset
   665
          if ((MI_map_qpsk[j]-MI)<(MI-MI_map_qpsk[j-1]))
e8595c3ac95b Add testcase for DL control channels (PCFICH+PDCCH) to lte-phy-error-model test suite
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9043
diff changeset
   666
            {
e8595c3ac95b Add testcase for DL control channels (PCFICH+PDCCH) to lte-phy-error-model test suite
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9043
diff changeset
   667
              esinr = MI_map_qpsk_axis[j];
e8595c3ac95b Add testcase for DL control channels (PCFICH+PDCCH) to lte-phy-error-model test suite
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9043
diff changeset
   668
            }
e8595c3ac95b Add testcase for DL control channels (PCFICH+PDCCH) to lte-phy-error-model test suite
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9043
diff changeset
   669
          else
e8595c3ac95b Add testcase for DL control channels (PCFICH+PDCCH) to lte-phy-error-model test suite
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9043
diff changeset
   670
            {
e8595c3ac95b Add testcase for DL control channels (PCFICH+PDCCH) to lte-phy-error-model test suite
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9043
diff changeset
   671
              esinr = MI_map_qpsk_axis[j-1];
e8595c3ac95b Add testcase for DL control channels (PCFICH+PDCCH) to lte-phy-error-model test suite
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9043
diff changeset
   672
            }
e8595c3ac95b Add testcase for DL control channels (PCFICH+PDCCH) to lte-phy-error-model test suite
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9043
diff changeset
   673
        }
e8595c3ac95b Add testcase for DL control channels (PCFICH+PDCCH) to lte-phy-error-model test suite
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9043
diff changeset
   674
      else
e8595c3ac95b Add testcase for DL control channels (PCFICH+PDCCH) to lte-phy-error-model test suite
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9043
diff changeset
   675
        {
e8595c3ac95b Add testcase for DL control channels (PCFICH+PDCCH) to lte-phy-error-model test suite
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9043
diff changeset
   676
          esinr = MI_map_qpsk_axis[0];
e8595c3ac95b Add testcase for DL control channels (PCFICH+PDCCH) to lte-phy-error-model test suite
Marco Miozzo <marco.miozzo@cttc.es>
parents: 9043
diff changeset
   677
        }
9043
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   678
    }
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   679
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   680
  double esirnDb = 10*log10 (esinr); 
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   681
//   NS_LOG_DEBUG ("Effective SINR " << esirnDb << " max " << 10*log10 (MI_map_qpsk [MI_MAP_QPSK_SIZE-1]));
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   682
  uint16_t i = 0;
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   683
  double errorRate = 0.0;
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   684
  while ((i<PDCCH_PCFICH_CURVE_SIZE)&&(PdcchPcfichBlerCurveXaxis[i] < esirnDb))
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   685
    {
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   686
      i++;
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   687
    }
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   688
  if (esirnDb > PdcchPcfichBlerCurveXaxis[PDCCH_PCFICH_CURVE_SIZE-1])
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   689
    {
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   690
      errorRate = 0.0;
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   691
    }
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   692
  else 
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   693
    {
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   694
      NS_ASSERT_MSG (i<PDCCH_PCFICH_CURVE_SIZE, "PDCCH-PCFICH map out of data");
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   695
      errorRate = PdcchPcfichBlerCurveYaxis[i];
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   696
    }  
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   697
  
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   698
  return (errorRate);
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   699
}
9130e2dbe601 Add PCFICH-PDCCD Error model based on 3GPP R4-081920
Marco Miozzo <marco.miozzo@cttc.es>
parents: 8796
diff changeset
   700
9351
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   701
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   702
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   703
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   704
TbStats_t
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   705
LteMiErrorModel::GetTbDecodificationStats (const SpectrumValue& sinr, const std::vector<int>& map, uint16_t size, uint8_t mcs, HarqProcessInfoList_t miHistory)
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   706
{
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   707
  NS_LOG_FUNCTION (sinr << &map << (uint32_t) size << (uint32_t) mcs);
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   708
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   709
  double tbMi = Mib(sinr, map, mcs);
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   710
  double MI = 0.0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   711
  double Reff = 0.0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   712
  if (miHistory.size ()>0)
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   713
    {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   714
      // evaluate R_eff and MI_eff
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   715
      uint16_t codeBitsSum = 0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   716
      double miSum = 0.0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   717
      for (uint16_t i = 0; i < miHistory.size (); i++)
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   718
        {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   719
          codeBitsSum += miHistory.at (i).m_codeBits;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   720
          miSum += (miHistory.at (i).m_mi*miHistory.at (i).m_codeBits);
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   721
        }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   722
      Reff = miHistory.at (0).m_infoBits / codeBitsSum; // information bits are the size of the first TB
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   723
      MI = miSum / (double)codeBitsSum;      
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   724
    }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   725
  else
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   726
    {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   727
      MI = tbMi;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   728
    }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   729
  NS_LOG_DEBUG (" MI " << MI << " Reff " << Reff);
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   730
  // estimate CB size (according to sec 5.1.2 of TS 36.212)
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   731
  uint16_t Z = 6144; // max size of a codeblock (including CRC)
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   732
  uint32_t B = size * 8;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   733
//   B = 1234;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   734
  uint32_t L = 0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   735
  uint32_t C = 0; // no. of codeblocks
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   736
  uint32_t Cplus = 0; // no. of codeblocks with size K+
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   737
  uint32_t Kplus = 0; // no. of codeblocks with size K+
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   738
  uint32_t Cminus = 0; // no. of codeblocks with size K+
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   739
  uint32_t Kminus = 0; // no. of codeblocks with size K+
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   740
  uint32_t B1 = 0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   741
  uint32_t deltaK = 0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   742
  if (B <= Z)
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   743
    {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   744
      // only one codeblock
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   745
      L = 0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   746
      C = 1;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   747
      B1 = B;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   748
    }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   749
  else
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   750
    {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   751
      L = 24;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   752
      C = ceil ((double)B / ((double)(Z-L)));
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   753
      B1 = B + C * L;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   754
    }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   755
  // first segmentation: K+ = minimum K in table such that C * K >= B1
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   756
//   uint i = 0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   757
//   while (B1 > cbSizeTable[i] * C)
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   758
//     {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   759
// //       NS_LOG_INFO (" K+ " << cbSizeTable[i] << " means " << cbSizeTable[i] * C);
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   760
//       i++;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   761
//     }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   762
//   uint16_t KplusId = i;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   763
//   Kplus = cbSizeTable[i];
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   764
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   765
  // implement a modified binary search
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   766
  int min = 0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   767
  int max = 187;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   768
  int mid = 0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   769
  do
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   770
    {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   771
      mid = (min+max) / 2;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   772
      if (B1 > cbSizeTable[mid]*C)
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   773
        {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   774
          if (B1 < cbSizeTable[mid+1]*C)
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   775
            {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   776
              break;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   777
            }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   778
          else
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   779
            {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   780
              min = mid + 1;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   781
            }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   782
        }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   783
      else
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   784
        {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   785
          if (B1 > cbSizeTable[mid-1]*C)
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   786
            {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   787
              break;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   788
            }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   789
          else
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   790
            {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   791
              max = mid - 1;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   792
            }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   793
        }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   794
  } while ((cbSizeTable[mid]*C != B1) && (min < max));
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   795
  // adjust binary search to the largest integer value of K containing B1
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   796
  if (B1 > cbSizeTable[mid]*C)
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   797
    {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   798
      mid ++;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   799
    }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   800
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   801
  uint16_t KplusId = mid;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   802
  Kplus = cbSizeTable[mid];
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   803
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   804
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   805
  if (C==1)
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   806
    {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   807
      Cplus = 1;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   808
      Cminus = 0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   809
      Kminus = 0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   810
    }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   811
  else
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   812
    {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   813
      // second segmentation size: K- = maximum K in table such that K < K+
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   814
      Kminus = cbSizeTable[KplusId-1 > 0 ? KplusId-1 : 0];
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   815
      deltaK = Kplus - Kminus;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   816
      Cminus = floor ((((double) C * Kplus) - (double)B1) / (double)deltaK);
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   817
      Cplus = C - Cminus;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   818
    }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   819
  NS_LOG_INFO ("--------------------LteMiErrorModel: TB size of " << B << " needs of " << B1 << " bits reparted in " << C << " CBs as "<< Cplus << " block(s) of " << Kplus << " and " << Cminus << " of " << Kminus);
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   820
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   821
  double errorRate = 1.0;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   822
  if (C!=1)
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   823
    {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   824
      double cbler = MappingMiBler (MI, mcs, Kplus);
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   825
      errorRate *= pow (1.0 - cbler, Cplus);
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   826
      cbler = MappingMiBler (MI, mcs, Kminus);
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   827
      errorRate *= pow (1.0 - cbler, Cminus);
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   828
      errorRate = 1.0 - errorRate;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   829
    }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   830
  else
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   831
    {
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   832
      errorRate = MappingMiBler (MI, mcs, Kplus);
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   833
    }
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   834
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   835
  NS_LOG_LOGIC (" Error rate " << errorRate);
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   836
  TbStats_t ret;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   837
  ret.error = errorRate;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   838
  ret.mi = tbMi;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   839
  return ret;
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   840
}
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   841
6e074e67a1ad HARQ first draft version: RR works, PF todo, LteMiErrorModel on-going
mmiozzo
parents: 9047
diff changeset
   842
8521
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   843
  
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   844
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   845
} // namespace ns3
05b373fc3061 Add LteMiErrorModel and update LteSpectrumPhy for managing the error model
Marco Miozzo <marco.miozzo@cttc.es>
parents:
diff changeset
   846